起序:因为 安卓模拟器(比如:雷电,夜神,蓝叠...) 都是 x86 架构的,而调试的是 arm 架构,所以需要 arm 架构的 安卓模拟器

调试模式

文章

普通模式

【逆向】IDA 动态调试之普通模式调试 apk

调试模式

【逆向】IDA 动态调试之调试模式调试 apk

一、软件环境

  • IDA:IDA 7.0
  • SDK
  • APK:Calculator.apk
  • 软件下载:百度网盘 提取码:qhij

二、搭建环境

1、下载并解压文件

android设备id有什么用 设备id apk_android设备id有什么用

2、打开模拟器

这个模拟器打开的运行效果很差,将就可以调试用。

android设备id有什么用 设备id apk_文件名_02

3、android_server

IDA pro/dbgsrv 目录下有一红框圈出的文件 android_server,它是提供调试 arm 架构的所需服务文件。

android设备id有什么用 设备id apk_android_03

4、连接设备

1、检查设备

因为我电脑上已经有了一个 SDK,所以解压出来的 SDK 配置好环境变量后,我把 sdk/platform-tools 目录下的 adb.exe 复制了一份,更改为 adb1.exe 文件,为了是不与我原来的 SDK 在命令上的冲突。

# 检查是否连接上设备
adb devices

android设备id有什么用 设备id apk_文件名_04

2、上传 android_server

android_server 复制到 模拟器/data/local/tmp 目录下,这里建议更改复制之后的文件名,因为有一些模拟器会检测,会导致 android_server 复制失败,我这里更改为 as

# 最后的 as 是文件复制之后更改的名称,这里原目录为什么有双引号呢,是因为 IDA pro 这个文件名中间有空格
adb push "F:\Program Files\IDA Pro\dbgsrv\android_server" /data/local/tmp/as

android设备id有什么用 设备id apk_android设备id有什么用_05

3、授予可执行权限

android_server 文件上传到 /data/local/tmp 目录下之后,还没有 可执行权限,需要 授予可执行权限

# 连接设备
adb shell
# 获取 root 权限(有些模拟器需要执行 su 命令),这里默认就是 root 权限了,所以我就没写
su
# 授予可执行权限
chmod 777 /data/local/tmp/as
# 执行,启动之后开启占用 23946 端口
./as

android设备id有什么用 设备id apk_android设备id有什么用_06

综合

android设备id有什么用 设备id apk_android设备id有什么用_07

4、端口转发

此时需要使用 本机模拟器 之间进行端口转发,需要新打开一个 cmd 窗口。

adb forward tcp:23946 tcp:23946

android设备id有什么用 设备id apk_android_08

5、启动软件

先安装软件,将 Calculator.apk 直接拖进模拟器中就可以了,然后点击就完事了

android设备id有什么用 设备id apk_android设备id有什么用_09

6、IDA 配置

DebuggerAttachRemote ARMLinux/Android debugger

android设备id有什么用 设备id apk_android_10

Hostname 输入 127.0.0.1,点击 OK。

android设备id有什么用 设备id apk_可执行_11

出现的都是 进程信息,选择刚刚启动软件的进程,选择包名 com.star.calculator,点击 OK。

android设备id有什么用 设备id apk_可执行_12

效果展示,好了,我该调试软件了。

android设备id有什么用 设备id apk_文件名_13

可以看出连接上了,毕竟我要做教程,所以就点击了关闭。

android设备id有什么用 设备id apk_文件名_14


如果对您有帮助,点个赞再走吧。