脫殼 !EP(EXE PACK)1.2

0x1 查殼

將程序拖入!Exeinfo PE顯示如下。
在這裏插入圖片描述
程序拖入OD
在這裏插入圖片描述
看到第一行有pushad指令,利用ESP定律,執行一步F8。ESP定律是典型的堆棧平衡,因爲只要保存了所有寄存器的值都是要開始解密操作,等到解密完成後一般都會將所有初始化的寄存器值進行還原,即popad。所以我們只要在esp堆棧壓入的最後一個數據那裏設置硬件斷點(因爲堆棧式先進後出原則,esp現在指向的是壓棧的最後的數據,還原時肯定會先從這塊數據還原),當執行popad還原寄存器時的位置,一般這個指令位置都是解密後的數據。
所以我們右鍵選擇數據窗口跟隨
在這裏插入圖片描述
在esp指向的內存處設置硬件訪問斷點
在這裏插入圖片描述
讓程序繼續執行,發現斷到popad下一條指令位置,可以清楚的看到mov edx,0x004271b0這條指令。這很明顯是進入了用戶進程的代碼段了,按常理說就應該是個教大距離跳轉,這往往就是程序從加密殼區段跳轉到解密後的代碼段的過程,跳轉到用戶進程的OEP。
在這裏插入圖片描述
繼續向下執行,執行jmp edx指令,基本斷定該處爲OEP。
在這裏插入圖片描述
確定了OEP爲0x4271b0後,接下來該進行內存Dump
在這裏插入圖片描述
接下來檢查要Dump的內存OEP是否和目前OEP值相等,相等就點擊脫殼按鈕
在這裏插入圖片描述
Dump完成後接下來修復導入表
在這裏插入圖片描述
選擇當前正在運行的程序
在這裏插入圖片描述
修改解密後的OEP
在這裏插入圖片描述
點擊自動查詢IAT表,也就是導入地址表。
在這裏插入圖片描述
接下來獲取導入函數
在這裏插入圖片描述
轉儲導入函數表
在這裏插入圖片描述
在這裏插入圖片描述
轉儲之後會新生成一個脫殼文件,運行轉儲後的脫殼文件。脫殼成功。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章