1、创建一个动态库Inject,引入fishhook及ptrace头文件
2、创建一个继承自NSObject的类 如 XCInject
3、编码
#import "XCInject.h"
#import "XCPtrace.h"
#import "fishhook.h"
//定义指针 ,保存原来的函数地址
int (*ptrace_p)(int _request, pid_t _pid, caddr_t _addr, int _data);
//定义自己的函数
int myPtrace(int _request, pid_t _pid, caddr_t _addr, int _data) {
if (_request != PT_DENY_ATTACH) {
return ptrace(PT_DENY_ATTACH, _pid, _addr,_data);
}
return 0;
}
//如下方法即可对简单的ptrace 反调试进行破解
//对于ptrance反调试1进行该动态库注入后,调试APP不闪退
+ (void)load {
struct rebinding ptranceBd;
ptranceBd.name = "ptrace";
ptranceBd.replacement = myPtrace;
ptranceBd.replaced = (void *)&ptrace_p;
struct rebinding rebinds[] = {ptranceBd};
rebind_symbols(rebinds, 1);
}
@end
网友评论