【目 标】: forgot/hexer做的变形telock
【工 具】:Olydbg1.1
【任 务】:当然是要脱光它的衣服了:D
【操作平台】:WINXP pro sp1
【作 者】:loveboom[DFCG][FCG]
【相关链接】: 附件就是了
【简要说明】:呵呵,前几天看看forgot在做"某护肤产品的公告",所以就进去看看,不看可能还没事,一看我的机子就重启了N次,晕呀!
【详细过程】:
既然搞得我的机子重启这么多次不脱他个光光就太对不起我电脑吧,打开OD设置一下:
忽略异常里除了'Invalid or privileged instruction'和最下面的一个,其它的全钩上,不用隐身你的OD的,因为壳里"忘记?"了
还好forgot这次没有清DRX要不,可能就更难了。
先在peid的userdb里加上标志先,这样下次见到好有个照应.
在userdb里加上:
[TElock v0.98b1<->Modifly by forgot/hexer]
signature = 9C 6A 03 73 0B EB 02 75 75
ep_only=false
这样以后和forgot又亲了一点:)
用OD载入后停在入口:
00462862 >^\E9 99D7FFFF JMP d1.00460000 ;ep
00462867 0000 ADD BYTE PTR DS:[EAX],AL
按F9出现异常了:
004607E5 8DC0 LEA EAX,EAX ; 这里异常了
004607E7 74 03 JE SHORT d1.004607EC
异常后我们下断bp GetModuleHandleA,呵呵,他这时还没有检查这里有没有CC呢.下断-->shift+f9断下:
77E5AD86 > 837C24 04 00 CMP DWORD PTR SS:[ESP+4],0 ;断在这里
77E5AD8B 0F84 37010000 JE kernel32.77E5AEC8
断下来了就先"还东西"(取消断点),再按alt+f9执行到用户代码:
00460E97 0BC0 OR EAX,EAX ; 回到程序了地盘咯
00460E99 75 07 JNZ SHORT d1.00460EA2
回到用户代码后,按CTRL+B找85FF74也就是找:
004617E4 85FF TEST EDI,EDI ;找的就是这里
004617E6 74 0F JE SHORT d1.004617F7
在4617E4处下he 4617E4(硬件访问断点),下断完毕f9运行一下又异常了.
77E53887 5E POP ESI
77E53888 C9 LEAVE
在77E53887处会异常三次,第四次到就了我们刚才下硬件断点的地方:
004617E4 85FF TEST EDI,EDI ; ntdll.ZwSetInformationThread
004617E6 74 0F JE SHORT d1.004617F7
004617E8 FF95 191F4000 CALL DWORD PTR SS:[EBP+401F19]
呵呵,看到了吧,壳想搞破坏了,这里我们就把edi给填0,这样的话,不用再担心有效验。
同样,还东西后,走下一步,再次按ctrl+B查找61C685:
00461EF7 61 POPAD
00461EF8 C685 E1314000 0>MOV BYTE PTR SS:[EBP+4031E1],0
00461EFF 74 24 JE SHORT d1.00461F25 ;这就是我们要找的,这里一改就会有全部的IAT
把00461EFF改成EB24也就是jmp 00461F25,改完后接f9又出现一次异常,这时先不要急着按shift+f9再按程序就跑了.
00462336 8DC0 LEA EAX,EAX ; 异常在这里
00462338 EB 01 JMP SHORT d1.0046233B
异常后有两种方法可以很快到程序的OEP的.
第一种 ESP的方法:
异常后下断hr 12ffa4,这样中断在这里:
004623B0 874424 FC XCHG DWORD PTR SS:[ESP-4],EAX ; 这里断下
004623B4 83EC 04 SUB ESP,4
断后取消断点按ctrl+f9执行到返回,然后按一次f8到了入口:
00462422 5F POP EDI
00462423 C3 RETN
......
0044CA98 55 PUSH EBP ; OEP!
0044CA99 8BEC MOV EBP,ESP
0044CA9B 83C4 F0 ADD ESP,-10
第二种 段断点:
打开内存页,在下面的段上按f2:
Memory map, item 18
Address=00401000
Size=0004C000 (311296.)
Owner=d1 00400000
Section=.BJFnt
Contains=code
Type=Imag 01001004
Access=RW
Initial access=RWE
然后shift+f9就到入口了:
0044CA98 55 PUSH EBP ; OEP!
0044CA99 8BEC MOV EBP,ESP
到了这里就dump+fixdump我就不再多说了,介于这个壳对我的电脑打击过于"利害",所以决定来个"脱壳机器人".哈哈!
code:
msgyn "设置:按ALT+O打开异常项,除倒数第一和第三项外,其它全部打钩,这个脚本只对forgot/hexer的修改版telock有用,要继续吗?"
cmp $RESULT,0
je lblret
var addr
var cbase
var csize
gmi eip,CODEBASE
mov cbase,$RESULT
gmi eip,CODESIZE
mov csize,$RESULT
start:
run
lbl1:
gpa "GetModuleHandleA","kernel32.dll"
bp $RESULT
esto
lbl2:
bc $RESULT
rtu
find eip,#85FF74??FF95#
cmp $RESULT,0
je lblabort
mov addr,$RESULT
bphws addr,"x"
lbl3:
eob lbl4
run
esto
esto
esto
lbl4:
bphwc addr
mov edi,0
find eip,#61C685#
cmp $RESULT,0
je lblabort
mov addr,$RESULT
add addr,8
mov [addr],#EB#
lbl5:
run
lbl6:
bprm cbase,csize
esto
end:
bpmc
cmt eip,"OEP!"
msg "Script by loveboom[DFCG][FCG],Thank you for using my script!"
lblret:
ret
lblabort:
msg "出错,脚本将会结束,可能目标程序不是forgot/hexer的变形telock加的壳:(!"
ret
Greetz:
Fly,Jingulong,yock,tDasm,David,ahao,vcasm,UFO(brother),alan(sister),all of my friends and you!
By loveboom[DFCG][FCG]
Email:bmd2chen@tom.com