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

上一篇文章介紹了用OD反彙編EXE新增一個啟動時的訊息框,這篇文章也是實現同樣的效果,這邊主要的思路還是將其反彙編得到彙編程式碼後,然後手動修改他的邏輯首先跳轉到彈框區域再跳轉回來去執行原來的程式碼,相關的工具有IDA,以及要修改的一個xp系統自帶的掃雷軟體。本來想著用OD做就可以了,然後同學告訴我IDA功能更多一些,我瞭解了一下確實更加方便我完成需求,但是網路上關於IDA相關的教程還是比較少,我也是折騰了好一陣子才完成了修改,而且我也覺得有必要記錄一下對於IDA的相關操作。

描述

首先準備好要用到的軟體也就是IDA和掃雷這個軟體,特別建議使用IDA Pro 7.5版本,在細節方面尤其是返回和前進也就是Ctrl + ZCtrl + Y用起來很舒服,當然其他版本主要功能都是有的。

首先用IDA開啟掃雷,一切以預設設定即可,然後進入就是程式碼的函式執行流程了。

此時按空格就能夠切換到程式碼,按Ctrl + E進入入口點。

我們複製一下01003E23地址的push offset stru_1001390,找個地方存起來,後邊會用得到。

然後我們將滑鼠游標移動到01003E28也就是下一行,然後點選鍵盤n,為其起一個本地的名字loc_01003E28

我們轉移到Hex View-1視窗,然後往下找到一塊00的位置,都是在檔案的末尾區域,我們右擊有一個與IDA -ViewA同步的選項也要勾上,這樣我們就可以在開啟IDA程式碼視窗的區域同步到這塊地址了。

我們要從01004A71開始寫,我們可以按G鍵,進行跳轉,要跳轉到01004A71位置。

可以看到這個位置是被摺疊的,我們選中後可以按D鍵將其展開,然後我們再次跳轉到01004A71位置。

此時我們開始編寫字串,我們首先需要將字串轉成HEX,直接搜尋HEX線上轉換即可找到,我們將Title進行轉換即可看到54 69 74 6C 65

我們選中好01004A71行後,點選edit - Patch program - Change byte

在這裡我們輸入剛才轉換的HEX編碼,注意MessageBoxW是使用兩個位元組的UTF-8編碼的,不能直接使用一個位元組的ASCII編碼值,所以剛才我們編寫的54 69 74 6C 65要寫成54 00 69 00 74 00 6C 00 65 00,當然在Hex View1裡直接右擊修改也是可以的。

我們再空出來幾行,在01004A80這邊再寫一個,我們轉換Hello WorldHEX編碼48 65 6c 6c 6f 20 57 6f 72 6c 64

我們自行加入00,這便成了48 00 65 00 6c 00 6c 00 6f 00 20 00 57 00 6f 00 72 00 6c 00 64,當然這邊太長了,不夠的位置我們需要重新輸入,當然如果直接使用Hex View1就直接輸入就可以了。



此時我們需要為這個字串起名字,游標定位到01004A71N鍵,為其起一個名字,同樣游標定位到01004A80,同樣點N鍵為其起名,我為其分別起了個titlecontent

然後我們再空幾行,我們將滑鼠定位到01004A9A這個位置,然後點選edit - Patch program - Assemble,為其輸入命令,我們按序輸入以下的命令。

push 0
push title
push content
push 0
CALL DWORD PTR DS:[MessageBoxW]

還記得之前在一開始就複製的01003E23地址的push offset stru_1001390,我們在這裡將程式碼複製下來push stru_1001390,注意沒有offset,我們在這邊繼續追加這行,另外在最初我們還添加了一個本地的名字loc_01003E28,我們還需要追加一個jmp loc_01003E28

此時我們選中這塊位置,按P鍵來建立函式。

我們選中這個sub_1004A9A,點選N鍵為這個函式重新起個名字message_box

我們按Ctrl + E跳轉到入口點,我們選中01003E23這一行,我們修改這個彙編程式碼為jmp message_box

現在我們已經完成了操作,思路就是從入口開始執行我們自己的程式碼,然後執行完了再跳轉回去繼續執行原來的程式碼,現在我們將所做修改儲存到原始檔Edit - Patch program - Apply patches to input file,選擇要注入的檔案以及是否需要備份即可。

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

Blog

https://blog.touchczy.top/#/

參考

https://tool.lu/hexstr/
http://www.downcc.com/soft/24420.html
http://www.xz7.com/downinfo/347986.html