Android逆向系列之动态调试4–IDA调试dex

Android逆向系列之动态调试1–入门篇 
Android逆向系列之动态调试2–Smali注入
Android逆向系列之动态调试3–Eclipse调试apk
Android逆向系列之动态调试4–IDA调试dex
Android逆向系列之动态调试5–代码注入(JDB调试)
Android逆向系列之动态调试6–gdb调试
Android逆向系列之动态调试7–IDA调试so文件(上)
Android逆向系列之动态调试8–IDA调试so文件(下)

一、准备
在APK改之理里双击打开AndroidManifest.xml,为了让APP可调试,需要在application 标签里添加一句android:debuggable=”true”
保存,然后回编译成apk,安装到模拟器或者真机中

二、调试配置
1.将APP包里的classes.dex解压到任意一目录,然后拖进IDA。等待IDA加载分析完毕,点击Debugger->Debugger Options
2.勾选在进程入口挂起(suspend on process entry point),然后点击Set specific options 填入APP包名称(Package name)和入口activity 如图:
22
其中包的名称(注意划线处的packet)和入口activity(划线处的Android name) 都可以通过AndroidManifest.xml 文件获取:
11
3.然后在IDA点击Debugger->Process Options–>将端口改为8700(默认为23946)
44
或者这里的端口可以通过DDMS,看到更加对应的端口8605
33
准备配置工作到这里结束,接着可以开始调试dex

三、调试前夕
1、下断点,找到感兴趣的函数,下断点(F2),比如在Onclick函数,或者一些敏感的函数check等下断点
2、按F9或者点击绿色三角形按钮,运行程序,如果成功运行会出现以下界面
调试
问题分析1:
这里一直出现Can’t bind socket”tcp:9700″
解决:一开始以为是端口出现问题,反复填写仍旧无法解决,后来查阅资料得知,需要关闭DDMS,因为8700会被DDMS占用,关闭即可

问题分析2:点击运行后,出现”有多台调试器“,无法继续
解决:使用命令adb devices查看,确实存在两个模拟器,但是找不到另一个模拟器是什么打开的,后来发现后台程序adb.exe这个关闭后,即可杀死另一个模拟器

四、调试过程
选中ida->debugger->use source level debugger,(这里是一个复选框,前面如果变颜色说明选中)
然后点击ida->debugger->debugger windows->locals打开本地变量窗口,如图:
111
分析:可以看到这里,我们在输入信息后,点击注册,程序就停在了我们设置的断点位置(checkSN函数)处,这时,我们可以使用F7或F8来进行单步调试,这里推荐使用F8,否则有时候会进入一些奇怪的函数,导致程序终止。继续单步调试后,我们成功看到正确的userSN如图:
1234

同时,通过动态调试,分析某些值的变化,我们可以清楚的看到,这里首先是计算出了用户名的MD5的值,然后动态调试的时候,sb里的value值每隔2取md5的值,这样其实就把程序的注册过程了解清楚,因此通过动态调试我们也能很好的了解程序的架构,当然,动静结合是最好的啦。

转载自http://www.tasfa.cn/index.php/2016/05/29/android-ida-dex/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值