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