欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

JEB 无源码调试 以dvm smali字节码方式,Demo尝试

程序员文章站 2022-03-21 21:37:31
关于调试器看不到进程,无法attach的问题,网上也有很多教程,基本是修改ro.debugable =1 ,ro.secure = 0 让adbd有root权限 attach到其他进程,涉及到要修改boot.img并刷包,可以在网上其他地方找找看相关资料 1.手机上运行apk 2.电脑上用jeb打开 ......

关于调试器看不到进程,无法attach的问题,网上也有很多教程,基本是修改ro.debugable =1  ,ro.secure = 0 让adbd有root权限 attach到其他进程,涉及到要修改boot.img并刷包,可以在网上其他地方找找看相关资料

 

1.手机上运行apk

2.电脑上用jeb打开对应apk

3.用jeb debuger attach 到对应进程

4.转换到 bytecode 界面,ctrl + b 在 目标位置下断点

  JEB 无源码调试 以dvm smali字节码方式,Demo尝试

 

   按tab转换为java代码

  JEB 无源码调试 以dvm smali字节码方式,Demo尝试

 

   断点在java代码展示界面无法下,只有在 bytecode 界面可以

5.手机端触发断点事件

  JEB 无源码调试 以dvm smali字节码方式,Demo尝试

 

 

6.

  支持很多jdwp的协议,这部分是很强大的功能,比如idea的 调试环境中支持的 动态计算表达式,估计是通过使用jdwp提供的类似 call的方式来办到的,可以动态调用方法,set/get 成员属性,查看某class的成员变量和方法等,可以方便在调试过程中,临时动态id修改一些boolean的值,进入某些雪藏已久的分支。

  在jeb的  termial 中输入 help 回车,可以看到基于jdwp的调试命令,有些jeb界面上没提供的功能可以通过这种 命令行的方式来实现

  JEB 无源码调试 以dvm smali字节码方式,Demo尝试

 

 

  比如这里我们试一下动态查看 v1寄存器中的值

  输入 help get 查看 get 命令的用法

  JEB 无源码调试 以dvm smali字节码方式,Demo尝试

 

  按f6运行到函数返回前  停住

  JEB 无源码调试 以dvm smali字节码方式,Demo尝试

 

   看 textview 对象的属性

  JEB 无源码调试 以dvm smali字节码方式,Demo尝试

 

   。。。

  JEB 无源码调试 以dvm smali字节码方式,Demo尝试

 

   值已经被修改

  

  我们把值改为  abcd 试试, 尝试调用 settext("abcd")

  JEB 无源码调试 以dvm smali字节码方式,Demo尝试

  JEB 无源码调试 以dvm smali字节码方式,Demo尝试 匿名内部类对外部final变量的引用

  用 call 指令

    JEB 无源码调试 以dvm smali字节码方式,Demo尝试

 

   修改成功了

 

jeb也可以分析 .so 文件

  右键,点解析

  JEB 无源码调试 以dvm smali字节码方式,Demo尝试

 

 

 

 

   JEB 无源码调试 以dvm smali字节码方式,Demo尝试

 

 

  找到stringfromjni 按下 tab(怕是用了ida的库)

  

  JEB 无源码调试 以dvm smali字节码方式,Demo尝试

 

   

  可惜我这边没有办法调试 native 汇编代码。。。

 

   

  jeb用来无源码smali调试比较方便,可以按tab转为java代码查看,并且可以添加自定义注释