1. 程式人生 > >手動脫簡單的虛擬機殼(themida)

手動脫簡單的虛擬機殼(themida)

脫殼

1.它有反虛擬機 在vm中要修改下配置 配置代碼在最後面
2.查找什麽寫的
技術分享圖片
3.找OEP 有下斷到 GetVersion 或者找 sub esp,0x58 這裏要到401000那去搜索 不然找不到 有可能同時先要程序運行起來
直接搜索沒有
技術分享圖片
定位到0x401000也沒有
技術分享圖片
運行進來就有了
技術分享圖片
點下發現還是條花指令同時 不像OEP (因為它偷取了OEP)
技術分享圖片
nop一條 就是oep
技術分享圖片
通過對比沒有偷取 OEP的程序發現少了不少指令
但只要還原倆條就可以了 (一定要還原 不然修改iat後運行不了)
技術分享圖片
就裏又要註意了不能現在就修復IAT 因為程序跑起來的因此 在OEP下斷 一般下硬件的 斷到入口再 修復
技術分享圖片
發現軟件斷點去了
技術分享圖片
那就下硬件的 斷下來了
技術分享圖片
改下指令
技術分享圖片
修復 IAT 這裏又是一個坑不能簡單的填代碼段的結束(不然修復時程序直接報錯)
技術分享圖片
到401000查看所有模塊間的調用 填最後一個函數的地址
技術分享圖片
還有一點是填新的IAT時也要註意這個程序 填439000也報錯 填438000可以
技術分享圖片
修改IAT後到這裏就可以dump了 OEP為 94a0
技術分享圖片
再修復導入表 有一個點要註意的是大小填多點 這是我自己填的1000默認為500
技術分享圖片
脫殼完成 破解就比較簡單了
技術分享圖片
在vmx文件最後加上 脫完要改回來 因為變卡了
配置:

isolation.tools.getPtrLocation.disable="TRUE"
isolation.tools.setPtrLocation.disable="TRUE"
isolation.tools.getVersion.disable="TRUE"
isolation.tools.setVersion.disable="TRUE"
monitor_control.disable_directexec = "TRUE"
monitor_control.disable_chksimd = "TRUE"
monitor_control.disable_ntreloc = "TRUE"
monitor_control.disable_selfmod = "TRUE"
monitor_control.disable_reloc = "TRUE"
monitor_control.disable_btinout = "TRUE"
monitor_control.disable_btmemspace = "TRUE"
monitor_control.disable_btpriv = "TRUE"
monitor_control.disable_btseg = "TRUE"

usb:0.present = "TRUE"
usb:0.deviceType = "hid"
usb:0.port = "0"
usb:0.parent = "-1"

手動脫簡單的虛擬機殼(themida)