📄 hyingv0.7x.txt
字号:
/*
//////////////////////////////////////////////////
Hying'pelock unpack script(only for v0.7x) v0.1
Author: loveboom
Email : loveboom#163.com
OS : WinXP sp1,Ollydbg 1.1,OllyScript v0.92
Date : 2005-3-20
Action: 停在Stolen Code处
Config: Ignore all exceptions
Note : If you have one or more question, email me please,thank you!
//////////////////////////////////////////////////
*/
var addr
var GMHaddr
var jtoaddr
var count
var patchiataddr
var patchiatsize
var cbase
var csize
var siataddr
var dllname
var tmpval
#log
start:
msgyn "设置:忽略全部异常,继续吗?"
cmp $RESULT,1
je lbl1
ret
lbl1:
dbh
gmi eip,CODEBASE
mov cbase,$RESULT
gmi eip,CODESIZE
mov csize,$RESULT
gpa "CreateFileA","kernel32.dll"
mov addr,$RESULT
find addr,#C21C00# //查找返回处
mov addr,$RESULT
bp addr
esto
lbl2:
bc addr
gpa "GetModuleHandleA","kernel32.dll"
mov GMHaddr,$RESULT
bprm $RESULT,FF
esto
bpmc
lbl3:
/*
查找命令
MOV BYTE PTR DS:[EDI],68
MOV DWORD PTR DS:[EDI+1],ESI
MOV BYTE PTR DS:[EDI+5],0C3
ADD EDI,6
MOV DWORD PTR SS:[ESP-4],EDI
*/
find eip,#C60768897701C64705C383C706897C24FC#
cmp $RESULT,0
je lblabort
mov addr,eip
mov jtoaddr,$RESULT
fill eip,1,e9
sub jtoaddr,eip
sub jtoaddr,5
inc addr
mov [addr],jtoaddr //改成push api ret 的方式
lblcanti1:
gpa "ZwSetInformationThread","ntdll.dll"
cmp $RESULT,0
je lbleros
asm $RESULT,"ret 10"
lblgetvinfo:
gpa "VirtualAlloc","kernel32.dll"
bp $RESULT
mov count,5
lblloop1:
cmp count,0
je lblloginfo
dec count
esto
jmp lblloop1
lblloginfo:
bc $RESULT
mov patchiatsize,esp
add patchiatsize,8
mov patchiatsize,[patchiatsize]
rtu
mov patchiataddr,eax
lblcp1:
gpa "lstrcmpA","kernel32.dll"
mov addr,$RESULT
fill addr,1,b8 //让壳检测为没有特殊函数
inc addr
mov [addr],1
add addr,4
asm addr,"ret 8"
bp addr
esto
lbl4:
bc addr
rtu
/*
59490F85????????E9????????E80A
POP ECX
DEC ECX
JNZ @B
JMP Next_DLL
CALL xxxxxx
*/
find eip,#59490F85????????E9????????E80A#
cmp $RESULT,0
je lblabort
mov addr,$RESULT
add addr,d
bp addr
esto
lbl5:
bc addr
go GMHaddr
rtu
mov eax,0 //让壳认为没有ntdll.dll文件
gpa "SetThreadPriority","kernel32.dll"
bp $RESULT
lbl6:
esto
esto
esto
lbl7:
bc $RESULT
rtu
sto
/*
POPAD
PUSH EAX
PUSH EDX
PUSH ECX
*/
find eip,#61505251#
cmp $RESULT,0
je lblabort
go $RESULT
/*
CMP EAX,40000
JBE SHORT 003764BE
ADD ESP,0C
RETN
*/
repl eip,#3D00000400760483C40CC3#,#3D00000400EB0483C40CC3#,500
bprm cbase,csize
eob lbl8
ti
lbl8:
bpmc
cmt eip,"现在你可以打开Trace窗口尝试找回壳所抽代码."
msgyn "是否让脚本尝试修复iat?(尝试修复时必须手工输入保存iat的起始地址.一般可用最后一个section),这将需要几分钟时间."
cmp $RESULT,0
je lblend
ask "请写iat所要保存的起始地址:"
cmp $RESULT,0
je lblend
mov siataddr,$RESULT
add patchiatsize,patchiataddr
mov addr,patchiataddr
lblfixiatloop:
find addr,#FF35????????813424????????C3#
cmp $RESULT,0
je lblexitloop
mov addr,$RESULT
add addr,d
mov [addr],#83c404c3#
jmp lblfixiatloop
lblexitloop:
mov addr,cbase
log patchiatsize
log patchiataddr
lblfixloop1:
find addr,#90e9#
cmp $RESULT,0
jne lble9fix
find addr, #90E8#
cmp $RESULT,0
jne lble8fix
ret
lblend:
msg "Script finished,Script by loveboom[DFCG][FCG][US],Thank for using my script!"
ret
lbleros:
msg "本脚本只能在Winnnt系统下运行!" //其实这里没有用的,因为没有ntdll.dll时脚本插件就会报错
ret
lblabort:
msg "脚本只能用于v0.7x.:-(!"
ret
lble9fix:
mov addr,$RESULT
mov jtoaddr,addr
add addr,2
mov tmpval,[addr]
add tmpval,jtoaddr
add tmpval,6
log tmpval
cmp tmpval,patchiataddr
jb lblfixloop1
cmp tmpval,patchiatsize
ja lblfixloop1
dec addr
fill addr,1,0e8
mov eip,addr
cob
sto
mov addr,esp
sub addr,8
mov addr,[addr]
inc addr
mov addr,[addr]
gn addr
cmp $RESULT,0
je lblfixloop1
cmp dllname,$RESULT_1
je lble9sub1
mov dllname,$RESULT_1
add siataddr,4
lble9sub1:
mov [siataddr],addr
mov tmpval,jtoaddr
fill tmpval,1,ff
inc tmpval
fill tmpval,1,25
inc tmpval
mov [tmpval],siataddr
mov addr,tmpval
add addr,4
add siataddr,4
jmp lblfixloop1
lble8fix:
mov addr,$RESULT
mov jtoaddr,addr
add addr,2
mov tmpval,[addr]
add tmpval,jtoaddr
add tmpval,6
cmp tmpval,patchiataddr
jb lblfixloop1
cmp tmpval,patchiatsize
ja lblfixloop1
dec addr
mov eip,addr
cob
sto
mov addr,esp
sub addr,8
mov addr,[addr]
inc addr
mov addr,[addr]
gn addr
cmp $RESULT,0
je lblfixloop1
cmp dllname,$RESULT_1
je lble8sub1
mov dllname,$RESULT_1
add siataddr,4
lble8sub1:
mov [siataddr],addr
mov tmpval,jtoaddr
fill tmpval,1,ff
inc tmpval
fill tmpval,1,15
inc tmpval
mov [tmpval],siataddr
mov addr,tmpval
add addr,4
add siataddr,4
jmp lblfixloop1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -