记录一次frida反调试
2023-05-05 本文已影响0人
萌木盖
前言
首先是我有个app,我就不说是谁了,里面的反调试是libmsaoaidsec.so实现的。
然后看到一个文章bilibili反调试
有两个问题
- 1是写的没那么详细
- 2是ThumbWriter 未定义 报找不到的异常
找方法偏移地址
他写的我就不重复写了
主要就是找地址
image.png
image.png
image.png
偏移地址分别为1AEE4,1A574
找pthread_create创建的地址
打开ida 搜索pthread_create , 双击
image.png
交叉引用
image.png
image.png
看最后两个
image.png
sub_7DE0就是pthread_create,上面的箭头熟悉吧1AEE4 刚才找的便宜地址 ,说明就是这里。
另一个同理,那就nop掉这两个就可以了。
找nop 地址
image.png1A5B0+2A8 = 0x1A858 1B88C+28 = 0x1B8A8
对原论坛代码进行修改
function bypass(){
var module = Process.findModuleByName("libmsaoaidsec.so")
// 32位
// nop(module.base.add(0x10AE4))
// nop(module.base.add(0x113F8))
// 64位
nop(module.base.add(0x1A858));
nop(module.base.add(0x1B8A8));
}
nop方法 ThumbWriter方法会提示找不到 64要用Arm64Writer 且putNop要写四个 32位写两个
function nop(addr) {
Memory.patchCode(ptr(addr), 4,
code=> {
// 64位
const cw = new Arm64Writer(code, { pc: ptr(addr) });
// 32位
// const cw = new ThumbWriter(code, { pc: ptr(addr) });
// 32位putNop两次 64位要putNop四次
cw.putNop();
cw.putNop();
cw.putNop();
cw.putNop();
cw.flush();
});
}
为啥个数有区别呢?
image.png
结语:
还有其他方式也能过 我就卖关子了 :)奸笑