Python灰帽子筆記一

2021-08-04 03:22:19 字數 579 閱讀 4261

動態鏈結庫本身是一些經過編譯的二進位制檔案,之在執行時才會被連線進主程序。在windows下這些二進位制檔案被稱為動態鏈結庫(dll),而在linux下這些庫檔案被稱為共享物件(so,shared object)。無論哪種平台,這些二進位制檔案都是通過匯出函式名稱的方式來呈現它們所包含的函式。這些由鏈結庫匯出的函式名稱可以被解析成記憶體中實際的函式的位址。

函式呼叫約定(calling convention)描述了如何以正確的方式呼叫某些特定型別的函式,包括了函式引數在棧上的分配順序、有哪些引數壓棧,哪些引數將通過暫存器傳入、在函式返回時函式棧的**方式等。兩種最基本的函式呼叫約定:cdecl和stdcall。cdecl呼叫約定規定函式的引數列表以從右向左的順序入棧,並由函式的呼叫者負責清除棧上的引數。這種呼叫約定在x86架構上被絕大多數c編譯器使用。stdcall呼叫約定為win32 api使用。兩種呼叫約定都使用eax暫存器存放函式返回值。

結構體(structure)和聯合體(union)是兩種極為重要的資料型別,無論是在微軟的win32 api中,還是linux下的libc庫中都被廣泛使用。聯合體中包含的所有成員變數共享同乙個記憶體位址,通過這種變數儲存方式,聯合體可以賦予同乙個值不同型別的表現形式。

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...

灰帽子Python 學習記錄 5

waitfordebugevent 這個函式是等待除錯事件,每次捕捉到的時候就返回乙個debug event 然後同樣用notepad 做實驗,記錄每次的eventcode enter pid 75160 openprocess successful,handle 504 event code 3 ...