安卓IDA动态调试初体验
2017-09-28 本文已影响328人
山东大葱哥
今天终于完成了一个基于动态调试的安卓逆向的题目,发现动态调试真的蛮有趣的,今天算初体验吧。
抽时间我把整个过程都细化出来,录个视频或者写个完整文档,有需要朋友给我留言或私信吧。
在此感谢简书作者aimua提供的文章:链接地址!这是2016年zctf的一道Android题目,样本和本文用到的部分工具在文章末尾可以下载。
总体流程
大流程是按照aimua作者的文章进行的,大家可以参考原文,有几处不同之处:
- 静态分析
- smali patch app中的定时任务
这个我直接修改的smali文件,把time的shedule直接 # 号注释掉了,然后重新打包签名。 - 动态调试
- so patch so中的反调试校验
这个我是直接patch的so文件,将ptrace的返回值设为0 movs R0 #0。然后重新打包签名。 - dump核心数据
- 通过图像分层工具拿到flag
简单写一下调试的几个注意事项:
- 要用真机调试
什么bluestack、夜神等都不能在ida中好好的玩耍,有大神说可以用gdb玩,我还配好环境,等有时间再玩一把gdb的。 - 真机要root过
360超级root过的有时候会root不彻底,在进行调试时会提示权限问题,可以下载一个adbd insecure.apk进行完整root,安装好后只需要配置两个勾选项,然后重启手机即可。 - android_server不要放在sdcard目录下
需要将ida下的android_server拷贝到手机的 /data/目录或子目录下,不能放到/sdcard目录下,/sdcard目录下文件不支持chmod,我在这里费了很长时间,最后咨询了大神才知道。 - adb shell后,su提示权限不足
如果已经完全root还出这个提示,建议先重启手机,然后看360超级root中---root管理,会看到一个被禁止的应用“控制台程序”,把他设为允许即可。 - ida挂载异常
ida挂载,选择进程后提示
The debugger could not attach to the selected process. This can perhaps indicate the process was just terminated, or that you don't have the necessary privileges.
如果排除权限问题,解决办法可以重启手机或者将手机的应用彻底终止,重新打开应用进行挂载。还有一种情况就是应用被别的进程做了ptrace,也就是做了反调试,那就需要跟踪到对应的指令patch掉。 -
ida要设置好调试选项
这个调试选项貌似不能自动保存,如果重开ida或者重新开启调试时都会自动情况,所以对于一些有反调试的程序一定要检查好,避免走弯路。 ida调试选项
相关工具
- ida
- apktook
- jeb
- autosign
附件
apk样本和stegsolve工具下载: apk样本和stegsolve工具下载
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入我的圈子多多交流,共同进步,具体看我的个人介绍,我们一起学技术!
朋友圈,点赞是表态,评论才是真爱;在公众号,点赞只是认同,赞赏才是死忠;在简书,阅读只是眼动,喜欢才是心动。