728x90
반응형
목차
1. 프리다(Frida)란?
2. 프리다의 주요 기능
3. 프리다 환경 구축
  - 녹스(Nox) 앱플레이어 설치
  - 아나콘다 파이썬 환경 구축
  - 프리다 설치 및 실행
4. 프리다 기능 살펴보기

  - 기본 명령어 활용(Frida CLI 이해)
  - 기본 명령어 활용(프로세스, 트레이스, 디바이스 제어)
  - 기본 명령어 활용(프로세스 중지)
5. 프리다 기본 문법
  - Java.perform(fn)

  - Java.use(className)
  - Java.choose(className, callbacks)
  - Java.enumerateLoadedClasses(callbacks)
  - setImmediate(fn)
  - Overloading
-
프리다 CLI 활용
자바스크립트 파일 사용
파이썬 바인딩 이해
프리다 챌린지로 연습해보기
프리다 실무 활용

5. 프리다 기본 문법

Java.perform(fn)

Java.use(className)

Java.enumerateLoadedClasses(callbacks)

Java.choose(className, callbacks)

setImmediate(fn)

Overloading

 

기본 뼈대 구조

Java.perform(fn)

  • 현재 스레드가 가상머신에 연결되어 있는지 확인하고 fn을 호출

- Java.perform이 실행이 되면 fn 내부로 입력한 코드가 지정한 앱애 접근하여 실행하게 됨

Java.perform(function() {
/*
	...
    do sth
    ...
*/
})

Java.use(className)

  • Java.use ()는 변수와 메소드에 액세스 할 수 있는 클래스 객체를 반환
  • 메소드 구현을 변경하려면 새로운 메소드로 덮어 써야 함
  • 인스턴스를 반환하는 것이 아닌 클래스 객체를 반환함

- className 클래스를 사용하겠다고 선언

- 인스턴스를 다루기 위해서는 Java.choose라는 API를 사용해야 함

  • 앱에서 사용하는 클래스와 연동되는 myClass를 정의
  • .implementation: 앱에서 정의된 메소드의 구현 내용을 재작성
Java.perform(function() {
	var myClass = Java.use(com.mypackage.name.class)
    
    myClass.myMethod.implementation = function(param) {
    	// do sth
    }
}

myClass 내 myMethod 메소드를 다룸, implementation를 하여 myMethod를 재작성하여 진단자 마음대로 해당 메소드를 재작성

위의 코드는 parameter가 하나인 경우, 인자값이 두 개 이상이라면 function(p1, p2)로 기재


Java.choose(className, callbacks)

  • Java.choose(className, callbacks)
  • 힙에서 인스턴스화 된 객체 찾기 가능
  • callbacks: onMatch, onComplete
  • onMatch: 실시간으로 인스턴스에 대해 호출
  • onComplete: function()의 모든 인스턴스가 열거될 때 호출
Java.perform(function() {
	Java.choose(com.mypackage.name.class, {
    	"onMatch": function(instance) {
        	console.log(instance.toString())
        },
        "onComplete": function() {}
    })
})

Java.perform: 가상머신 연결 확인

Java.choose: com.mypackage.name.class라는 클래스를 지정하고, 해당 클래스에 대한 인스턴스(instance) 객체로 받게 됨

onMatch는 Frida가 요청에 일치하는 것을 찾으면 하나 이상의 인수로 호출됨

console.log라는 함수를 통해 해당 인스턴스를 문자열 값(toString)으로 주게 됨 -> 찾은 인스턴스에 대한 값이 콘솔로 출력됨

모든 출력을 마치면(일치하는 것을 모두 찾으면) onComplete 사용 -> Java.choose 사용


Java.enumerateLoadedClasses(callbacks)

  • 로드된 모든 클래스를 열거하고 모든 일치 항목을 출력
  • onMatch: 일치하는 것을 찾으면 호출
  • onComplete: 가능한 일치(Match)를 모두 마치면 사용됨
Java.perform(function() {
	Java.enumerateLoadedClasses( {
    	"onMatch": function(className) {
        	console.log(className)
        },
        "onComplete": function() {}
    })
})

setImmediate(fn)

  • Process terminated 오류 해결하기
setImmediate(function() {	// prevent timeout
	console.log("[*] Starting script");
    
    Java.perform(function() {
    	myClass = Java.use("com.packagen.name.class.name");
        myClass.implementation = function(v) {
        	// do sth.
	}
})})

 

메소드 구현을 재작성할 때 유의 (다형성)

만약 다음과 같이 세 가지의 경우는 어떻게 처리할까? overload() 제공

  • 첫 번째, 입력받는 인수가 없는 메소드
  • 두 번째, 두 개의 바이트 배열을 인수로 입력받는 메소드
  • 세 번째, 앱의 context와 Boolean 형태의 인수로 입력받는 메소드
// 1) 입력받는 인수가 없는 메소드
myClass.myMethod.overload().implementation = function() {
	// do sth
}

// 2) 두 개의 바이트 배열을 인수로 입력받는 메소드
myClass.myMethod.overload("[B", "[B").implementation = function(param1, param2) {
	// do sth
}

// 3) 앱의 context와 Boolean 형태의 인수로 입력받는 메소드
myClass.myMethod.overload("android.context.Context", "boolean").implementation = function(param1, param2) {
	// do sth
}

Overloading

overload() 매개변수 카테고리

.overload()

.overload('int')

.overload('float')

.overload('[B') // byte array

.overload('[B', '[B', '[B')

.overload('java.io.File')

.overload('java.lang.String')

.overload('android.view.View')

.overload('android.app.Activity')

.overload('android.content.Context')

.overload('android.content.Context', 'java.lang.String')

.overload('java.lang.String', 'java.lang.String')

.overload('android.graphics.Bitmap')

.overload('java.util.List')

.overload('android.content.Context', 'java.lang.String', 'java.lang.String')

.overload('android.app.Activity', 'int', 'int', 'int', 'boolean')

 

 

728x90
728x90
728x90
반응형
목차
1. 온라인동영상서비스(OTT) 해외진출 기반조성 사업 본격 추진 (230228)
2. '23년 ICT 학점 연계 기업인턴십 실시 (230301)
3. 과기정통부, 우수한 젊은 연구자를 10년간 장기 지원하는 '한우물파기 기초연구'등 과제 선정 (230302)
4. 2023 개인정보보호 동향 보고서 VOL1(제1호) (230221)
5. Python/JavaScript 시큐어코딩 가이드 (230228)

1. 온라인동영상서비스(OTT) 해외진출 기반조성 사업 본격 추진 (230228)

(출처: 과학기술정보통신부, 보도자료, 방송진흥정책관 OTT활성화지원팀 김장호 과장(044-202-6530))

230228 조간 (보도) 온라인동영상서비스(OTT) 해외진출 기반조성 사업 본격 추진.pdf
0.32MB

  • 케이-온라인동영상서비스(K-OTT) 해외진출의 원년으로 삼아 국내 온라인동영상서비스의 글로벌 마케팅과 맞춤형 해외진출 지원
  • '온라인동영상서비스 국제교류' 사업은 글로벌 인지도를 향상시키고 수출 기회를 확대하고자 '온라인동영상서비스 특화 국제행사'(10월)를 최초로 개최할 계획

2. '23년 ICT 학점 연계 기업인턴십 실시 (230301)

(출처: 과학기술정보통신부, 보도자료, 정보통신산업정책관 정보통신산업기반과 이주식 과장(044-202-6240), 한지용 사무관(044-202-6242))

230302 조간 (보도) 23년 ICT 학점 연계 기업인턴십 실시.pdf
0.49MB

  • 전공 대학생 320명을 대상으로 중소·중견 ICT 기업 내 직무 프로젝트 기반 인턴십 지원 'ICT학점연계프로젝트 인턴십'
  • ('15~'22년) 총 2,100여 명의 대학생들에게 기업 인턴십(국내 2,050명, 글로벌 97명) 지원
  • 글로벌 인턴십 과정 선발 10명의 학생들은, 미국 실리콘밸리에 있는 차트매트릭(데이터분석), 싸이퍼롬(헬스케어) 등 5개 기업에서 3월 27일부터 약 6개월간 인턴 실시 예정

3. 과기정통부, 우수한 젊은 연구자를 10년간 장기 지원하는 '한우물파기 기초연구'등 과제 선정 (230302)

(출처: 과학기술정보통신부, 보도자료, 기초원천연구정책관 기초연구진흥과 윤성훈 과장(044-202-4530), 문영근 사무관(044-202-4534))

230302 조간 (보도) 과기정통부, 우수한 젊은 연구자를 10년간 장기 지원하는 '한우물파기 기초연구' 등 과제 선정.pdf
0.34MB

한우물파기 기초연구

  • '23년부터 신설, 우수한 젊은 연구자가 장기간 한 분야에서 도전적인 연구를 꾸준히 수행하여 세계적인 연구 성과를 창출할 수 있도록 지원
  • 박사학위 취득 후 15년 이내의 연구원
  • 도전적이고 혁신적인 기초연구 과제 15개 선정, 연 2억원 내외의 연구비를 총 10년간 지원
  • 1년차에 한하여 연구시설·장비 구입에 대해 추가로 선정·지원

4. 2023 개인정보보호 동향 보고서 VOL1(제1호) (230221)

(출처: 한국인터넷진흥원, 지식플랫폼 > 동향분석 > 개인정보보호·인터넷 동향, 개인정보정책팀 방보라(061-820-1899, bora0325@kisa.or.kr))

230221 KISA_23년도_개인정보보호_월간동향_VOL1_(제1호).pdf
0.70MB

[제1호(1)] 주요국 개인정보보호 강화기술 정책동향 분석 및 시사점

  • 주요국 PET 관련 지원책 현황

[제1호(2)]  EU 인공지능법(안)과 GDPR의 상호작용 분석

  • 인공지능법(안) 및 GDPR에서 주요 역할 연관성
  • 인공지능법(안) 및 GDPR에서 위험 평가
  • 인공지능법(안)이 개인정보보호관리자(DPO)에 미치는 영향
  • AI 규제 기관과 개인정보보호 규제 기관의 상호작용
  • 인공지능법(안) 및 GDPR에서의 정보주체 권리 보호

[제1호(3)]  해외 아동 개인정보 침해 관련 행정처분 사례 분석

  • 미국 연방거래위원회의 에픽게임즈 제재 사례
  • 스페인 개인정보 감독기구의 Techpump Solutions 행정처분 사례

5. Python/JavaScript 시큐어코딩 가이드 (230228)

(출처: KISA 인터넷보호나라&KrCERT, 알림마당 > 보고서/가이드)

230228 KISA_Python_시큐어코딩_가이드(2022년_개정본).pdf
4.65MB
230228 KISA_JavaScript_시큐어코딩_가이드(2022년).pdf
6.47MB

  • 제1절. 입력데이터 검증 및 표현
  • 제2절. 보안기능
  • 제3절. 시간 및 상태
  • 제4절. 에러처리
  • 제5절. 코드오류
  • 제6절. 캡슐화
  • 제7절. API 오용
  • 구현단계 보안약점 제거 기준

 

728x90
728x90

+ Recent posts