我們即將構建的偵錯程式應當具備兩種基本的能力:開啟乙個可執行檔案並使之以自身子程序的形式執行起來的能力,以及附加乙個現有程序的能力。
建立除錯會話的兩種基本途徑:建立乙個全新的程序與附加到乙個現有的執行程序。建立乙個全新的程序可以在目標程序尚未有機會執行**之時便取得全權控制。附加則意味著錯過了程式初始部分的**。
我們通常所說的cpu狀態資訊是對於執行緒而言
硬體斷點的實現過程涉及控制除錯暫存器中某些特定位的取值。
我們只需反置dr7暫存器中相對應的位置啟用斷點,此外我們還應該通過dr7設定硬體斷點的型別與長度
硬體斷點一旦被命中便會觸發乙個int1(或稱為單步事件)事件,因此我們需要在主除錯結構中加入乙個相應的單步事件處理例程,以便於我們的主除錯迴圈結構呼叫。
設定記憶體斷點的本質涉及修改相關記憶體頁的訪問許可權,以使其具備「保護頁」的特性。當cpu試圖訪問這一記憶體區域時,乙個guard_page_execution異常事件便會被丟擲。
導致非法記憶體操作的程式錯誤根源包括從緩衝區溢位到不當方式下的null指標處理以及其他型別的程式錯誤。
pydbg框架有功能,名為攝取程序快照。這個特性使你可以在某乙個時刻徹底凍結住目標程序,並訪問這個程序在這一時刻的所有記憶體資料內容,然後再恢復這個程序的執行狀態。
Python灰帽子筆記一
動態鏈結庫本身是一些經過編譯的二進位制檔案,之在執行時才會被連線進主程序。在windows下這些二進位制檔案被稱為動態鏈結庫 dll 而在linux下這些庫檔案被稱為共享物件 so,shared object 無論哪種平台,這些二進位制檔案都是通過匯出函式名稱的方式來呈現它們所包含的函式。這些由鏈結...
Python灰帽子筆記二
通用暫存器 暫存器可以被認為是位於cpu上的小型儲存器。cpu獲取資料的最快方式是直接訪問暫存器。在x86指令集中,乙個cpu具有8個通用暫存器 eax,edx,ecx,esi,edi,ebp,esp,ebx。每乙個都被安排了特定用途。cpu在執行某些指令時需要特點的暫存器協作以高效地完成其指令執行...
灰帽子python 讀書筆記 1
交上去坐等答辯畢業,於是閒來看看這本書。書裡的 用python 2.5 win32系統,我手頭的是python3.4 win64系統,所以會有點不一樣,就當做是讀後實踐的考驗了。在這裡記錄一下遇到的問題,也方便後來參考吧。廢話不多說,第一章,匯入ctypes並呼叫printf。書中 from cty...