apk无法调试的问题

apk无法被调试时的解决办法

apk无法调试的问题

参考链接:

雪一梦:Android So动态调试之反jdb附加的解决大法

如果需要判断一个apk是否为可调试的,则必须满足以下两个要求中任意一个

  • AndroidManifest.xml文件Application包含android:debuggable="true"
  • 文件/default.prop中的ro.debuggable的值为1

目前有四种方式可以解决这个问题

  • root手机中安装Xposedxinstaller插件
    使用方法:
    • 下载 Xposed 框架,并激活,再下载 xinstaller 插件安装;
    • 开启模块,点击 xinstall 插件设置专家模式,进入其他设置,开启调试应用,最后在 xposed 中激活重启

​ 短处:apk中很有可能会有反xposed代码的存在,因此需要先过掉这个障碍才行。

  • 直接通过反编译改包的方法

    缺点多多,不解释

  • 如果我们在真机,则可以修改根目录下的 default.prop 文件,将里
    面的 ro.debuggable =1。

    • 从 Google 官方网站下载到 boot.img;
    • 使用工具(abootimg,gunzip, cpio)把 boot.img 完全解开,获取到 default.prop;
    • 修改 default.prop;
    • 把修改后的文件重新打包成 boot_new.img;
    • 使用 fastboot 工具把 boot_new.img 刷入设备(fastboot
      flash boot boot_new.img);
  • ptrace 注入到 init 进程,然后修改内存中的default.prop文件属性值

    • 拷贝拷贝mprop/data/目录下;
    • ./mprop ro.debuggable 1;
    • getprop ro.debuggable;(查看此时 ro.debuggable 在内存
      中的值)
    • stop;start(重启 adbd 进程);

    我们在上面的第三步的时候查看好像没有改过来,分析原因为:该工具是通过 ptrace 修改 init 进程中的内存,然而 4.X 系统强制开启了 selinux;因此这个时候我们需要设置 Selinux 的状态.