记录一个通过在原代码插入断点指令的方式来达到反调试的方法.
参考 YK 大佬的文章
[原创] 2022 腾讯游戏安全竞赛安卓客户端决赛 writeup
注册异常处理函数,保存原函数指令后替换为 brk #0
1 | unsigned char bp[]={0x00,0x00,0x20,0xD4}; //brk #0 |
1 | void handler (int sig ,siginfo_t *siginfo , void * context){ |
1 | void test(){ |
在我测试的时候,发现并不是 100% 能成功卡住调试器,猜测是附加的过程中已经处理完断点流程
建议在 test 前调用 sleep 函数等待调试器附加完成