什么是GDB?
所有發布的iOS設備都是基于ARM架構的。我們開發iOS應用的時候編寫的Objective-C代碼會首先轉換成ARM匯編,然后轉換成機器指令。對ARM匯編語言和使用GDB調試有很好掌握的話,攻擊者是能夠在運行時解密Objective-C代碼甚至修改代碼的。
在安全評測的時候這個GDB掛起是必不可少的一個安全評測協議。
網上已經有了阻止GDB掛起的代碼。【念茜的博客】給出了安全版的解決方案。目前我們的app中用過了。已經通過安全評測這一項測試。
看在Main.m文件中的代碼如下:
6348037C-48B4-4CD0-A77C-F0A79C446854.png
代碼編寫流程:
1:引入頭文件如下:
#import <dlfcn.h>
#import<sys/types.h>
2:添加對應函數如下:
typedef int(*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);
#if!defined(PT_DENY_ATTACH)
#define PT_DENY_ATTACH 31
#endif // !defined(PT_DENY_ATTACH)
void disable_gdb() {
void* handle = dlopen(0, RTLD_GLOBAL |RTLD_NOW);
ptrace_ptr_t ptrace_ptr = dlsym(handle,"ptrace");
ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);
dlclose(handle);
}
3:在工程的mian.m文件的main函數里頭就要這樣寫了:
int main(int argc, char *argv[]) {
/**防止GDB掛起*/
#ifndef DUBUG
disable_gdb();
#endif
@autoreleasepool {
return UIApplicationMain(argc, argv, nil,NSStringFromClass([AppDelegate class]));
}
}
如有問題可添加我的QQ:1290925041
還可添加QQ群:234812704(洲洲哥學院)
歡迎各位一塊學習,提高逼格!
也可以添加洲洲哥的微信公眾號
更多消息
更多信iOS開發信息 請以關注洲洲哥 的微信公眾號,不定期有干貨推送:
這里寫圖片描述