手動脫簡單的虛擬機殼(themida)
阿新 • • 發佈:2018-05-29
脫殼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文件最後加上 脫完要改回來 因為變卡了
配置:
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)