android 另类技术,Android全局可调试(ro.debuggable = 1)的一种另类改法

本文介绍了一种不通过重打包boot.img而是通过patch init进程来改变Android系统的ro.debuggable属性为1的方法。通过分析init进程源码和汇编,找到并修改关键内存位置,然后利用ptrace系统调用实现动态修改,从而绕过只读属性的检查。这种方法在手机不重启的情况下保持生效,重启后需重新patch。
摘要由CSDN通过智能技术生成

网上流传比较多的,是重打包boot.img。读aosp的init进程源码,发现通过patch init进程也可以实现相同目的。

首先看一下init进程对ro只读属性的检查:

/* property_service.c */

int property_set(const char *name, const char *value)

{

...

pi = (prop_info*) __system_property_find(name);

if(pi != 0) {

/* ro.* properties may NEVER be modified once set */

if(!strncmp(name, "ro.", 3)) return -1; /* 如果是只读属性,不允许set,返回-1 */

__system_property_update(pi, value, valuelen);

}

...

从上面代码看出,如果将“ro.”改为“\0”即空字符串,即可绕过property_set对可读属性的检查。

同时为了防止误修改,我们查看init进程是否还有其它使用“ro.”字符串的地方,只找到一处,位于check_perms函数中:

/*

* Checks permissions for setting system properties.

* Returns 1 if uid allowed, 0 otherwise.

*/

static int check_perms(const char *name, unsigned int uid, uns

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值