阻止 GDB 依附

GDB 是大多數(shù) hackers 的首選,阻止 GDB 依附到應用的常規(guī)辦法是:

#importint main(int argc, charchar *argv[])

{

#ifndef DEBUG

ptrace(PT_DENY_ATTACH,0,0,0);

#endif

@autoreleasepool {

return UIApplicationMain(argc, argv, nil, NSStringFromClass([WQMainPageAppDelegate class]));

}

}

但遺憾的是,iPhone 真實的運行環(huán)境是沒有 sys/ptrace.h 拋出的。雖然 ptrace 方法沒有被拋出, 但是不用擔心,我們可以通過 dlopen 拿到它。

dlopen: 當 path 參數(shù)為 0 是,他會自動查找

$LD_LIBRARY_PATH, $DYLD_LIBRARY_PATH, $DYLD_FALLBACK_LIBRARY_PATH 和當前工作目錄中的動態(tài)鏈接庫。

#import#importtypedef 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);

}

int main(int argc, charchar *argv[])

{

#ifndef DEBUG

disable_gdb();

#endif

@autoreleasepool {

return UIApplicationMain(argc, argv, nil, NSStringFromClass([WQMainPageAppDelegate class]));

}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容