telock脱壳总结
telock用fi查不出,所以如何判断是telock的壳,凭ImportRECf导出it的结果吧,乱七八糟的那种差不多就是了。初解telock的壳会感觉比较难,不过看了2个以后就不觉得有多难了。当然我略过了手动找入口的步骤,寻找程序的入口还是脱壳的关键所在也是难点。
用ShadowSecurityScaner Ver3.37举个例子吧,讲的时候会比较方便
1.寻找入口:
(1)delphi:
快速寻找入口的方法:执行程序,接着用winhex打开程序所在的主内存,选择搜索文本,填runtime,执行搜索,搜到后,向前找到离runtime最近的机器码为55
8B EC的地方就是程序的oep,所以delphi程序的oep最好找了。
脱壳详情请参考我最近写的(delphi程序)
脱Flashfxp 1.4的壳
(2)vb:
快速寻找入口的方法:执行程序,接着用winhex打开程序所在的主内存,选择搜索文本,填程序的名字,执行搜索,搜到后,向前找到离名字最近的机器码为68(后面就不一定了,一般很短,不超过20h字节)开头的地方就是程序的oep,所以vb程序的oep也比较好找。
(3)vc:
无任何规律,慢慢跟吧:(。手动脱壳方法最好熟练掌握,对付任何程序都应该有效吧:),熟悉以后就没问题了。(难~~~)
(4)其他:
没试过,不知道了。
ShadowSecurityScaner是用delphi写的,hoho运气真好:)。sss335以前某版肯定是用telock加的壳,不过在51下的337版没有加壳,所以我用telock0.90给他加一个壳。用快速寻找delphi程序入口的方法:执行sss,接着用winhex编辑sss的主内存,选择搜索文本,填runtime,执行搜索,搜到后,向前找到离runtime最近的机器码为55
8B EC的地方就是程序的oep,对应的地址是59b9e4。
2.脱壳:
telock的壳在dump之前需要用winhex内存编辑功能把400106-400107填回原来的section数(telock会改写为ffff,使脱壳程序无法dump)。然后从入口处dump,如果不是从入口dump的,一般不能用。再有用prodump
dump的程序,需要手动把oep改成正确的。用天意,trw或peditor dump的程序稍大。其中天意在我的winme系统下执行suspend死机,所以极少用,peditor
dump出的程序超大。trw只有娃娃改过的1.03版才能直接g到入口处,其余的版会非法操作的,而s-ice不会出任何问题的,cool。
ok,回到sss。下面要在入口处脱壳,老规矩打开SuperBPM,点erase,用trw1.03娃娃修改过的版载入sss,下g
59b9e4,下suspend,用winhex内存编辑功能把400106-400107填回原来的值0800,再用prodump选dump(full)就成功啦。
3.重建import table:
以sss为例,执行sss,然后用ImportRECf导出it,是这个样子的:
Target: D:\TOOLS\SHADOWSECURITYSCANER\SSS.EXE
OEP: 0019B9E4
IATRVA: 001AB1A0 IATSize: 000008A4
FThunk:
001AB1A4 NbFunc: 00000036
0 001AB1A4
? 0000 009D0000
0 001AB1A8
? 0000 009D000A
0 001AB1AC
? 0000 009D0014
0 001AB1B0
? 0000 009D001E
从telock重建It部分开始吧,用加了superbpm和icedump的s-ice重新载入sss,下bpm
9d0000,下g,停在这里:
0187:006ACE09 FF0424
INC DWord Ptr [ESP]
0187:006ACE0C 0483
ADD AL,83
0187:006ACE0E 2424
AND AL,24
0187:006ACE10
03833C240074 ADD EAX,[EBX+7400243C]
0187:006ACE16
36833C2401 CMP DWord Ptr SS:[ESP],00000001
0187:006ACE1B 744D JZ
006ACE6A
0187:006ACE1D 833C2402
CMP DWord Ptr [ESP],00000002
0187:006ACE21 7422
JZ 006ACE45
0187:006ACE23 C144240C10 ROL DWord Ptr
[ESP+0C],10
0187:006ACE28 668B44240C MOV
AX,[ESP+0C]
0187:006ACE2D 66AB
STOSW
0187:006ACE2F 8BC3
MOV EAX,EBX
0187:006ACE31 C1E803
SHR EAX,03
0187:006ACE34 83E003
AND EAX,00000003
0187:006ACE37 8A440404
MOV AL,[ESP+1*EAX+04]
0187:006ACE3B
AA STOSB
0187:006ACE3C
B0C3 MOV AL,C3
0187:006ACE3E AA STOSB
0187:006ACE3F 66B8FF35 MOV
AX,35FF
0187:006ACE43 EB2D
JMP 006ACE72
0187:006ACE45 8B442408
MOV EAX,[ESP+08]
0187:006ACE49 AB
STOSD
0187:006ACE4A 4F
DEC EDI
0187:006ACE4B EBEF
JMP 006ACE3C
0187:006ACE4D
668B44240C MOV AX,[ESP+0C]
0187:006ACE52
66AB STOSW
0187:006ACE54
B0C3 MOV AL,C3
0187:006ACE56 AA STOSB
0187:006ACE57 8BC3 MOV
EAX,EBX
0187:006ACE59 C1E803
SHR EAX,03
0187:006ACE5C 83E003
AND EAX,00000003
0187:006ACE5F 8A440404
MOV AL,[ESP+1*EAX+04]
0187:006ACE63 AA
STOSB
0187:006ACE64 66B8FF35
MOV AX,35FF
0187:006ACE68 EB08
JMP 006ACE72
0187:006ACE6A
8B442410 MOV EAX,[ESP+10]
0187:006ACE6E AB STOSD
0187:006ACE6F 4F DEC
EDI
0187:006ACE70 EBCA
JMP 006ACE3C
0187:006ACE72 E28C
LOOP 006ACE00
0187:006ACE74 66AB
STOSW
0187:006ACE76 83C414
ADD ESP,00000014
0187:006ACE79 61
POPAD
0187:006ACE7A 89BD9AB04000
MOV [EBP+0040B09A],EDI //MOV [EBP+0040B09A],EBX
899D9AB04000
0187:006ACE80
8BBD9AB04000 MOV EDI,[EBP+0040B09A] //MOV
EDI,[EBP+0040B0A2]
8BBDA2B04000
0187:006ACE86 8B85A2B04000 MOV
EAX,[EBP+0040B0A2]
0187:006ACE8C 03859AAF4000 ADD
EAX,[EBP+0040AF9A]
0187:006ACE92 8B8D9EB04000
MOV ECX,[EBP+0040B09E]
0187:006ACE98 8908
MOV [EAX],ECX
0187:006ACE9A 83859EB040000A
ADD DWord Ptr [EBP+0040B09E],0000000A
0187:006ACEA1 EB08
JMP 006ACEAB
0187:006ACEA3
838D9AB04000FF OR DWord Ptr [EBP+0040B09A],FFFFFFFF
0187:006ACEAA 61 POPAD
0187:006ACEAB 03BD9AAF4000 ADD EDI,[EBP+0040AF9A]
0187:006ACEB1 85DB TEST
EBX,EBX
0187:006ACEB3 0F84B4000000 JZ
006ACF6D
0187:006ACEB9 F7C300000080 TEST
EBX,80000000
0187:006ACEBF 6A00
PUSH 00000000
0187:006ACEC1 7506
JNZ 006ACEC9
0187:006ACEC3
8D5C1302 LEA EBX,[EBX+1*EDX+02]
0187:006ACEC7 EB3C JMP
006ACF05
0187:006ACEC9 FF0424
INC DWord Ptr [ESP]
0187:006ACECC 8B8596AF4000
MOV EAX,[EBP+0040AF96]
0187:006ACED2 3B858AB04000
CMP EAX,[EBP+0040B08A]
0187:006ACED8 752B
JNZ 006ACF05
0187:006ACEDA
81E3FFFFFF7F AND EBX,7FFFFFFF
0187:006ACEE0
8BD3 MOV EDX,EBX
0187:006ACEE2 8D1495FCFFFFFF LEA EDX,[FFFFFFFC+4*EDX]
0187:006ACEE9 8B9D96AF4000 MOV EBX,[EBP+0040AF96]
0187:006ACEEF 8B433C MOV
EAX,[EBX+3C]
0187:006ACEF2 8B441878 MOV
EAX,[EAX+1*EBX+78]
0187:006ACEF6 035C181C
ADD EBX,[EAX+1*EBX+1C]
0187:006ACEFA 8B041A
MOV EAX,[EDX+1*EBX]
0187:006ACEFD
038596AF4000 ADD EAX,[EBP+0040AF96]
0187:006ACF03
EB13 JMP 006ACF18
0187:006ACF05 81E3FFFFFF7F AND EBX,7FFFFFFF
0187:006ACF0B 53 PUSH
EBX
0187:006ACF0C FFB596AF4000 PUSH
DWord Ptr [EBP+0040AF96]
0187:006ACF12 FF9504AF4000 CALL
Near [`KERNEL32!GetProcAddress`] //取函数名
0187:006ACF18 40
INC EAX
0187:006ACF19
48 DEC EAX
0187:006ACF1A 7532 JNZ
006ACF4E
0187:006ACF1C 58
POP EAX
0187:006ACF1D F9
STC
0187:006ACF1E 0F829BFDFFFF
JB 006ACCBF
0187:006ACF24 47
INC EDI
0187:006ACF25
44 INC ESP
0187:006ACF26 49 DEC
ECX
0187:006ACF27 3332
XOR ESI,[EDX]
0187:006ACF29 2E44
INC ESP
0187:006ACF2B 4C
DEC ESP
0187:006ACF2C 4C
DEC ESP
0187:006ACF2D
55 PUSH EBP
0187:006ACF2E 53 PUSH
EBX
0187:006ACF2F 45
INC EBP
0187:006ACF30 52
PUSH EDX
0187:006ACF31 3332
XOR ESI,[EDX]
0187:006ACF33
2E44 INC ESP
0187:006ACF35 4C DEC
ESP
0187:006ACF36 4C
DEC ESP
0187:006ACF37 53
PUSH EBX
0187:006ACF38 48
DEC EAX
0187:006ACF39
45 INC EBP
0187:006ACF3A 4C DEC
ESP
0187:006ACF3B 4C
DEC ESP
0187:006ACF3C 3332
XOR ESI,[EDX]
0187:006ACF3E 2E44
INC ESP
0187:006ACF40
4C DEC ESP
0187:006ACF41 4C DEC
ESP
0187:006ACF42 4B
DEC EBX
0187:006ACF43 45
INC EBP
0187:006ACF44 52
PUSH EDX
0187:006ACF45 4E
DEC ESI
0187:006ACF46
45 INC EBP
0187:006ACF47 4C DEC
ESP
0187:006ACF48 3332
XOR ESI,[EDX]
0187:006ACF4A 2E44
INC ESP
0187:006ACF4C 4C
DEC ESP
0187:006ACF4D 4C
DEC ESP
0187:006ACF4E
8907 MOV [EDI],EAX
//将函数名放回正确的位置
0187:006ACF50 58
POP EAX
0187:006ACF51 48
DEC EAX
0187:006ACF52 740D
JZ 006ACF61
0187:006ACF54
40 INC EAX
0187:006ACF55 F8 CLC
0187:006ACF56 668943FE MOV
[EBX-02],AX
0187:006ACF5A 8803
MOV [EBX],AL
0187:006ACF5C 43
INC EBX
0187:006ACF5D 3803
CMP [EBX],AL
0187:006ACF5F
75F9 JNZ 006ACF5A
0187:006ACF61 83859AAF400004 ADD DWord Ptr [EBP+0040AF9A],00000004
0187:006ACF68 E9D4FDFFFF JMP 006ACD41
0187:006ACF6D 83C614 ADD
ESI,00000014
0187:006ACF70 8B95AEAF4000 MOV
EDX,[EBP+0040AFAE]
0187:006ACF76 E9B1FCFFFF JMP
006ACC2C //循环
0187:006ACF7B 61
POPAD
0187:006ACF7C C3
RET
按我的方法把006ACE7A和006ACE80改成这个样子,就可以用ImportRECf了。
0187:006ACE7A 89BD9AB04000 MOV [EBP+0040B09A],EDI
//MOV [EBP+0040B09A],EBX
899D9AB04000
0187:006ACE80 8BBD9AB04000
MOV EDI,[EBP+0040B09A] //MOV EDI,[EBP+0040B0A2]
8BBDA2B04000
这样做完所有的函数都可以认出,但还有一个问题,就是该分段的地址还是被telock写入了东西,这样ImportRECf就无法识别,还好按我的改法认不出来的地方都是该分段的地方。
类似这样
1 001AB24C KERNEL32.dll
0181 GetFileType
1 001AB250
KERNEL32.dll 00BA CreateFileA
1 001AB254 KERNEL32.dll 00A1
CloseHandle
0 001AB258 ?
0000 009D01C2
1 001AB25C
USER32.dll 0115 GetKeyboardType
1 001AB260 USER32.dll 01AB
LoadStringA
1 001AB264 USER32.dll
01BA MessageBoxA
1 001AB268
USER32.dll 0027 CharNextA
0 001AB26C ? 0000
009E0028
1 001AB270 ADVAPI32.dll
00F8 RegQueryValueExA
1 001AB274
ADVAPI32.dll 00F0 RegOpenKeyExA
1 001AB278 ADVAPI32.dll 00D9
RegCloseKey
只需手工把它改成如下就可以了,比原来的方法要快些:),具体的动手试试吧。
1 001AB24C KERNEL32.dll 0181
GetFileType
1 001AB250 KERNEL32.dll
00BA CreateFileA
1 001AB254
KERNEL32.dll 00A1 CloseHandle
FThunk: 001AB25C NbFunc: 00000004
1 001AB25C
USER32.dll 0115 GetKeyboardType
1 001AB260 USER32.dll 01AB
LoadStringA
1 001AB264 USER32.dll
01BA MessageBoxA
1 001AB268
USER32.dll 0027 CharNextA
FThunk: 001AB270 NbFunc: 00000003
1 001AB270
ADVAPI32.dll 00F8 RegQueryValueExA
1 001AB274 ADVAPI32.dll 00F0
RegOpenKeyExA
1 001AB278 ADVAPI32.dll
00D9 RegCloseKey
做完这些后用ImportRECf修复后的程序可以正常运行了。
完活,哪位大哥有其他好方法可用的话,千万记得告诉我呀,谢啦。
另外可以参考hying和fpc大哥关于telock的脱文。
感谢你能够坚持下来hoho:)
telock的壳除了手动找入口比较难外,其它的还是比较简单的。
关于sss的注册:
这是我对付以前用telock加过壳的那个sss的patch,sss任意版都只需改2个字节变成无限制版
#Process Patcher Configuration File
Version=3.93
DisplayName=My
Test Program
Filename=sss.exe
Filesize=1043968
Arguments=/quiet
Address=0x58ec5d:0x75:0xeb
#End of Configuration File
再有用这个key强制注册后,就是注册版。
UserName=SSSRussian
DigitalSignature=Vu3xB7ar69mR3Vt6hru4piTtDpPOVALxT+SXLg5nALwNVGDHbzWyEA4UAxQktR2arkd5klsvjHCTQVvO0zz9RU
2001.9.27
zombieys[CCG]
―――――――――――――――――――――――――――――――>
.-"
"-. unpacked by zombieys[CCG] >
/ \
qq:1789655 >
| ★
| http://zombieys.yeah.net >
|, .-. .-. ,| http://zombieys.126.com
>
|)(__/ \__)(|
zombieys.cn.hongnet.com >
|/ /\ \|
>
(@_@) (_ ^^
_) Thanks for your supports >
_ )\_______\__|IIIIII|__/_____
>
_)@8@8{}<________|-\IIIIII/-|____China
Crack Group_zombieys___>