­

在PE文件中簡單注入代碼,實現在啟動前彈窗

獲得的新知識:

1、kernel32.dll,user32.dll,ntdll.dll等一些dll在同一個PC環境下的映射到虛擬內存基址是一樣的。
2、在win8以上系統上,更改PE文件的入口點要大於SizeOfHeaders(在可選文件頭中),否則會報錯無法運行。

1、實現原理

PE可選文件頭有一個AddressOfEntryPoint,更改這個值指向自己代碼,執行完自己代碼再跳轉到原來入口點。

2、實驗過程

1、位元組的代碼
shellcode: 6A 00 6A 00 6A 00 E8 __ __ __ __ E9 __ __ __ ___
調用messagebox過程,壓棧調用

這裡用了IAT表,為了簡單起見直接使用user32.dll中messagebox的地址
e8指令是call指令,後面要補充相對messagbox的地址,e9是jmp指令,要補充相對入口點地址。


將代碼注入這個程序

用x32dbg查messagebox地址是0x76D160660。程序入口點為0x00401140。shellcode入口點設置為0x00401030

用wenhex寫入shellcode

再把程序入口點修改了

最後,完美運行

Tags: