静态到调试so层分析key

废话不多说,我们直接开始实战操作!

首先拿到apk利用killer反编译查看smali代码 找到包名入口查看onCreate函数

找到点击函数是假函数

查看一下java代码

然后点击过去查看ni的方法

这里NI是个native层的调用  用了静态方法修饰

利用ida把so拖进去反编译

找到导出函数窗口查看注册方法

只找到了此jni_onload方法  说明这个so只利用了动态注册  直接跟进

点进去AD 也就是j__Z2ADv

这里可能是反调试

检测了pid的值是否在调试状态  返回动态注册函数接着分析

好了静态分析完毕了  接下来利用ida进行动态调试

附加的时候提示我端口被占用  那再切换一个端口试试

接下来在jni_onload进行下段

然后勾选三项

成功在jni_onload断下来  接着根据静态分析的结果在调用ad函数的地方跟进修改指令

同步hex操作窗口进行修改然后f2提交  接着往下执行动态注册函数位置

由此推出

动态注册了bc这个函数  然后f9直接运行下去

取消3项

计算偏移地址下段  然后在手机上随意输入一个密码

再在静态ida中逐步跟进发现是个RC4的加密 再去此函数地址下段

成功断下

这里成功得出我输入的字符串信息

这里就是破解出来的密码啦

想学习逆向的可以私聊我,喜欢就评论一起交流学习吧!

你可能感兴趣的:(android,逆向工程)