-
-
[分享]某企业壳frida检测绕过(二)
-
发表于:
2025-3-11 15:41
4969
-
看到有人在绕过检测时出现了问题,于是乎我跑过去看了一下 受害者是 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) {
}
});
|

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

[注意]看雪招聘,专注安全领域的专业人才平台!