Android Studio集成Genymotion调试App
Contents
在反编译 App 分析加密字段生成逻辑时,可能会遇到一些参数,参与了加密字段的生成,但是不能在代码或是请求头中觅得踪迹,这时便需要通过断点调试代码,获取所需参数。
所需工具
- ApkTool:A tool for reverse engineering 3rd party, closed, binary Android apps. It can decode resources to nearly original form and rebuild them after making some modifications.(摘自官网)
- Android Studio:Android Studio 是谷歌推出的一个Android集成开发工具。
- Genymotion:一款安卓虚拟机。
使用 ApkTool 反编译 APK
按照官网教程下载好 ApkTool 之后,将 APK 拷贝到 ApkTool 的文件夹中,执行以下命令进行反编译,以 lianjia_test.apk 为例:
|
|
Android Studio 及 Genymotion 相关配置
安装 smalidea 插件
下载 smalidea-0.05.zip,选择从磁盘安装插件。
安装 Genymotion 插件
在Browse Repositories
中搜索Genymotion
插件并安装。
在设置中配置 Genymotion 应用位置:
在View/Toolbar
中开启工具栏,然后可以看到 Genymotion Device Manager 的图标。
在Run/Debug Configurations
里面的配置文件,添加Remote
:
Genymotion 安装 Genymotion-ARM-Translation
由于Genymotion是基于X86的,不支持ARM架构,有些基于ARM架构编译的应用便无法安装。下载ARM转换器 Genymotion-ARM-Translation 使模拟器可以正常安装应用。
此处需要注意的是,不同的模拟器版本对应不同的ARM转换器版本。下载好对应版本之后,直接拖拽到模拟器中安装,然后重启模拟器。
开启 APK 调试
首先将 lianjia_test 文件夹作为项目导入,并设置项目SDK。
有两种方法开启 APP 调试:
- AndroidMainfest.xml 文件添加
android:debuggable="true"
并重新打包 - 安卓系统中
ro.debuggable
的值设为1
以下分别记录两种操作方法,推荐第二种:
文件AndroidMainfest.xml
中,在application中加上:
android:debuggable="true”
重新打包APK,执行以下命令,新的 APK 会在 lianjia_test/dist 文件夹下生成
|
|
对反编译后的 APK 签名
未签名的APK会安装失败,此时需要使用自签名证书对APK签名。
- 生成RSA密钥对
|
|
-genkeypair 生成密钥对
-alias 密钥对的别名
-keyalg 密钥对算法,这里选择RSA
-validity 密钥对的有效期,单位为天
-keystore 生成密钥对的文件名
- 对未签名的 APK 进行签名
|
|
-verbose 输出签名详细信息
-keystore 指定密钥对的存储路径
-signedjar 后面三个参数分别是 签名后的APK包 未签名的APK包 密钥对的别名
安装打包好的 APK
安卓系统中 ro.debuggable
的值设为1
在安卓系统 /default.prop
文件中,设置 ro.debuggable=1
使用这种方法,不用对原生 APK 更改即可调试,且操作简单,推荐!
使用 Android Studio 调试
打开安装好的可调试 APP,在终端执行adb shell "dumpsys activity top | grep --color=always ACTIVITY"
可以看到当前 activity 及进程号。
执行命令 adb forward tcp:debug端口号 jdwp:apk进程号
,建立调试通道。
在 Android Studio 中定位变量位置,打断点。
开启 Debug ,获取变量值。
Author bjjdkp
LastMod 2018-11-02