一般来说,条件1难以满足,开发者不希望自己开发的APK文件被其他人修改调试,因此通常不会存在android:debugable= "true"的情况,这个属性值通常为"false"或者不存在这个属性。可以通过反编译修改Androidmanifest.xml配置清单文件的方式来使APK文件满足该条件,修改完成之后再编译成新的APK文件,但要考虑反编译的成本和难易程度。在这个过程中可能遇到加壳的APK文件或反编译工具无法对APK实现完全反编译的情况。即使完成了对目标APK的修改和重编译,也有可能会遇到签名验证的问题。
条件2修改后,init进程会解析这个default.prop文件,然后把属性信息解析到内存中,给所有app进行访问使用。所以在init进程的内存块中是存在这些属性值的。那么这时候可以利用进程注入技术,使用ptrace注入到init进程,将内存中的这些属性值修改。只要init进程不重启,这些属性值会起作用。
对条件2进行修改,一般有两种方式,一种是直接修改文件,另外一种是修改内存。改文件需要使用刷机技术。修改内存的步骤如下:第一步,将mprop文件(工具在网盘中地址是......)拷贝到/data/目录下;第二步,利用命令./mprop ro.debuggable 1将./mprop中的ro.debuggable的值修改为1,需要可执行权限;第三步,通过getprop ro.debuggable查看此时内存中的ro.debuggable值;第四步,通过stop和start命令重启adbd进程。adbd进程是adb的组成部分之一,包括adb服务端、adb客户端和adbd进程。
因此,如果想要对真机进行调试,一般通过内存修改方式对条件2进行修改。
2.刷机刷机会有一定概率使真机变成“砖头”,刷机存在风险,谨慎进行该操作。刷机不是必须的操作,其根本目的是将真机的ro.debuggable值修改成1,如果真机支持APP的调试,可以不进行刷机。
ROM(Read Only Memory,只读存储器)和 RAM(Random Access Memory,随机访问存储器)是两种常见的计算机存储器。它们的含义和区别如下:
ROM:只读存储器,是一种只能读取而不能写入的存储器。通常在生产过程中将数据写入 ROM 芯片中,并在计算机或其他设备上使用。RAM:随机访问存储器,是一种可以读取和写入的存储器。计算机内存就是一种 RAM。
从内容来看,ROM 中的数据是固定的,无法修改;RAM 中的数据可以动态修改。从可读性来看,ROM 中的数据可被计算机访问,但无法被用户修改或删除;RAM 中的数据既可被计算机访问,也可被用户修改或删除。从速度来看,ROM 的读取速度较快,但写入速度非常慢;RAM 的读取和写入速度都很快。从容量来看,ROM 的容量通常较小,最多几百 MB;RAM 的容量通常较大,最多可达数 GB。
刷机之前通常要获取ROM包,ROM包一般分为两种,一种是官方ROM包,另外一种是第三方的ROM包。一般官方ROM包刷机操作较为简单,第三方的ROM包需要进行bootloader解锁才能进行刷机。bootloder解锁可以使用刷机精灵来完成,但刷机精灵未必支持所有的手机机型。ROM包可进一步分为线刷包和卡刷包。线刷是指通过数据线连接,通过bootloader/fastboot模式刷机。卡刷是指将ROM包放至SD卡中,使用recovery模式进行刷机操作。
在卡刷的刷机之前,会使用到双清的概念,双清指清除用户数据和缓存。一般需要在recovery模式中执行双清操作。
nexus4刷机包下载地址为https://www.romzhijia.net/romlist/188_0_0_0。刷机包需要和对应的手机及型号匹配,推荐使用官方的刷机包。下面为线刷刷机的一般流程:
第一步,手机进入到fastboot模式。对于nexus4手机来说,同时按住开机按键和手机音量“下”键即可进入fastboot模式。也可通过刷机精灵进入到fastboot模式。
完成刷机之后需要安装抓xposed模块de.robv.android.xposed.installer.apk和xposed框架JustTrustMePlus-debug.apk。同时安装smzy_kingroot.apk文件依此获取真机的root权限。刷机时需要使用以下工具:fastboot.zip是对应版本的SDK-platform软件开发工具,occam-ktu84p-factory-b6ac3ad6.tgz刷机时使用的刷机包,android_bootimg文件夹即为刷机工具包。
第二步,解压刷机包和fastboot.zip。将两者的解压文件放在同一目录下,即occam-ktu84p-factory-b6ac3ad6文件夹下的occam-ktu84p文件夹下,不能存在中文路径。
第三步,双击其中的image-occam-ktu84p.zip文件,修改其中的boot.img文件。将boot.img文件放到android_bootimg文件夹下,利用解包工具booting.exe对boot.img进行修改。