是否有一個可用的C頭文件,它定義了函數調用,可以用它來代替手動爲每個要調用的調用寫出typedef?定義動態調用函數的Windows API頭文件
typedef int (WINAPI *pMessageBoxW)(HWND, LPCWSTR, LPCWSTR, UINT)
以上是我發現自己不斷寫出來的東西。
我依稀記得Zeus Trojan源代碼中包含了一些東西,它定義了大量的windows函數,但是我試圖創建一個合法的windows程序。即使我們把許可證問題放在一邊(儘管不太可能有人會起訴我),但包括特洛伊代碼在內的某些東西,即使是良性的,也顯得有點不合時宜。
我一直在尋找通過GitHub上carberp和宙斯代碼和整個
#define pSetFilePointer pushargEx< DLL_KERNEL32, 0xEF48E03A, 27 >
進來一個在carberp叫GetApi.h文件,這是非常卑鄙,不是我感興趣的東西。這就是所謂的代碼中的其他地方,但參數從未嚴格定義。我假設作者編寫了一個編譯器指令,按照「只信任我們」這樣的語句來說明pushargEx,正如其名字所示,它使用重載來指定許多參數,並將其推送到具有特定偏移量的DLL句柄。
如果這是我將不得不做,以簡化我的編碼,這不是最糟糕的事情不斷,但肯定我不是找一個頭文件中指定的第一個
typedef int (WINAPI *pMessageBoxW)(HWND, LPCWSTR, LPCWSTR, UINT)
typedef int (WINAPI *pMessageBoxA)(HWND, LPCSTR, LPCSTR, UINT)
typedef int (WINAPI *pSetFilePointer)(HANDLE, LONG, PLONG, DWORD)
...
...
是否有一個「只信任我」編譯器或宏指令我可以/應該用來做到這一點?我真正想要做的就是在學習新東西的同時動態地包含許多WINAPI函數調用 - 同時保持合理的乾淨代碼。
在談論這個時,我應該使用什麼具體措詞?我感覺好像是我正在使用的詞語,而不是我想要達到的目標,這限制了我找到關於此主題的更多信息的能力。
MessageBox只是一個例子,但運行時分辨率確實允許更小的文件大小。我試圖潛入功能鉤子(這不一定需要這樣的東西),shellcode,但我現在正在處理的是與位置無關的代碼和可執行文件,據我所知不支持在此鏈接莊園。我知道這也是進行一些反調試/分析的手段,但上面的carberp代碼對於這樣的事情會更實用。 –
我懷疑運行時鏈接導致文件較小。我期望的是相反的。無論如何,這些都不會改變你問的問題的答案。 –
如果導入通過序號而不是名稱解析,則運行時鏈接可以減小文件大小。通常不適用,但可以在特定情況下收縮可執行文件。 @Nahum:可執行文件已經是位置獨立的。否則,ASLR不起作用。模塊將函數入口點存儲爲*相對虛擬地址*,在解析導入時,它們只是作爲加載程序的模塊句柄的偏移量添加。 – IInspectable