国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

ptrace頭文件 如何使用ptrace函數(shù)來獲得多線程的一致看法?

如何使用ptrace函數(shù)來獲得多線程的一致看法?有一天,我在Mac下調(diào)試了一個(gè)應(yīng)用程序。我剛掛了GDB,在網(wǎng)上找到的。似乎應(yīng)用程序添加了ptrace()函數(shù)來阻止調(diào)試。網(wǎng)上有一種突破的方法。加載程序后

如何使用ptrace函數(shù)來獲得多線程的一致看法?

有一天,我在Mac下調(diào)試了一個(gè)應(yīng)用程序。我剛掛了GDB,在網(wǎng)上找到的。似乎應(yīng)用程序添加了ptrace()函數(shù)來阻止調(diào)試。網(wǎng)上有一種突破的方法。加載程序后,在ptrace方法的頂部和底部斷點(diǎn)處中斷ptrace,然后運(yùn)行它。然后我將詳細(xì)介紹ptrace方法并查看堆棧。然后我將在這里輸入return并輸入C繼續(xù)運(yùn)行

您可以使用指針指向函數(shù),如下所示:

int func(int x)/*聲明函數(shù)*/

int(*f)(int x)/*聲明函數(shù)指針*/

f=func/*在Linux中將func函數(shù)的第一個(gè)地址分配給指針f,每當(dāng)進(jìn)程調(diào)用dlopen打開動(dòng)態(tài)鏈接庫時(shí),它都會(huì)相應(yīng)地維護(hù)進(jìn)程的一個(gè)鏈接,并在進(jìn)程中添加新加載庫地址空間的基本信息,然后更新符號。因此,只要遍歷鏈接找出要查找的項(xiàng)的地址范圍,就可以找到動(dòng)態(tài)庫的名稱,然后減去進(jìn)程加載的起始地址,得到動(dòng)態(tài)庫中的相對地址。這就是dladdr的原理。雖然工作中遇到的操作系統(tǒng)不是Linux,但是glibc的實(shí)現(xiàn)是相似的。因?yàn)樗乔度胧降?,所以更簡單。鏈接的第一個(gè)地址保存在老蘇而且這個(gè)鏈接也是一個(gè)記錄動(dòng)態(tài)庫信息的特殊結(jié)構(gòu),比Linux下的hodgepodge要簡單得多:)所以我用ptrace直接掛載目標(biāo)進(jìn)程,peek保存鏈接第一個(gè)地址的數(shù)據(jù)更方便,然后一個(gè)接一個(gè)地查詢~~~這樣我就不用再擔(dān)心了我已經(jīng)厭倦了遠(yuǎn)程調(diào)試。找到相對地址后,我直接使用GDB中的Infoline,