1. 程式人生 > 其它 >反彙編EXE新增一個啟動時的訊息框

反彙編EXE新增一個啟動時的訊息框

反彙編EXE新增一個啟動時的訊息框

最近有一個要修改PE檔案的需求,就先從EXE檔案下手吧,我也是初學一個小時而已,不過之前接觸過一點彙編罷了,這篇文章算是個DEMO,主要的思路是將其反彙編得到彙編程式碼後,然後手動修改他的邏輯首先跳轉到彈框區域再跳轉回來去執行原來的程式碼,相關的工具有ollydbg,以及要修改的一個xp系統自帶的掃雷軟體,還有參考的文章,都會在文末給出。

描述

首先準備好要用到的OD工具和掃雷這個軟體。

使用OD將掃雷匯入之後,自動定位到了入口點。

之後選擇前2行將其Ctrl + C複製,主要是為了空出來足夠的位置讓我們完成指令的修改。

然後返回到OD,我們需要找到HEX

資料是00的地方,通常也就是尾部位置存在的空白位置,注意我們是不能直接插入一些指令的,只能跳過去執行了我們想要的程式碼之後再跳回來執行原始碼,我們可以使用右擊-查詢-二進位制字串,多輸入幾個0點選搜尋即可,因為在掃雷中前邊也有一堆00資料段,我們可以使用Ctrl + L,不斷搜尋下一個。

我們定位到尾部的00位置後,我們多選擇一些行,選中幾十行,右擊-編輯-使用00填充。

現在我們隨便空幾行,我是在01004A65這個地址開始修改,可以直接Ctrl + G,定位到這個位置。

我們選定這個位置後,開始打一個空格,嘗試修改一下彙編程式碼,填入PUSH 0

之後我們再佔用一下位置,填寫一下如下的程式碼,這個01004AB5

是我隨意寫的,只是為了佔一個位置。

接著我們需要找到彈窗的地址,右擊-查詢-名稱,在彈出的視窗點一下名稱,讓他排一下序,我們找到&USER32.MessageBoxW,之後右擊-複製到剪貼簿-地址。

之後我們定位到01004A73這個位置,填入CALL DWORD PTR DS:[010010B8],在DS:[010010B8]中的地址就是剛才複製的地址。

這樣彈出訊息框的部分就完成了,四個push加一個call就是彈訊息框的,中間的兩個push第一個就是傳標題第二個就是傳內容的,現在我們依舊再寫兩行語句進行佔位,這主要是為了後邊啟動邏輯方面用,也就是為了最初的時候我們複製的啟動時定位的那兩行使用。

之後我們再空出來幾行程式碼,在01004A91地址上右擊-編輯-二進位制編輯。

UNICODE區域填入Title,然後儲存。

同樣空幾行位置,在01004AE3新增一個Hello World

之後我們回到01004A67,在此處開始新增彙編,雙擊或者按空格都可以,在01004A67位置修改為PUSH 01004A91,之後接著修改,在下一個位置也就是01004A6C修改為PUSH 01004A9F,也就是將剛才兩個新增的字串放置於此處引用。

緊接著我們修改啟動的邏輯,點選右邊的EIP定位到入口位置。


在最初的時候我們選擇了前2行位置的程式碼進行了複製,現在我們同樣選中前2行,然後右擊-編輯-用NOP填充。

然後在第一個位置也就是01004A65,填入JMP 01004A65,也就是我們剛才找到的編輯過的00段的第一個位置。

然後我們再回到01004A65,從01004A79開始按照順序將原來的2行彙編填充進去,就是在最初的時候我們複製到記事本的程式碼,出現了多個nop的話我們就對於要編輯的從01004A79開始重新右擊-編輯-用00填充,然後再接著填寫,注意最後我們還有一個jmp跳回的操作,也就是在上圖的nop後的第一條語句地址即01003E28

到這基本就差不多了,思路就是從入口開始執行我們自己的程式碼,然後執行完了再跳轉回去繼續執行原來的程式碼。之後我們右擊-編輯-複製所有修改到可執行檔案。

右擊-儲存檔案,選是,即可儲存,注意這邊還是要另存為一個檔名,用來和原來的有所區分。

儲存過後,執行該檔案即可看到效果。

參考

http://www.downcc.com/soft/24420.html
https://www.xiazaiba.com/html/3979.html
https://www.52pojie.cn/thread-217068-1-1.html