ptrace&sysctl 雙重反反調(diào)試

1、創(chuàng)建一個(gè)動(dòng)態(tài)庫Inject,引入fishhook及sysctl、MyPtraceHeader頭文件

2、創(chuàng)建一個(gè)繼承自NSObject的類 如 XCInject

3、編碼

#import "XCAntDebug.h"

#import "XCPtrance.h"

#import <sys/sysctl.h>

@implementation XCAntDebug

static dispatch_source_t timer;

//檢測是否被調(diào)試

BOOLisDebugger() {

? ? //控制碼

? ? int name[4];//里面放字節(jié)碼,查詢信息

? ? name[0] =CTL_KERN;//內(nèi)核查看

? ? name[1] =KERN_PROC;//查詢進(jìn)程

? ? name[2] = KERN_PROC_PID;//傳遞的參數(shù)是進(jìn)程的ID(PID)

? ? name[3] =getpid();//PID的值

? ? struct kinfo_proc info; //接受進(jìn)程查詢結(jié)果的結(jié)構(gòu)體

? ? size_tinfo_size =sizeof(info);//結(jié)構(gòu)體的大小

? ? interror =sysctl(name,sizeof(name)/sizeof(*name), &info, &info_size,0,0);

? ? assert(error == 0);//0就是沒有錯(cuò)誤,其他就是錯(cuò)誤碼

? ? return((info.kp_proc.p_flag&P_TRACED) !=0);

}

voiddebugCheck(){

? ? timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0));

? ? dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0.0 * NSEC_PER_SEC);

? ? dispatch_source_set_event_handler(timer, ^{

? ? ? ? if(isDebugger()) {

? ? ? ? ? ? //? ? ? ? exit(0);

? ? ? ? ? ? NSLog(@"有debugServer");

? ? ? ? }else{

? ? ? ? ? ? NSLog(@"無debugServer");

? ? ? ? }

? ? });

? ? dispatch_resume(timer);

}

+ (void)load {

? ? NSLog(@"XCAntDebug *************");

? ? debugCheck();

? ? ptrace(PT_DENY_ATTACH, 0, 0, 0);

}

@end

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

相關(guān)閱讀更多精彩內(nèi)容

  • 1、導(dǎo)入頭文件 #import "ViewController.h"#import @interface View...
    yxc木易星辰閱讀 483評(píng)論 0 0
  • Dispatch Sources 現(xiàn)代系統(tǒng)通常提供異步接口,允許應(yīng)用向系統(tǒng)提交請求,然后在系統(tǒng)處理請求時(shí)應(yīng)用可以繼...
    YangPu閱讀 388評(píng)論 0 0
  • Dispatch Sources 現(xiàn)代系統(tǒng)通常提供異步接口,允許應(yīng)用向系統(tǒng)提交請求,然后在系統(tǒng)處理請求時(shí)應(yīng)用可以繼...
    好雨知時(shí)節(jié)浩宇閱讀 3,914評(píng)論 2 5
  • 在逆向和保護(hù)的過程中,總會(huì)涉及到反調(diào)試和反反調(diào)試的問題,這篇文章主要是總結(jié)一下幾種常見的反調(diào)試手段。 當(dāng)我們上線一...
    含笑州閱讀 2,943評(píng)論 1 4
  • 一般來講,一個(gè)線程一次只能執(zhí)行一個(gè)任務(wù),執(zhí)行完成后線程就會(huì)退出。如果我們需要一個(gè)機(jī)制,讓線程能隨時(shí)處理事件但并不退...
    這是個(gè)方塊閱讀 301評(píng)論 0 1

友情鏈接更多精彩內(nèi)容