安卓逆向——Android studio动态调试smali
环境 :雷电模拟器 (安卓模拟器)android studio (安卓开发工具)smalidea 插件 (as的smail插件)android killer (反编译工具)zhuce.apk (测试apk)1. 手机(类型模拟器)# adb shell am start -D -n 包名/活动页面adb shell am start -D -n com.qianyu.zhuceji/com.qia
环境 :
- 雷电模拟器 (安卓模拟器)
- android studio (安卓开发工具)
- smalidea 插件 (as的smail插件)
- android killer (反编译工具)
- zhuce.apk (测试apk)
1. 手机(类型模拟器)
# adb shell am start -D -n 包名/活动页面
adb shell am start -D -n com.qianyu.zhuceji/com.qianyu.zhuceji.MainActivity
端口转发
# 进入 手机
adb shell
# 查看 apk 的进程 ps | grep 包名包含关键字
ps | grep qian
# 端口 转发 adb forward tcp:电脑端口 jdwp:手机端口
adb forward tcp:8700 jdwp:2933
使用这两个命令即可连接成功。
要注意此处可能会发生8700端口被占用的情况,需要 找到结束,重新转发
1.netstat -aon | findstr "8700"
2.根据PID找到该进程,结束进程
3.打开任务管理器—>查看—>选项列(S)—>勾选 PID,确定—>进程按钮栏
2. AS动态调试
加载 smailidea 插件(File --> Plugins ---> installed ---> install plugins for disk (第三个))
加载插件成功,1. 文件前面会显示 S 2. 代码快会高亮显示 3. 代码行数 可以选择打断点
打上 断点分析,运行,会提醒你需要配置
运行配置:
运行后会提示:Connected to the target VM, address: 'localhost:8700', transport: 'socket'
证明配置成功,然后可以在 apk 操作,来调试到 断点位置
打好断点,app应用里在操作, 触发 断点位置,查看变量
简单补充分析逻辑:
首先使用 jadx 反编译 apk 文件,找到 主活动界面,
注册按钮 - 肯定绑定了 监听事件,这是一个突破口,就从这里入手
找到 切入点,checkSN 方法,然后在到 smali 文件里面找到这个方法,并打上 断点,
再 按照 前面的 以调试模式 启动,app 应用
一步步 调试,smali 不熟,可以对比 jadx 反编译的 java代码 来查看
可以 调试 到最后 有个输入的 注册码 和 系统自带的 注册码 判断是否相等
最后可以 看到 系统的注册码 ,就是我们需要的,
最后 注册的时候 输入 正确的激活码,则提示 注册成功
更多推荐
所有评论(0)