app从smali到java再到动态so调试

    我也是一个小白   只是记录自己从0分析的过程    也欢迎大家跟我一起学习讨论     (我也打算跟论坛大神们一样   做一整个从0开始的逆向系列   然后从拿到apk一直分析加密以及逆向  然后到一个成品的软件   也希望大家多多支持)

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

查看一下java代码
[attachimg]1620235[/attach]

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

这里NI是个native层的调用  用了静态方法修饰
利用IDA把so拖进去反编译

找到导出函数窗口查看注册方法     只找到了此jni_onload方法  说明这个so只利用了动态注册  直接跟进

点进去AD 也就是j__Z2ADv

这里可能是反调试

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

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

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

接下来在jni_onload进行下段

然后勾选三项
[attachimg]1620262[/attach]

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

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

由此推出
[attachimg]1620266[/attach]

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

取消3项

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

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

成功断下

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

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

好啦分析也就到这里了   下一个帖子我打算分析一款app的协议分析 以及利用Android Studio动态调试smali代码   后面还有脱壳  以及如何hook   (如果有对手游方面感兴趣的朋友可以留言  也可以讲讲注入 内存  解密dll以及lua文件)

THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
  • 管埋员

    昵称

  • 取消
    昵称