-
-
[分享]某企业壳frida检测绕过(二)
-
发表于:
2025-3-11 15:41
8302
-
某企业壳frida检测绕过(二)
看到有人在绕过检测时出现了问题,于是乎我跑过去看了一下 受害者是 x邮x投 同样的厂商加固


下载了一份APP 然后首先跑了一下clone 脚本 报错信息如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var clone = Module.findExportByName('libc.so', 'clone');
Interceptor.attach(clone, {
onEnter: function(args) {
if(args[3] != 0){
var addr = args[3].add(96).readPointer()
var so_name = Process.findModuleByAddress(addr).name;
var so_base = Module.getBaseAddress(so_name);
var offset = (addr - so_base);
console.log("===============>", so_name, addr,offset, offset.toString(16));
}
},
onLeave: function(retval) {
}
});
|

于是乎 准备再拿一份libc来瞧瞧 发现原来是32位 哦豁 那这就可能是问题所在呢 昨天的受害者是64的 老办法 拿到libc 瞧一瞧 pthread_create 如何调用clone函数 创建线程




至此 发现实现 与 64位 不一样 于是改改代码 也就能over了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | var clone = Module.findExportByName('libc.so', 'clone');
Interceptor.attach(clone, {
onEnter: function(args) {
// args[3] 子线程的栈地址。如果这个值为 0,可能意味着没有指定栈地址
if(args[3] != 0){
var addr = args[3].add(48).readPointer()
var so_name = Process.findModuleByAddress(addr).name;
var so_base = Module.getBaseAddress(so_name);
var offset = (addr - so_base);
console.log("===============>", so_name, addr,offset, offset.toString(16));
}
},
onLeave: function(retval) {
}
});
|

阔以看见 成功的打印出来了 线程信息 剩下的 就是 干掉它
最后 看结果

传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!