同样在调试的ida中下好断点, 第2个断点就是调用.init_array数组的代码 然后按F9,注意观察寄存器窗口, 当有显示调试的是你想要断的so的时候开始注意 当断点断在BLX R4的时候,下一步就是调用init_array数组了, 所以F7跟进去 在直接把我们想要分析的so拖到ida分析进行验证, 代码一样, 说明我们成功的断点在了init_array数组
am start -D -n demo2.jni.com.myapplication/.MainActivity 5. IDA attach到目标进程,init_array 和 JNI_OnLoad 中打好断电, F9执行 6. 开一个终端执行 jdb-connect com.sun.jdi.SocketAttach:port=8700,hostname=localhost# 这里端口默认是8700,如果报错refuse了,那么打开sdk/tools/monitor.bat,查看端口到底...
一、为什么要调试init_array init_array的用途 1. 一些全局变量的初始化 (我这里试过, 一些全局变量的初始化,会统一用一个init_array表项来完成初始化) 2. 通过__attribute__ ((constructor)) 声明的函数 (可以定义n个) 通过so加载流程来看,init_array是我们程序代码可以控制的最早的时机了, 其次才加载Jni_...
在Android so文件的.init、.init_array上和JNI_OnLoad处下断点 .init_array段构造函数调用地址(RVA)。 再开一个IDA对该so库文件进行Android应用的附加调试,设置IDA调试时断在so库文件加载的位置,更保险的方法就是在system/lib...一般在so文件的.init段和JNI_OnLoad处。因此,我们在逆向分析各种厂商的加固so时,需...
以下将怎样在init_array下断点,首先要找到so的init_array端。把so拖入ida,然后按Crtl+s,会出现该so的全部段。例如以下: 进入.init_array。例如以下: 当中sub_2378就是init_array的代码。 我们在这里下断点,详细调试的步骤和在JNI_ONLOAD下断点调试是一样的。參考安卓逆向学习笔记(5) - 在JNI_Onload 函...
5.找到断点位置 A.找到模块基址: 断点地址 = 0xF72EA000+0x000015B8 = 0xF72EB5B8 4.下断、然后F9: 5.继续运行App jdb-connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700 可以看到IDA已经顺利命中断点~ F7进入即可调试.init .init_array...
IDA脱壳定位 init 或init_array函数解析 定位 init 或init_array函数 _Z17dvmLoadNativeCodePKcP6ObjectPPc ThreadStatus oldStatus = dvmChangeStatus(self, THREAD_VMWAIT);handle = dlopen(pathName, RTLD_LAZY);//此so没有被加载过,调用dlopen加载此so dvmChangeStatus(self, oldStatus);dlopen函数源码: void...
我们知道so文件在被加载的时候会首先执行.init_array中的函数,然后再执行JNI_OnLoad()函数。JNI_Onload()函数因为有符号表所以非常容易找到,但是.init_array里的函数需要自己去找一下。首先打开view ->Open subviews->Segments。然后点击.init.array就可以看到.init_array中的函数了。
7、如何定位到执行so文件的init或init_array函数 1)从手机或虚拟机中pull出来linker 2)搜索字符串” [ Calling %s @ %p for '%s' ]”,见下图: 3)查找引用此字符串的地址: 4)到sub_271C处,见下图 : 8 如何定位到jni_load 1)直接在SO文件中查找jni_load设置断点的弊端: ...
so文件在被加载的时候会首先执行.init_array中的函数,然后再执行JNI_OnLoad()函数。如果在这中间加了反调试代码,那么我们一旦开始调试app可能就会退出.所以我们需要在so文件被加载之前就断下来. 启动app 使用am start命令启动app: adb shell am start -D -n com.yaotong.crackme/com.yaotong.crackme.MainActivity...