对X信的研究及修改(三)

发布者:iweizime
发布于:2018-01-03 00:02
 

本文讲一下调试技术。

开启调试权限

要获得一个APP的调试权限,方法有两种。

开启单个APP的调试权限

APP的AndroidManifest.xml里面,在<appilcation>标签里面添加android:debuggable="true"属性。这种方法只会获取这一个APP的调试权限。

<application android:allowBackup="false" android:debuggable="true" android:icon="@mipmap/running"
            android:label="@string/app_name" android:roundIcon="@mipmap/running"  
            android:supportsRtl="true" android:theme="@style/AppTheme">

开启整个设备的调试权限

使设备的ro.debuggable属性变为1,也就是当你执行getprop ro.debuggable的时候返回1

$ getprop ro.debuggable
1

由于ro.开头的属性是只读属性,所以即使用root权限执行setprop ro.debuggable 1也是无效的。
解决这个问题也有两个方法。

永久开启整个设备调试权限

这个ro.debuggable属性是保存在/default.prop里面的。文件内容大致如下

#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.miui.has_cust_partition=true
ro.secureboot.devicelock=1
ro.sys.sdcardfs=1
ro.oem_unlock_supported=1
ro.secure=1
security.perf_harden=1
ro.adb.secure=1
ro.allow.mock.location=0
ro.debuggable=0
ro.zygote=zygote64_32
pm.dexopt.first-boot=interpret-only
pm.dexopt.boot=verify-profile
pm.dexopt.install=interpret-only
pm.dexopt.bg-dexopt=speed-profile
pm.dexopt.ab-ota=speed-profile
pm.dexopt.nsys-library=speed
pm.dexopt.shared-apk=speed
pm.dexopt.forced-dexopt=speed
pm.dexopt.core-app=speed
dalvik.vm.image-dex2oat-Xms=64m
dalvik.vm.image-dex2oat-Xmx=64m
dalvik.vm.dex2oat-Xms=64m
dalvik.vm.dex2oat-Xmx=512m
ro.dalvik.vm.native.bridge=0
dalvik.vm.usejit=true
dalvik.vm.usejitprofiles=true
dalvik.vm.appimageformat=lz4
debug.atrace.tags.enableflags=0
persist.sys.timezone=Asia/Shanghai
#
# BOOTIMAGE_BUILD_PROPERTIES
#
ro.bootimage.build.date=Wed Nov 22 20:39:25 CST 2017
ro.bootimage.build.date.utc=1511354365
ro.bootimage.build.fingerprint=Xiaomi/sagit/sagit:7.1.1/NMF26X/V9.0.6.0.NCACNEI:user/release-keys
persist.sys.usb.config=none

这个文件不是位于正常的文件系统,要真正的修改这个文件只能修改boot.imgboot.img也可以用前面提到的APKDB进行解压及压缩。
image_1c2rfld1olgk129onduob4im29.png-28.6kB
解压后,更改default.prop中的ro.debuggable = 0ro.debuggable = 1。然后再使用APKDB进行压缩。
image_1c2rg39o7dkacn1sde1g9g122jm.png-24.9kB
压缩后会产生一个boot-new.img文件。将手机重启为fastboot模式,然后使用fastboot flash boot boot-new.img命令将boot-new.img刷到手机上。
这种方法会使ro.debuggable永久的变为1。重启后仍然有效。

暂时开启整个设备调试权限

可以看到上面的方法比较烦,而且一直开启调试权限好像有点不太安全。另一种方法是使用mprop工具,用root权限执行./mprop,然后在执行setprop ro.debuggable 1,就生效了,这种方法不用修改boot.img,但是在手机重启之后ro.debuggable会恢复为0。

 

不管用什么方法,获取了调试权限就可以了。

开始调试

调试需要用到Android Studiosmalidea插件。

安装插件

开始调试

  • 数据线连接好,准备好微信的反编译代码。
  • 打开Android Studio,点击File/New/Import Project,导入反编译好的代码。
  • Android Studio中,点击Tools/Android/Android Device Monitor。可以看到如下图,记住8700,这是调试端口。image_1c2rl80dc1cah16hh7i31gt31s6a1g.png-38.1kB
  • Android Studio中,点击Run/Edit Configurations,创建一个Remote调试配置,并把端口改为8700
    image_1c2rlj7g1vg61j5913tmng2la1t.png-63kB

接下来就可以设置断点,然后开始调试了。
image_1c2rlniagi30ud1n8mqqoibb2q.png-51kB


声明:该文观点仅代表作者本人,转载请注明来自看雪