在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
再把程序入口點修改了
最後,完美運行