项目地址:mem_crc
温馨提示:不要将此模块嵌入内核哦~
再温馨提示,并不是刷了模块就能隐藏环境,如果只是为了找一件隐藏环境的模块可以跳过本文了
再再温馨提示,本人设备内核版本是6.1,模块只在5.1和6.1上测试过,其他版本若不适配,加载之后会死机自动重启,正常重启完就没事了,说明模块不适配你的内核
模块主要包含三个功能
一. 文件重定向,下一篇会讲额外的用处
二. 过滤/proc下的文件内容,包含mounts,mountinfo,mountstats,maps,smaps
三. 隐藏ptrace痕迹
正如提示中所说,这个模块可以用于隐藏环境,但也不是开袋即食的,需要你了解了检测点才能帮助你隐藏
第一个功能:IO重定向
使用方法:
其中uid是作用域,只对该uid所对应的app生效,src为原文件路径,dst为目标文件路径(如果uid是0,那就全局重定向)
第二个功能:内容过滤
使用方法:
keyword是你要过滤掉的关键词
第三个功能:隐藏ptrace痕迹
使用方法:
uid依旧代表作用域,只对该uid所对应的app生效
上述是此模块提供的一种通信方式,即通过字符设备通信,用于日常使用(但是也不是很方便,我在写ui了,应该开学前能写完qaq),但是/dev下的文件通常对普通进程不可见,如果使用frida,xposed等工具注入app进程,我们是无法正常在目标进程里使用模块帮助我们处理一些痕迹的,所以模块还提供了一种额外的通信方式,使用者可以通过调用libc.so的char *getcwd(char *buf, size_t size)函数将命令写入,例如在frida中使用
示例:
示例:
示例:
正如模块介绍所言,初衷是为了绕过crc校验,然后写着写着就偏了一些。也没啥好展望的,ui已经在写了,现在用起来还是有点反人类,为了应对其他检测点,后续还会完善的(虽然是一坨但先端上来qwq),有什么难处理的检测点或者使用时遇到问题欢迎一起交流~ 过两天开源,mail: shuangxve@gmail.com
meizu21Pro:/ $ su
meizu21Pro:/
meizu21Pro:/ $ su
meizu21Pro:/
meizu21Pro:/ $ su
meizu21Pro:/
meizu21Pro:/ $ su
meizu21Pro:/
meizu21Pro:/ $ su
meizu21Pro:/
meizu21Pro:/ $ su
meizu21Pro:/
function callGetcwd(buf = '') {
var getcwd = new NativeFunction(
Module.getExportByName('libc.so', 'getcwd'),
'pointer',
['pointer', 'int']
);
var buffer_size = 256;
var buffer;
if (buf !== '') {
buffer = Memory.allocUtf8String(buf);
buffer_size = buf.length + 1;
} else {
buffer = Memory.alloc(buffer_size);
}
try {
getcwd(buffer, buffer_size);
} catch (e) {
console.log("[!] Error: " + e);
return null;
}
}
callGetcwd("CMD:STATUS")
function callGetcwd(buf = '') {
var getcwd = new NativeFunction(
Module.getExportByName('libc.so', 'getcwd'),
'pointer',
['pointer', 'int']
);
var buffer_size = 256;
var buffer;
if (buf !== '') {
buffer = Memory.allocUtf8String(buf);
buffer_size = buf.length + 1;
} else {
buffer = Memory.alloc(buffer_size);
}
try {
getcwd(buffer, buffer_size);
} catch (e) {
console.log("[!] Error: " + e);
return null;
}
}
callGetcwd("CMD:STATUS")
| 类型ID |
类型名称 |
描述 |
数据格式 |
| 1 |
PATH_MAPPING |
路径映射 |
MAP:uid:src_path:dst_path |
| 2 |
SINGLE_PATH |
单个路径(或关键词) |
PATH:path |
| 3 |
PTRACE_UID |
PTRACE用户ID |
PTRACE:uid |
| 命令 |
功能 |
使用示例 |
返回信息 |
CMD:STATUS |
显示系统状态统计 |
CMD:STATUS |
显示总条目数和各类型数据统计 |
CMD:HELP |
显示帮助信息 |
CMD:HELP |
显示所有可用命令和格式说明 |
| 命令 |
功能 |
使用示例 |
说明 |
CMD:DUMP |
打印所有数据到dmesg |
CMD:DUMP |
输出所有类型的所有数据 |
CMD:DUMP:TYPE:N |
打印指定类型的数据 |
CMD:DUMP:TYPE:1
CMD:DUMP:TYPE:2
CMD:DUMP:TYPE:3 |
N为类型ID (1-3) |
CMD:LIST:TYPE:N |
列出指定类型条目及索引 |
CMD:LIST:TYPE:1
CMD:LIST:TYPE:2
CMD:LIST:TYPE:3 |
显示类型索引和全局索引的对应关系 |
| 命令 |
功能 |
使用示例 |
说明 |
CMD:CLEAR |
清空所有数据 |
CMD:CLEAR |
删除所有类型的所有数据 |
CMD:CLEAR:TYPE:N |
清空指定类型数据 |
CMD:CLEAR:TYPE:1
CMD:CLEAR:TYPE:2
CMD:CLEAR:TYPE:3 |
N为类型ID (1-3) |
| 命令 |
功能 |
使用示例 |
说明 |
CMD:REMOVE:INDEX:N |
删除指定全局索引的条目 |
CMD:REMOVE:INDEX:5
CMD:REMOVE:INDEX:10 |
N为全局索引号 |
CMD:REMOVE:TYPE:type_id:type_index |
删除指定类型的第N条 |
CMD:REMOVE:TYPE:1:0
CMD:REMOVE:TYPE:2:3
CMD:REMOVE:TYPE:3:1 |
删除type_id类型的第type_index条数据 |
MAP:uid:src_path:dst_path
MAP:uid:src_path:dst_path
MAP:1000:/data/app:/system/app
MAP:0:/sdcard:/mnt/sdcard
MAP:1001:/data/user/1001:/data/data
MAP:1000:/data/app:/system/app
MAP:0:/sdcard:/mnt/sdcard
MAP:1001:/data/user/1001:/data/data
PATH:path
PATH:/system/bin/su
PATH:/data/local/tmp
PATH:/system/etc/hosts
PATH:/system/bin/su
PATH:/data/local/tmp
PATH:/system/etc/hosts
PTRACE:uid
PTRACE:1000
PTRACE:0
PTRACE:2000
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2025-9-19 11:52
被Yangser编辑
,原因: 开源了,挂下项目地址