环境

  1. 雷电模拟器  (安卓模拟器)
  2. android studio  (安卓开发工具)
  3. smalidea 插件  (as的smail插件)
  4. android killer   (反编译工具)
  5. 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代码 来查看 

可以 调试 到最后 有个输入的 注册码 和 系统自带的 注册码 判断是否相等

 最后可以 看到 系统的注册码 ,就是我们需要的,

最后 注册的时候 输入 正确的激活码,则提示 注册成功 

 

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐