Study/App
[Android] so 파일 내 function Hooking
Notchicken
2020. 7. 16. 09:53
Android 분석 중 java 단에 구현되어 있지 않고, so 라이브러리 안에 구현되어 있는 로직을 분석해야 할 경우가 생긴다.
so 라이브러리 분석 중에 hooking 해보고 싶은 함수가 있을 경우 아래와 같이 코드를 작성할 수 있다.
1. linux에서 function 이름을 확인한다. (IDA로 so 파일을 열어서 확인할 수도 있다.)
nm -- demangle --dynamic "so파일명"
ex) nm --demangle --dynamic test.so | grep test
00000000003ee594 T AKScreen::test(TScriptNativeParam*)
nm -D "so파일명" | grep "찾고자하는 함수키워드"
ex) nm -D test.so | grep test
00000000003ee594 T _ZN8AKScreen9testEP18TScriptNativeParam
2. 찾은 function을 후킹하는 js 코드를 작성한다.
hook.js
var libname = "test.so" // so파일명
var funame = "_ZN8AKScreen9testEP18TScriptNativeParam" // function 이름
Interceptor.attach(Module.getExportByName(libname,funame),{
onEnter: function(args){
send("##########test is hooked#################");
send("##########test value= "+args[1]+"################");
},
onLeave: function(retval){
send("###################Inside onLeave###############");
}
});