Anti Debug 小試牛刀

2021-06-19 12:53:41 字數 3231 閱讀 2438

本文整理了日常生活中遇到的一些anti-debug技術,除非特殊說明,均適用於mac/ios開發

作為第一篇正式博文,會不定期更新,謝謝大家.

123

4567

89

#define pt_deny_attach  31

#include

intmain

()

程式正常執行,會輸出hello

但是程式載入到gdb中,就不能正常執行,輸出如下:

gnu gdb (gdb) 7.6

license gplv3+: gnu gpl version 3 or later this is free software: you are free to change and redistribute it.

there is no warranty, to the extent permitted by law. type "show copying"

and "show warranty" for details.

for bug reporting instructions, please see:

.(gdb) file ./anti-debug-1.o

reading symbols from /users/ioshack/desktop/anti-debug-1.o...(no debugging symbols found)...done.

(gdb) r

starting program: /users/ioshack/desktop/anti-debug-1.o

[inferior 1 (process 7639) exited with code 055]

(gdb) q

看,程式直接退出了。

通過在程式中設定訊號處理函式,並主動觸發中斷,也可以檢測是否被除錯,先來看**:

123

4567

891011

1213

1415

#include 

#include

void

handler

(int

signo

)int

main

(int

argc

,const

char

*argv

)

通過主動執行__asm__("int3"),我們觸發了乙個sigtrap的中斷訊號,然後我們又安插了乙個訊號處理函式,來捕獲這個中斷。

正常執行的結果輸出如下:

ioshackdemacbook-pro:desktop ioshack$ ./anti-debug-2.o

you can do something here!

always say: hello

而如果在除錯狀態中,我們觸發的中斷訊號會被偵錯程式捕獲,是不會執行我們的異常處理函式的。

gnu gdb (gdb) 7.6

license gplv3+: gnu gpl version 3 or later this is free software: you are free to change and redistribute it.

there is no warranty, to the extent permitted by law. type "show copying"

and "show warranty" for details.

for bug reporting instructions, please see:

.(gdb) file ./anti-debug-2.o

reading symbols from /users/ioshack/desktop/anti-debug-2.o...(no debugging symbols found)...done.

(gdb) r

starting program: /users/ioshack/desktop/anti-debug-2.o

program received signal sigtrap, trace/breakpoint trap.

0x0000000100000f24 in main ()

(gdb) c

continuing.

always say: hello

[inferior 1 (process 7686) exited normally]

這樣,我們可以在訊號處理函式中乾一些事情,嘻嘻。

再來介紹一種專門針對lldb偵錯程式的檢測手段,**如下:

123

4567

891011

#include 

#include

#include

#include

intmain

()

程式正常執行,輸出:

ioshackdemacbook-pro:desktop ioshack$ ./anti-debug-lldb.o 

everything is fine

程式載入到lldb中,輸出如下:

ioshackdemacbook-pro:desktop ioshack$ lldb anti-debug-lldb.o

current executable set to 'anti-debug-lldb.o' (x86_64).

(lldb) r

process 7701 launched: '/users/ioshack/desktop/anti-debug-lldb.o' (x86_64)

you are being traced by lldb

process 7701 exited with status = 0 (0x00000000)

注意,這種方法對gdb不管用。

所有的檢測手段在你拿到解密的二進位制檔案之後都是可以破解的,這是乙個矛與盾的雙面。

沒有最好,只有更好。

檢測的方式有很多,遇到了再慢慢補充,希望本博文對你有所幫助,再次感謝你的耐心閱讀。

大牛們手下留情,多給點鼓勵啊~~

boost graph lib 小試牛刀

最近要做社會網路的社群發現,發現用bgl能減少不少 量。經過一番調研發現bgl封裝的很牛叉,dijkstra等演算法統統具備,奈何自己對泛型程式設計不太熟,遇到問題還是很糾結。primer泛型程式設計 演算法部分和stl原始碼分析接下來有時間一定要讀下。下面僅以鄰接鍊錶和自定義節點為例 typede...

tsung小試牛刀

linux環境 centos5.5 1 tsung安裝 tar zxvf tsung 1.4.2.tar.gz configure make sudo make install 安裝後執行 which tsung,如果顯示 usr bin tsung 表明安裝成功 2 設定 如果沒有 tsung 目...

Linux小試牛刀

由於最近單位的電腦最是中毒,連伺服器也沒能倖免 什麼瑞星 卡巴,在現在的網路環境下無一倖免,均有被 秒殺 的危險 所以想到了用linux來做檔案伺服器來減少病毒對單位區域網的影響。其實想用linux還做伺服器的想法也由來以久了。早在幾個月之前我的電腦在四秒之內被感染了熊貓燒香之後就有個這個想法了。而...