安卓逆向:AndroidStudio + 安卓模拟器 + smalieda 下断调试 apk 程序

1. 下载 smalieda

  • 下载地址:https://bitbucket.org/JesusFreke/smali/downloads/;
  • 由于下载速度比较慢,也可使用百度网盘下载 smalidea-0.05.zip,链接:https://pan.baidu.com/s/1JzhhYEv_vKQdOmtcT9OkOA,提取码:4zj9;
  • 注意:下载后不要解压

2. 配置

  • 打开 AndroidStudio,依次点击 File -> Settings -> Plugins
  • 如下图所示,点击 齿轮 图标,然后点击 Install Plugins from Disk
image.png
  • 在上面的文件保存路径下,找到 smalidea-0.05.zip 文件,点击导入;
  • 如下图,表示导入成功。
image.png

3. 下断

  • 将反编译后的 smali 文件导入 AndroidStudio,如果不知道如何将 apk 反编译成 smali,请参考我的另一篇文章 《安卓逆向:使用 apktool 将 apk 反编译成 smali 文件》;
  • 打开 smali 代码,找到调试位置并打断点,如果知不知道如何查找代码位置,请参考我的另一篇文章《安卓逆向:jadx-gui 查找方法并在 Android Studio 中定位代码》;
image.png

4. 配置模拟器

  • 打开 sdk 存放文件夹,在 platform-tools 路径下找到 adb.exeAdbWinApi.dllAdbWinUsbApi.dll 三个文件,将三个文件 复制
微信截图_20200616010405.png
  • 打开模拟器所在文件夹,找到上述三个文件,鼠标右键 黏贴,替换掉文件夹中的三个文件;
image.png

5. 连接模拟器

  • 启动安卓模拟器,此处使用 雷电模拟器

  • 打开 cmd 命令行,进入 模拟器所在文件夹,使用 adb 连接调试安卓模拟器;

adb.exe connect 127.0.0.1:5555

-- 此处使用的 雷电 模拟器,端口号为 5555去,其他模拟器参考下表;

模拟器名称 ---- 端口号
逍遥游 ---- 21503
夜神 ---- 62001
海马玩 ---- 26944
网易mumu ---- 7555
天天 ---- 6555
BlueStacks ---- 5555
雷电 ---- 5555
天天安卓 ---- 5037
安卓模拟器大师 ---- 54001
Genymotion ---- 5555

5. 获取 app 的 packageName/ActivityName

  • 使用 adb 安装 apk 文件到模拟器;
adb install apk文件的绝对路径    # 菜鸟注意:鼠标直接将 apk 文件拖至此处 cmd 命令行窗口即可添加 apk 绝对路径
  • 在模拟器启动 app,进入准备调试的页面,此处我需要调试的验证码登录,如下图;

  • 打开 cmd,输入下面命令获取 packageName/ActivityName

adb shell dumpsys activity activities
  • 结果如下图,此处得到结果为 com.gotokeep.keep/.splash.SplashActivity
image.png

6. debug 启动 app

  • 使用 adb 以 debug 方式启动 apk;
adb shell am start -D -n packageName/ActivityName
  • 注意此时模拟器页面的变化,获取 PID 进程号,如下图;
image.png

7. 配置端口转发

  • 可选方法一:打开 DDMS,在 Name 找到 packageName 对应的一栏;
image.png
  • 可选方法二:使用 adb forward 配置端口,注意:此方法个人感觉问题较多,不推荐使用;
adb forward tcp:8700 jdwp:PID进程号  

-- 如下图表示配置成功;

image.png

-- 注意:如果遇到 cannot bind to 127.0.0.1:8700 报错,参考我的另一篇文章《安卓逆向:adb forward 转发端口遇到 cannot bind listener: cannot bind to 127.0.0.1:8700 报错》;

8. 添加模拟器端口号

  • 依次点击 Add Configuration... -> + -> Remote
image.png
  • 在 Port 栏输入 8700

9. 开始调试

  • 在 AndroidStudio 进行调试;
image.png
  • 如下图,调试开始后,断点被断下来;
image.png

你可能感兴趣的:(安卓逆向:AndroidStudio + 安卓模拟器 + smalieda 下断调试 apk 程序)