功能實現ios
向
hello world
程序中注入代碼,實現正常顯示hello world並實現彈框。windows
因爲PEview
不能編輯,故使用功能更強大的CFF explorer
。函數
address of entry point
爲新插入節所在的位置。address of entry point
empty space
,軟件會自動改變文件的相應信息如numberofsections
、sizeofimage
addressofentry
改成它。保存後,將該節的屬性改成可執行。
spa
ollydbg
添加這一新節的內容ollydbg
插件multimate assembler
,下載地址:http://rammichael.com/downloads/multiasm.rar ,直接將對應版本.dll
複製到ollydbg.exe
文件所在目錄便可。messagebox
。;彙編添加的位置 <0044D000> push 10;messagebox的參數 push @caption push @text push 0; NULL call 0x75F08860; messagebox進程的地址 jmp 0x00411046;返回原先的`addressofentry` 要加上imagebase 00400000 @caption: "end sector\0" @text: "Team number:4; Team member:XXX\0"
messagebox
函數的地址。因爲大部分軟件都會有界面,所以會調用user32.dll
文件,於是能夠運行messagebox
函數,從user32.dll
中獲取地址的代碼以下:#include<iostream> #include<windows.h> using namespace std; typedef void(*MYPROC)(LPTSTR); HINSTANCE LibHandle = LoadLibrary("user32"); MYPROC ProcAddr = (MYPROC)GetProcAddress(LibHandle, "MessageBoxA"); int main() { cout << ProcAddr << endl; system("pause"); return 0; }
F8
可進行步進調試(或按箭頭直接執行程序),若代碼正確,則會正確跳轉到messagebox
函數,最終跳回本來的addressofentry
。