iOS ptrace 對(duì) APP進(jìn)行反調(diào)試處理

今天有一個(gè)需求,需要對(duì)項(xiàng)目進(jìn)行反調(diào)試處理 ?查看了很多的博客,終于找到了,大多寫的不是很全.我總結(jié)下.

一般使用

? ? ptrace_ptr(PT_DENY_ATTACH,0,0,0);來(lái)反調(diào)試捺氢。

首先要在工程的main.m類中導(dǎo)入頭文件#include<dlfcn.h>,

我查找了幾篇博客都沒(méi)寫這個(gè),導(dǎo)致了很多錯(cuò)誤.

然后就是代碼部分了

typedefint(*ptrace_ptr_t)(int_request,pid_t_pid,caddr_t_addr,int_data);

void* dlopen(constchar* pathname,intmode );

#if !defined(PT_DENY_ATTACH)

#define PT_DENY_ATTACH31

#endif? // !defined(PT_DENY_ATTACH)

voiddisable_gdb() {

? ? void* handle =dlopen(0,RTLD_GLOBAL|RTLD_NOW);

? ? ptrace_ptr_tptrace_ptr =dlsym(handle,"ptrace");

? ? ptrace_ptr(PT_DENY_ATTACH,0,0,0);

? ? dlclose(handle);

}

最后在 main 函數(shù)中調(diào)用

intmain(intargc,char* argv[]) {

?? ?/**防止GDB掛起*/

#ifndef DUBUG

? ? disable_gdb();

#endif

? ? @autoreleasepool {

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

? ? }

}

不過(guò)還有反反調(diào)試,可以破解反調(diào)試的.

1,ptrace這個(gè)函數(shù)很容易修改,幾種破解方式

運(yùn)行時(shí)期扁远,斷點(diǎn)ptrace酬荞,直接返回 :

通過(guò)tweak,替換disable_gdb函數(shù)

在二進(jìn)制文件中 粟瞬,修改 PT_DENY_ATTACH的31,改成 任意一個(gè)值同仆,如PT_ATTACH 0.

2,開(kāi)發(fā)者要達(dá)到反調(diào)試的目的,必然是在某個(gè)地方(大多數(shù)還是在main函數(shù))執(zhí)行了ptrace(PT_DENY_ATTACH, 0, 0, 0)裙品。所以反反調(diào)試的思路非常簡(jiǎn)單俗批,就是阻止這個(gè)執(zhí)行的發(fā)生。

既然lldb有-w這個(gè)選項(xiàng)來(lái)等待一個(gè)進(jìn)程的啟動(dòng)市怎,你可以使用lldb來(lái)捕獲到一個(gè)進(jìn)程的啟動(dòng)并在程序執(zhí)行到ptrace命令之前修改或忽略PT_DENY_ATTACH命令岁忘。

命令行執(zhí)行:? ~ sudo lldb -n "helloptrace" -w。這里用sudo是因?yàn)閘ldb的一個(gè)bug区匠,當(dāng)你讓lldb等待某個(gè)進(jìn)程的啟動(dòng)時(shí)不用sudo會(huì)出錯(cuò)干像。

找到上述項(xiàng)目的二進(jìn)制文件,拖到命令行中執(zhí)行驰弄,然后lldb就應(yīng)該能夠成功attach上去:

?? ~ sudo lldb -n"helloptrace"-w(lldb) process attach --name"helloptrace"--waitforProcess 8336 stopped* thread#1, stop reason = signal SIGSTOPframe#0: 0x0000000109522b9a dyld`__ioctl + 10dyld`__ioctl:->? 0x109522b9a <+10>: jae? ? 0x109522ba4? ? ? ? ? ? ? ; <+20>? ? 0x109522b9c <+12>: mov? ? rdi, rax? ? 0x109522b9f <+15>: jmp? ? 0x109522325? ? ? ? ? ? ? ; cerror? ? 0x109522ba4 <+20>: retExecutable modulesetto"/Users/gogleyin/Library/Developer/Xcode/DerivedData/helloptrace-bjtaxdebpzdyraaogpbcrihdgwku/Build/Products/Debug/helloptrace".Architecturesetto: x86_64h-apple-macosx.

創(chuàng)建如下斷點(diǎn):

(lldb) rb ptrace -s libsystem_kernel.dylib

continue繼續(xù)執(zhí)行后你就會(huì)在ptrace函數(shù)將要執(zhí)行時(shí)停下來(lái)麻汰。你可以用lldb來(lái)讓程序不執(zhí)行那個(gè)函數(shù)并提前返回:

(lldb) thread return 0

continue繼續(xù)執(zhí)行,一個(gè)反反調(diào)試就達(dá)成了戚篙!雖然程序進(jìn)入了ptrace函數(shù)五鲫,但你是告訴lldb讓它提前返回使得函數(shù)邏輯沒(méi)有得到執(zhí)行。

參考博客:

鏈接:http://www.reibang.com/p/75776311ae36

鏈接:http://www.reibang.com/p/13e90ec55234

鏈接:https://segmentfault.com/a/1190000012216003

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末已球,一起剝皮案震驚了整個(gè)濱河市臣镣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌智亮,老刑警劉巖忆某,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異阔蛉,居然都是意外死亡弃舒,警方通過(guò)查閱死者的電腦和手機(jī)酿炸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門杖剪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人触机,你說(shuō)我怎么就攤上這事颠区∠髅蹋” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵毕莱,是天一觀的道長(zhǎng)器贩。 經(jīng)常有香客問(wèn)我颅夺,道長(zhǎng),這世上最難降的妖魔是什么蛹稍? 我笑而不...
    開(kāi)封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任吧黄,我火速辦了婚禮,結(jié)果婚禮上唆姐,老公的妹妹穿的比我還像新娘拗慨。我一直安慰自己,他們只是感情好奉芦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布赵抢。 她就那樣靜靜地躺著,像睡著了一般仗阅。 火紅的嫁衣襯著肌膚如雪昌讲。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天减噪,我揣著相機(jī)與錄音短绸,去河邊找鬼。 笑死筹裕,一個(gè)胖子當(dāng)著我的面吹牛醋闭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播朝卒,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼证逻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了抗斤?” 一聲冷哼從身側(cè)響起囚企,我...
    開(kāi)封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瑞眼,沒(méi)想到半個(gè)月后龙宏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伤疙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年银酗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片徒像。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡黍特,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锯蛀,到底是詐尸還是另有隱情灭衷,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布旁涤,位于F島的核電站今布,受9級(jí)特大地震影響经备,放射性物質(zhì)發(fā)生泄漏拭抬。R本人自食惡果不足惜部默,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望造虎。 院中可真熱鬧傅蹂,春花似錦、人聲如沸算凿。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)氓轰。三九已至婚夫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間署鸡,已是汗流浹背案糙。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留靴庆,地道東北人时捌。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像炉抒,于是被迫代替她去往敵國(guó)和親奢讨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 調(diào)試器究竟是怎么工作的焰薄?如何阻止一個(gè)進(jìn)程attach(掛載)到app上以及又如何破解這些保護(hù)(所謂反調(diào)試和反反調(diào)試...
    blueshadow閱讀 7,042評(píng)論 8 10
  • 前提 眾所周知拿诸,iOS系統(tǒng)安全性非常高,很少出現(xiàn)漏洞塞茅,幾乎不會(huì)中毒亩码。大家認(rèn)為蘋果系統(tǒng)的封閉性會(huì)使iOS APP安全...
    小楓123閱讀 1,283評(píng)論 0 10
  • layout: wikititle: iOS逆向分析筆記categories: Reverse_Engineeri...
    超哥__閱讀 10,749評(píng)論 3 16
  • [轉(zhuǎn)]淺談LLDB調(diào)試器文章來(lái)源于:http://www.cocoachina.com/ios/20150126/...
    loveobjc閱讀 2,506評(píng)論 2 6
  • 我還是很喜歡你。 八月底了我從湖北到內(nèi)蒙古還不滿十天 四年了我們依舊糾纏不清藕斷絲連 2013年高一與你相遇凡桥,那時(shí)...
    深海鈴閱讀 180評(píng)論 0 0