📄 peshield 0.25 oep finder #1.txt
字号:
/*
This script finds OEP for programs packed with PEShield v0.25 (I havn't tested for other versions)
IMPORTANT!
You have to hide OllyDbg from IsDebuggerPresent manually BEFORE you run this script (There is plugins that do that.)
You have to let OllyDbg handle all exceptions (options --> Debugging Options --> Exceptions --> Uncheck all except KERNEL32)
When the script is finished, dump and rebuild IAT for unpacked program.
If you find any bugs in my script, please let me know. You can reach me on Efnet (IRC) with nickname Harding
Have fun!
*/
msg "Have you read the IMPORTANT part in peshield.osc? If not, do so BEFORE you run peshield.osc. -Harding"
//Variables
var codeSize
var codeBase
var codeBaseAddCodeSize
var tempEIP
var i
//Execute on breakpoint (and exception)
eob breakHandler
eoe breakHandler
//Gets information about a module to which the specified address belongs.
//"info" can be MODULEBASE, MODULESIZE, CODEBASE or CODESIZE (if you want other info in the future versions plz tell me).
//Sets the reserved $RESULT variable (0 if data not found).
GMI eip, CODEBASE
mov codeBase, $RESULT
//Gets information about a module to which the specified address belongs.
//"info" can be MODULEBASE, MODULESIZE, CODEBASE or CODESIZE (if you want other info in the future versions plz tell me).
//Sets the reserved $RESULT variable (0 if data not found).
GMI eip, CODESIZE
mov codeSize, $RESULT
//Fix codeBaseAddCodeSize
mov codeBaseAddCodeSize, codeBase
add codeBaseAddCodeSize, codeSize
//Shift F9
esto
first:
//Shift F9
esto
second:
//Set memory breakpoint on write. Size is size of memory in bytes.
bpwm codeBase, codeSize
//Shift F9
esto
third:
//Shift F9
esto
fourth:
//Clear memory breakpoint.
bpmc
//Save current EIP
mov tempEIP,eip
//Set breakpoint on address addr with condition cond.
bpcnd eip,"ECX==1"
//Shift F9
esto
fifth:
//Clear unconditional breakpoint at addr. (And conditional)
bc tempEIP
//Set memory breakpoint on read. Size is size of memory in bytes.
bprm codeBase, codeSize
lastBreakHandler:
//Are we in CODE section? If yes, then we're at OEP, if not then Shift F9
cmp eip,codeBaseAddCodeSize
jb finish
esto
breakHandler:
add i,1
cmp i,1
je first
cmp i,2
je second
cmp i,3
je third
cmp i,4
je fourth
cmp i,5
je fifth
jmp lastBreakHandler
finish:
//Clear memory breakpoint.
bpmc
//Exit script
ret
//Written by Harding
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -