Android逆向--IDA动态调试环境搭建

目录

一、准备的工具:

二、总览步骤

二、静态逆向获得app信息

1. 将Apk安装的手机

2. 对apk进行静态分析,获得apk的包名,入口Activity,以及so文件。

三、搭建动态调试环境

1. 将android_server文件放到Android手机中。

        step1: 确保可以连接到手机,并在手机中新建目录mydata/adb。

        step2: 将android_server移动到/mydata/adb目录下,并修改文件权限777

 2. 运行androi_server程序。

 3. 转发端口,并以调试模式启动需要调试的app。

4. IDA设置。

 5. IDA选择附加程序,进入调试窗口

四、注意点:

一、准备的工具:

1. 下载android逆向工具集

  • IDA pro是7.7版本。【动态分析和分析so文件必备】
  • AndroidKiller是一个集成工具箱(apktools等都在里面)【分析和修改smali代码】
  • Jadx-gui 可以将apk直接反编译为Java代码,但是只能查看【用于分析java逻辑】
  • WinHex 由于IDA多用于分析,该软件用来修改对应的二进制。【用于对so文件更改】
  • Notepad++ 文件内字符串搜索必备,很多AndroidKiller无法搜索的字符串,都可以找到,因为AndroidKiller只能搜索双引号的。

2. Root的Android手机(不能虚拟机!!!),同时确保电脑可以adb连接到手机

        这里必须要用真机,因为只有真机是arm架构,而虚拟机都是x86架构,就算是BlueStacks虚拟机支持arm架构也不行,不然调试会出现错误,并且进入调试界面不会到pc代码段

3. 下载AliCrackme-2.apk实验的apk。 

二、总览步骤

1. 将IDA pro下的android_server移动到android手机中, 并运行,成功后不要关闭该cmd

> adb shell mkdir /mydata/  # 创建mydata文件夹

>adb shell mkdir /mydata/adb/  # 在mydata文件夹下创建adb文件夹

> adb push android_server /mydata/adb/android_server   # 移动文件到手机

> adb shell ./mydata/adb/android_server  # 运行android_server。

 2, 新建立cmd, 端口转发:

adb forward tcp:23946 tcp:23946  # 前面是电脑的端口,后面是手机的端口

adb shell am start -D -n  com.yaotong.crackme/com.yaotong.crackme.MainActivity # 调试模式打开APP, 不然IDA发现不了该APP

3. 进入IDA,选择对应的程序,进入调试窗口。并记好该app对应的PID.(不会就看下面教程)

4. adb forward tcp:8700 jdwp:(APP进程号)

5. jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700

6. 在IDA中进行调试。

以下为具体步骤,适合第一次操作:

二、静态逆向获得app信息

1. 将Apk安装的手机

        > adb devices  # 查看是否可以正常连接到手机

        List of devices attached
        b24da996        device  # 成功连接到手机啦

        > adb root   # 查看adb是否可以root

        adbd is already running as root  # 正确提示

        > adb install AliCrackme_02.apk    # 安装apk到手机

2. 对apk进行静态分析,获得apk的包名,入口Activity,以及so文件。

        将apk用AndroidKiller打开, 点击工程管理器 > AnddroidManifest.xml文件,        

    

可以得到包名为: com.yaotong.crackme

可以得到app入口: com.yaotong.crackme.MainActivity

同时复制出lib中的so文件用于分析: libcrackme.so

三、搭建动态调试环境

1. 将android_server文件放到Android手机中。

        step1: 确保可以连接到手机,并在手机中新建目录mydata/adb。

        > adb devices  # 查看是否可以正常连接到手机

        List of devices attached
        b24da996        device  # 成功连接到手机啦

        > adb root   # 查看adb是否可以root

        adbd is already running as root  # 正确提示,否则看文章最后注意点

        > adb shell # 进入手机

        > mount -o remount,rw /  # 重新挂载磁盘,获取磁盘所有权限

        > chmod 777 default.prop # 修改文件权限,进入文件,修改ro.debuggable=0变成1,使得所有程序都是可调试状态。

        >mkdir mydata  # 创建mydata文件夹

        >mkdir mydata/adb # 在mydata文件夹下再创建adb文件夹

        step2: 将android_server移动到/mydata/adb目录下,并修改文件权限777

  进入IDA Pro目录的dbgsrv目录

 

 修改权限:

 2. 运行androi_server程序。

如果1完成后,今后,只需要直接进入2。

> adb shell ./mydata/adb/android_server

        

此后要新建一个CMD窗口,该CMD窗口不能关闭。

 3. 转发端口,并以调试模式启动需要调试的app。

转发端口:

> adb forward tcp:23946 tcp:23946   # 前面的是电脑的端口,后面的是手机的端口

调试模式启动app: adb shell am stat -D -n 全包名/入口Activicity。

>adb shell am start -D -n  com.yaotong.crackme/com.yaotong.crackme.MainActivity

4. IDA设置。

        调试器选择:Remote ARM Linux/Android debugger

        调试器>调试器选项:

        

         调试器>调试应用程序设置,

 5. IDA选择附加程序,进入调试窗口

在IDA中 调试器>附加到程序 ,中选择程序com.yaotong.crackme, 并记住对于的进程ID:1342。

        

 

 6. 进行进程监听:adb forward tcp:8700 jdwp:(APP进程号)

adb forward tcp:8700 jdwp:1342  # 上面获得的进程号

7. >jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700 此时就可以进行你需要的调试啦。

四、注意点:

1. 一定要用真机,模拟器为x86架构,会调试不了,也就是刚打开调试窗口,不会跳到pc段。

2. adb root,出现错误,一般都是root不完全,可以在手机端安装adbd Insecure,进行提权操作。

勾选adbd Insecure.apk中的Enable insecure adbd和enable at boot

3. 需要将手机目录下的/defalut.prop文件中的ro.debuggable=0变成1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值