第三方应用检测应用作假(都需要修改android系统源码)

本文介绍了如何在Android系统中修改内存信息,以将512M内存显示为1G,同时避免影响系统运行。通过修改`/proc/meminfo`文件内的数据,可以达到欺骗第三方检测软件的目的。然而,这种方法可能导致系统误判内存容量,影响低内存模式。为解决这个问题,提出仅修改显示层(TextView.java)而不改动内核的方案。此外,还阐述了如何通过获取TextView控件并替换其内容来改变第三方应用的检测结果显示。

1. 内存作假

客户要求将 512M内存的手机显示成1G,并且第三方检测软件检测也是1G

我们读内存信息都是读取手机中的/proc/meminfo文件

此文件在kernel目录下的/fs/proc/meminfo.c

static int meminfo_proc_show(struct seq_file *m, void *v)函数

seq_printf(m, "MemTotal:       %8lu kB\n"

字符串前,可以任意修改sysinfo里面的值

为了达到客户需要,添加了

i.totalram = i.totalram * 2;//此处是将实际ram大小扩大2倍,从512M变成1G
i.freeram = i.freeram*2;//总内存变大了,空闲内存也相应的改成2倍
cached = cached*2;  

三行就行了


这样改有一个问题

如果实际是512M内存,android系统中的配置ro.config.low_ram为true,系统按照低内存模式运行,如果按照上述修改,是连系统都欺骗了,系统认为实际内存是1G的,就不会按照低内存模式运行。当内存不够或运行耗费内存比较大的应用的时候,系统会杀掉一些进程

解决方法:

只修改显示的地方(textview.java),不修改内核,这样第三方显示内容我们可以随意控制

如果有疑问,可以联系作者,523474087@qq.com


2. 修改第三方应用的检测结果

只要是运行在手机上的应用,绝大部分显示都是使用textview控件(如果不是可以使用hierarchyvie

<think>好的,用户想修改Android源码来伪造设备的总存储空间大小。我需要先理清楚Android系统中存储空间信息是如何获取和管理的。 首先,用户可能需要了解存储空间的数据来源。Android系统中,存储信息通常通过StorageManagerService来管理,这个服务负责收集和提供存储设备的状态,比如总空间、可用空间等。所以,修改StorageManagerService相关的代码可能是一个方向。 接下来,查看StorageVolume和StorageManager的相关类。StorageVolume类可能包含存储卷的信息,比如总容量。如果能在这些类中找到获取总存储空间的方法,比如getTotalBytes(),就可以考虑修改返回值。例如,在StorageVolume的构造方法中,传入的总容量参数可能来自系统调用,或者直接计算得到,可以在这里注入一个伪造的值。 另外,系统属性也可能影响存储空间的报告。比如,某些设备可能会读取/system/build.prop中的属性,但这种方法可能不够底层,容易被检测到。更有效的方法可能是修改内核层的存储驱动,但这对用户来说可能难度较大。 还要考虑不同Android版本的差异。例如,Android 10及以上版本对存储管理有较大改动,可能需要调整不同的代码位置。用户需要确认目标Android版本,再查找对应的源码路径。 用户可能需要具体步骤,比如找到StorageManagerService.java,定位到计算总存储空间的方法,修改其返回值。或者,在StorageVolume的初始化时,将实际容量乘以一个系数,比如0.8,来显示较小的总空间。此外,可能还需要处理/data分区和/sdcard等不同存储位置的信息,确保所有相关的存储统计都被正确伪造。 还需要注意权限问题,修改系统服务需要系统签名或root权限。用户可能是在定制ROM,所以需要重新编译系统镜像并进行刷机测试。此外,修改后可能影响系统其他依赖存储空间的功能,比如安装应用时的空间检查,需要全面测试。 最后,提醒用户这种修改可能违反某些应用的服务条款,需谨慎使用。同时,建议参考相关的Android源码文档和开发者资源,确保修改的正确性。</think>修改Android系统存储空间信息需要深入理解存储管理系统的工作机制。以下是分步骤实现方案: 1. 定位关键系统服务 通过分析Android 10源码,存储空间计算的核心逻辑位于: $$StorageManagerService.java \ (frameworks/base/services/core/java/com/android/server/StorageManagerService.java)$$ 该服务通过调用Linux的statvfs()系统调用获取存储信息[^3] 2. 修改存储统计逻辑 在StorageManagerService中找到以下关键方法: ```java private long getPrimaryStorageSize() { final StorageVolume primary = getPrimaryVolume(); return primary.getPathFile().getTotalSpace(); } ``` 将其修改为: ```java private long getPrimaryStorageSize() { return (long)(getPrimaryVolume().getPathFile().getTotalSpace() * 0.8); // 伪造为实际容量的80% } ``` 3. 处理存储卷信息 在StorageVolume类中添加伪造系数: ```java // frameworks/base/core/java/android/os/storage/StorageVolume.java public long getTotalBytes() { return (long)(mTotalBytes * 0.8); // 全局存储容量系数 } ``` 4. 内核层修改(可选) 对于更底层的修改,可调整statvfs系统调用返回值: ```c // kernel/fs/statfs.c static int do_statfs_native(struct dentry *dentry, struct kstatfs *buf) { buf->f_blocks *= 0.8; // 修改block总数 buf->f_bfree *= 0.8; buf->f_bavail *= 0.8; } ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值