只需一步,快速开始
0
新手上路
先运行软件,观察程序特点,步骤与第八节实战相似,都是运用IDA静态调试与动态调试相结合获取密码,从而进入功能页面,具体操作流程如下。
在xml文件里,找到程序入口点,如下图所示。 直接查看click,如下图所示。 此处if的判断与之前分析的AliCreackme不同。先判断它是否为空,如果为空,先弹出对应字符;如果不为空,直接把字符给被Native修饰的方法调用,也就是说,输入字符的对错结果和返回的字符串都在so层处理。
click
AliCreackme
Native
1.找到JNI_OnLoad,进入后,如下图所示。 2.按F5查看伪代码,修改参数类型和名称,如下图所示。 3.调用一个AD函数,然后是一个if-else判断,如下图所示。 4.进入AD函数,查看字眼是检测进程,如下图所示。 5.查看静态注册,搜索后发现没有静态注册的函数,那逻辑的执行部分肯定是在动态注册里,但是动态注册的伪代码里面只识别到两个函数,AD和GetEnv,如下图所示。 6.查看汇编窗口,除了if里面的两个BL跳转函数之外,下面的else里面还有一个BL跳转函数,而且很明显是4个参数,RegisterNative恰好就是4个参数,如下图所示。 静态分析就到这里,接下来开始IDA动态调试,验证我们的推论。
JNI_OnLoad
AD函数
if-else
AD和GetEnv
if
BL
else
BL跳转函数
RegisterNative
IDA动态调试
直接修改名字和端口就可以直接过掉,记录动态分析的过程,进来后,检测函数nop掉,如下图所示。 F8一路往下,来到这个可能是RegisterNative函数的位置,如下图所示。 观察第三个参数,发现是一个地址,可以跳过去,如下图所示。 点击过去,然后按d键,识别成dword类型的地址,看到存放的内容是一个 java层被native修饰的方法名,如下图所示。 同样识别第二个和第三个参数,第二个参数是方法签名,如下图所示。 第三个参数是C代码中的底层函数实现的函数名,bc过来后,看到这里的标志位T是1,说明是thumb指令,如下图所示。 按c键,将此处代码识别
dword
java
native
thumb
使用道具 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
小黑屋|Archiver|站点地图|UltraDebug ( 滇ICP备2022002049号-2 滇公网安备 53032102000034号)
GMT+8, 2025-12-11 07:03 , Processed in 0.037878 second(s), 13 queries , Redis On.
Powered by Discuz X3.4
© 2001-2023 Discuz! Team.