Android 「动态分析」打开调试开关的三种方法

应用的动态调试是Android逆向的大类,而打开可调试开关则是动态调试的第一步,总结一下打开开关的三种方法;

AndroidManifest.xml

最常规的方法,拿到一个应用后,直接反编译,在AndroidManifest.xml的application中添加android:debuggable="true"字段,在回编译、签名、安装、然后进行动态调试;

<application android:allowBackup="true" android:debuggable="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme">

mprop

修改系统调试的总开关字段,由于系统文件只可读,强制修改重新编译镜像再刷入设备又很复杂还不安全,这里可以注入init进程,修改内存中的ro.debuggable字段数据为1【默认为0,即不启用】;

因为Android系统初始化时,init进程会解析系统属性文件【ro.debuggable在/default.prop文件中】,然后将其保存到内存中去,以便给所有应用提供服务,所以在init进程的内存块中是存在这些属性的;

https://github.com/wpvsyou/mprop

https://bbs.pediy.com/thread-215311.htm

https://bbs.pediy.com/thread-246081.htm

http://blog.leanote.com/post/iunknow/%E5%8A%A8%E6%80%81%E8%B0%83%E8%AF%95so

[Go0s]: ~/Security/_Tools/Android/mprop/armeabi-v7a ✗ master*
➜  adb push mprop /data/local/tmp              
mprop: 1 file pushed. 1.6 MB/s (17712 bytes in 0.011s)
[Go0s]: ~ 
➜  adb shell
shell@hammerhead:/ $ cat default.prop | grep debug                             
ro.debuggable=0
shell@hammerhead:/ $ getprop ro.debuggable
0
shell@hammerhead:/ $ cd /data/local/tmp
shell@hammerhead:/data/local/tmp $ su
root@hammerhead:/data/local/tmp # ./mprop ro.debuggable 1   
properties map area: b6f7a000-b6f9a000
00000000  08 8d 00 00 19 01 00 00 50 52 4f 50 ab d0 6e fc  ........PROP??n?
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
……
root@hammerhead:/ # cat default.prop | grep debug                              
ro.debuggable=0
root@hammerhead:/ # getprop ro.debuggable                                      
1
在目录下找到指定cpu型号的mprop文件拷贝到设备目录下,然后修改权限为可执行的,然后直接运行三条命令即可:

# 修改init进程中的ro属性判断逻辑
/data/local/tmp# ./mprop
# 然后修改系统调试属性值
/data/local/tmp# setprop ro.debuggable 1
# 恢复init默认逻辑,之后就无法再修改ro属性了
/data/local/tmp# ./mprop -r

http://www.520monkey.com/archives/1283

需要注意,虽然已经修改了内存中的值,但需要重启adbd进程才能重新加载所有应用的连接信息,因为它是adb的守护进程;

重启adbd进程,直接stop;start即可;

root@hammerhead:/data/local/tmp # stop;start

BDOpener

这是一款Xposed的模块,用于修改程序的debugable选项,同时也支持开启备份选项,方便数据转移;

https://security.tencent.com/index.php/opensource/detail/17

下载应用,直接在Xposed中激活,然后重启手机;

验证

使用第二、三种方法都比第一种方法快,但两者优缺点也很明显,第二种方法重启机子后需要重新利用mprop再次修改内存属性值,而第三种方法比较永益,激活模块后重启一次机器,之后可不再担心;

利用DDMS可以直观看到手机系统中所有已打开应用,含系统应用均可以被调试,也可以使用adb jdwp来查看所有可调式应用的进程id,发现也有很多;

同时可通过adb shell dumpsys package xxx来看xxx应用的包信息,flags字段中是没有debuggable属性值的,但这个应用此时是可以被调试的;

 

原文链接:

https://www.bodkin.ren/index.php/archives/533/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值