IDA反匯編EXE添加一個啟動時的消息框
上一篇文章介紹了用OD反匯編EXE添加一個啟動時的消息框,這篇文章也是實現同樣的效果,這邊主要的思路還是將其反匯編得到匯編代碼后,然后手動修改他的邏輯首先跳轉到彈框區域再跳轉回來去執行原來的代碼,相關的工具有IDA,以及要修改的一個xp系統自帶的掃雷軟件。本來想着用OD做就可以了,然后同學告訴我IDA功能更多一些,我了解了一下確實更加方便我完成需求,但是網絡上關於IDA相關的教程還是比較少,我也是折騰了好一陣子才完成了修改,而且我也覺得有必要記錄一下對於IDA的相關操作。
描述
首先准備好要用到的軟件也就是IDA和掃雷這個軟件,特別建議使用IDA Pro 7.5版本,在細節方面尤其是返回和前進也就是Ctrl + Z和Ctrl + 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 World到HEX編碼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就直接輸入就可以了。




此時我們需要為這個字符串起名字,光標定位到01004A71點N鍵,為其起一個名字,同樣光標定位到01004A80,同樣點N鍵為其起名,我為其分別起了個title和content。



然后我們再空幾行,我們將鼠標定位到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
