您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何使用ESP技巧進行解包可執行文件,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
加殼與解包
加殼軟件可以幫助你對可執行文件進行壓縮,就跟zip文件差不多。一般來說,當你在使用zip文件時,需要手動進行解壓縮。但是對于加殼來說,它會在可執行文件的代碼中添加一部分不會被壓縮的“運行時封裝器”代碼。當你運行這個可執行文件時,這部分未被封裝的代碼將會對可執行文件中其他已被封裝的惡意代碼進行解包并運行。
如何識別這種加殼的惡意軟件呢?其中一種方法就是檢查其中的字符串信息,但是加殼后的可執行文件中并沒有大量字符串可以查看。你也可以對代碼中import的類和庫進行分析,但加了殼的可執行文件并不會顯示這部分內容,這樣可以增加逆向分析的難度。因此,為了對加殼的惡意軟件成功進行逆向分析,我們需要對其一直調試直到發現了未壓縮的代碼為止,然后對導出的可執行文件代碼進行分析。
這里可以使用“ESP技巧”,也就是ESP寄存器。我們可以利用這種技術在ESP寄存器中設置硬件斷點,當我們轉移到改斷點時,也就是到達了程序的入口點(OEP)。接下來,我們就可以將剩下的可執行文件導出,并得到解包后的可執行文件代碼了。
我們專門開發了一個小程序來演示如何手動解包可執行文件,你可以點擊【這里】獲取。其實這就是一個奪旗小游戲,當你找到了正確的密碼之后,你需要輸入并嘗試拿到Flag。你可以在Radare2中通過比對字符串數據來尋找到密碼,或者你也可以直接使用“strings”命令來搜索,但如果程序加了殼的話,又該怎么辦呢?因此,我們這里使用了免費的UPX封裝器來對代碼進行封裝加殼,它的解包過程也比較簡單,所以它是一款非常適合學習的工具。祝大家好運!
當我們使用rabin2運行封裝的可執行程序并查看import信息時,我們可以看到這里幾乎沒有什么信息,而且字符串也看不出什么字面意思:
$rabin2 -i UPX_Proj_Packed.exe [Imports] 0010x0040d03c NONE FUNC KERNEL32.DLL_LoadLibraryA 002 0x0040d040 NONE FUNC KERNEL32.DLL_ExitProcess 003 0x0040d044 NONE FUNCKERNEL32.DLL_GetProcAddress 0040x0040d048 NONE FUNC KERNEL32.DLL_VirtualProtect 0010x0040d050 NONE FUNC msvcrt.dll__iob $
很明顯,這是一個經過封裝的程序。我們可以PEiD工具來查看它所使用的封裝器信息:
你可以看到,這里使用的是UPX封裝器。當然了,這種封裝器拆封起來非常簡單,你也可以直接下載UPX拆封程序來進行解包。但我們這里要演示的是如何手動實現這個過程,所以接下來我們在x64dbg中啟動程序,然后按下F9,直到我們到達應用程序的入口點位置。X64dbg會直接用“EntryPoint”對入口點進行標記,這里我們使用了pushal指令對入口點設置識別符。
下一步,我們需要按下F8或F7鍵,或者按下“step over”或“step into”按鈕。然后需要右鍵點擊右側的ESP寄存器,并選擇“Follow in Dump”。
接下來,我們需要選擇x64dbg底部導出數據的前四個字節,然后在DWord中設置一個硬件訪問斷點。
接下來,我們就可以按下F9鍵來重新運行應用程序了,當運行到硬件端點位置時,程序將暫停運行。我們在斷點后設置了一個popal指令,并用它來表示我們仍在正確的執行路徑上。我們還可以看到,結尾部分跳轉到的0x0040c483就是解包后可執行文件的結尾部分。
跳過jmp指令之后,我們就到達了程序的入口點位置。
下一步就是要對導出的應用程序進行分析了,按下CTRL+A鍵并開始分析匯編代碼,這樣可以確保到處的匯編代碼不會出現錯誤。現在,我們可以按下CTRL+I鍵或在插件欄選擇Scylla來開始導出程序。
現在,點擊“IAT Autosearch”按鈕來讓程序自動幫我們找出可執行程序的導入地址表(IAT)。點擊了“Get Imports”按鈕之后,我們將會得到這個可執行文件引用的第三方庫。
現在,點擊“Dump”按鈕并保存導出的可執行程序。但是當我們運行這個可執行文件時,卻出現了下圖所示的錯誤:
這是因為解包后的可執行文件中不包含之前可執行文件中的IAT,所以我們還需要對其進行修復。返回Scylla界面,點擊“Fix Dump”按鈕,選擇剛才導出的可執行文件,并點擊確定。修復成功后,可執行文件的文件名后面會加上一個“SCY”,現在它就可以正常運行了。
然后重新在Rabin2中打開這個解包后的可執行程序,并嘗試導出其中的設置信息。
如果你使用密碼“this_is_password”來運行我們的應用程序,你將會看到如下所示的界面:
恭喜你成功拿到了Flag!
以上就是如何使用ESP技巧進行解包可執行文件,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。