Mac IDA动态调试Android应用dump dex

前言

由于本人使用的是Mac来做开发,并且最近要做逆向相关,苦于网上多数教程都是Win的,没办法只有到处搜集资料和自己踩坑,摸着石头过河。这里分享一下Mac来做的整个过程。目标,IDA动态调试,dump dex脱壳。
脱壳的话,目前两种方法,一种动态调试,一种xposed,当前为动态调试学习

环境:
macOS 10.14.1
root过后的手机 htc 4.4.2
IDA 7.0 附送地址
IDA mac 高版本崩溃解决适配
mprop 设置手机所有应用为可调试 下载地址

精简方案

1、 copy 启动 Android server
  1. 上传IDA调试服务器地址:IDAPro70\dbgsrv\android_server
  2. cmd进入到该目录下: IDAPro70\dbgsrv
  3. 导入IDA调试服务器:adb push android_server /data/local/tmp
  4. adb shell 以su启动(手机要求root)
  5. cd到/data/local/tmp下:chmod 777 android_server
  6. ./android_server(如果失败重启手机)
2、 root手机使用mprop设置ro.debuggable为1

adb push xxx/mprop /data/local/tmp/mprop
adb shell su
chmod 755 /data/local/tmp/mprop
data/local/tmp/mprop
setprop ro.debuggable 1
/data/local/tmp/mprop -r

3、 转发ida端口 开启adb应用调试

adb forward tcp:23946 tcp:23946
adb shell am start -D -n 包名/包名对应启动Activity

4、 ida attach到应用进程 打断点

打开IDA设置好process options 地址127.0.0.1 端口23946
Ida -》debugger -》attach process
选择对应应用进程
选择libdvm.so
找到dvmDexFileOpenPartial 计算偏移量
下断点

5、 jdb连接应用

连接jdb(两种方式)
1、通过ddms(如果占用8700 ps查看 kill杀掉 重来)
2、命令
adb shell ps | xxx 找到对应app的进程号
adb forward tcp:8700 jdwp:进程号
jdb -connect com.sun.jdi.SocketAttach:port=8700,hostname=localhost

6 IDA开启调试

启动ida F9 开始进行调试

大致原理

通过IDA的动态调试系统库libdvm.so的dvmDexFileOpenPartial方法,来寻找内存中的dex段地址,然后进行dump,最终达到脱壳的目的。
(4.4前后的不同java虚拟机类型,所以这里用的是4.4.2的手机,系统库为libdvm,如果是之后的便是libart,调试方法为openMemory)

详细过程

看似原理很简单,但是会遇到许多的问题和坑,每个都能卡你半天,所以这里分享给大家一些细节东西,望君莫要重蹈覆辙。

1、 copy 启动 Android server
  1. 上传IDA调试服务器地址:IDAPro70\dbgsrv\android_server
  2. cmd进入到该目录下: IDAPro70\dbgsrv
  3. 导入IDA调试服务器:adb push android_server /data/local/tmp
  4. adb shell 以su启动(手机要求root)
  5. cd到/data/local/tmp下:chmod 777 android_server
  6. ./android_server(如果失败重启手机)
1311457-141fba5a95d1761f.png
找到android server
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值