Frida Java Script를 활용한 프로세스 후킹

2020. 5. 19. 10:482020/Android App Hacking

[1] C언어로 작성된 프로세스가 동작중이다.

[2] 해당 프로세스에 프리다를 통해 자바 스크립트를 삽입한다.

[3] 인터프리터가 C언어 파일을 읽은 뒤 자바 스크립트를 읽고 동작이 진행된다.

 

hello.c

실행파일로 컴파일 후 실행시킨다. $ clang hello.c -o hello

$ frida -l agent.js hello

hello프로세스에 프리다 명령어를 실행시켜 agent.js 자바스크립트 코드를 삽입한다.

 

Interceptor.attach( Target, Callbacks );
Target: 함수의 주소를 지정한다. (우리는 f함수의 주소를 알고 있기에 f함수를 조작할 수 있다.) 
** ptr("0x80491d0") <- 함수 f의 주소

Interceptor.replace( Target, replacement );
목표 함수, 메서드를 다른 함수, 메서드로 교체할 수 있다. 

Module.findExportByName( moduleName | null , exportName ) : 특정 모듈로부터 사용하는 함수를 검색

new NativeCallback( func, returnType, [argType] );
첫번째 인자에 위치한 함수를 실행시키는 콜백 생성

replace메서드가 실행되고 sleep함수가 새롭게 생성된 함수로 변경된다.

 

자바 스크립트 코드에서 새로운 함수를 선언하여 사용할 수 있다.

new NativeFunction( address, retType, argvType )
첫 번째 인자에 위치한 함수를 호출하는 native 함수를 생성한다. 변수 g에 함수가 저장되고 g(11111)은 즉 f(11111)이 된다.