📄 pespin 1.0 unpacker.txt
字号:
/*
=====================================================================
PESpin v1.0 unpacker script for OllyScript plugin (by SHaG)
=====================================================================
Script requires Windows XP.
Script works good only with ASM and BC++ programs. Delphi
and VC++ will not be properly fixed using OllyDump plugin.
For those programs check my other scripts and read tutorial.
Script will fix IAT redirection, code redirection and find
stolen OEP code. Before use, ignore ALL exceptions!
[ haggar ]
=====================================================================
*/
var x
var A
var B
var C
msg "Script runs on Win XP only. Ignore ALL exceptions!"
//Break on GetTickCount
gpa "GetTickCount","kernel32.dll"
findop $RESULT,#C3#
bp $RESULT
esto
bc eip
rtu
//Find killer timer - last thing in packer
mov A,eip
sub A,0D00
find A,#F?720D8D850660271E2D8417E71DFFD0EB01#
add $RESULT,1
bp $RESULT
//Find IAT redirection jump
mov B,$RESULT
sub B,127
findop B,#FF6424FC#
bp $RESULT
esto
bc eip
findop eip,#E8?????FFF#
mov B,eip
sub $RESULT,1
noping:
fill B,1,90
cmp B,$RESULT
inc B
jne noping
esto
bc eip
mov A,eip
add A,2
fill A,0D,90
add A,16D
bp A
esto
bc eip
sto
cmt eip,"Start of stolen OEP mixed with junk."
//Finding and fixing redirected code
var addr
var Redir
var buffer
var temp
var Value
mov addr,401000
search:
findop addr,#E???????FF# //Find posible CALL/JMP to PEheader.
cmp $RESULT,0
je exit
mov addr,$RESULT
mov buffer,addr
add addr,1
mov Redir,[addr] //Check does it realy jumps to PEheader.
add Redir,addr
and Redir,4FF000
cmp Redir,400000
jne search
mov Redir,[addr] //Find that redirected address.
add Redir,addr
add Redir,4
mov Value,[Redir] //Check is there JMP (E9) opcode.
and Value,0FF
cmp Value,0E9
je JumpsCalls //If not, just copy all bytes. If yes, goto Jumps fixing.
add Redir,1 //Copy bytes, PUSH opcodes.
mov Value,[Redir]
sub addr,1
fill addr,1,68
add addr,1
mov [addr],Value
mov addr,buffer
jmp search
JumpsCalls: //Fix jumps/calls.
sub addr,1
mov temp,[addr]
cmp temp,0E9
je Jump
fill addr,1,0E8
jmp Call
Jump:
fill addr,1,0E9
Call:
add Redir,1
add addr,1
mov Value,[Redir]
add Value,Redir
add Value,4
sub Value,addr
sub Value,4
mov [addr],Value
mov addr,buffer
jmp search
exit:
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -