记录一些逆向思路
- hook registerNatives
当一些关键函数写在so库中,而so做了混淆和加固,无法通过jni_onload简单找出注册的native函数时,可通过hook registerNatives
打印native函数的注册情况,帮助定位。frida hook脚本如下:
github-frida_hook_libart - hook call_array
当一个so被加固/加密,相关判断/解密代码很有可能写在构造函数里,因为它比库的其他函数执行都要早。如果我们要分析库的构造函数,可以hook linker的call_array
和call_function
,调用流程如下:
dlopen -> find_library -> load_library返回soinfo -> soinfo.call_constructors(),最终调用到:
call_function("DT_INIT", init_func_);
call_array("DT_INIT_ARRAY", init_array_, init_array_count_, false);
.
也就是调用到.init
和.init_array
节区的代码。
可能用于检测frida的方法:
- frida采用CS模式,默认绑定27042端口,可以在该端口上开socket测试连接,测试frida handshake。
- 遍历内存中加载的库列表 ,例如frida-gadget。
jadx plugin
frida-gum sdk