telock脫殼總結 (12千字)
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___>
相關文章
- upx手動脫殼2020-10-26
- iOS逆向學習之五(加殼?脫殼?)2019-10-10iOS
- 十、iOS逆向之《越獄砸殼/ipa脫殼》2021-03-18iOS
- MySQL(十四)分析查詢語句Explain 七千字總結2023-04-14MySqlAI
- Od跟進之脫殼(待完善)2018-10-20
- 教你如何寫UPX脫殼指令碼2019-05-11指令碼
- 一次簡單的脫殼2024-08-30
- float,absolute脫離文件流的總結2018-08-29
- Android.Hook框架Cydia篇(脫殼機制作)2020-08-19AndroidHook框架
- 11月12日總結2024-11-14
- 6月12號總結2024-06-15
- 2018第12周總結2018-03-25
- 脫殼基礎知識以及簡單應用2019-06-17
- dp on 凸殼總結&gym 101806 T Touch The Sky 題解2020-11-10
- iOS應用程式的脫殼實現原理淺析2019-03-04iOS
- 某IOT蠕蟲病毒分析之UPX脫殼實戰2018-04-11
- 4月12日每日總結2024-04-16
- 每日總結6月12日2024-06-19
- 逆向基礎——軟體手動脫殼技術入門2020-08-19
- 【開源】BlackDex,無需環境,Android新姿勢脫殼工具2021-05-27Android
- 2024/11/12日工作總結2024-11-12
- 2020-12-10 技術總結2020-12-10
- 從Android執行時出發,打造我們的脫殼神器2020-08-19Android
- iOS 12正式版新特性總結2018-09-19iOS
- SpringMVC-12-SSM回顧與總結2020-09-17SpringMVCSSM
- 金蟬脫殼2百度雲免費線上觀看2018-06-23
- 2018-12-09週記-工作小總結2018-12-09
- 【課程總結】2020年12月26日2020-12-28
- 騰訊安全ApkPecker上線DEX-VMP自動化脫殼服務2021-07-19APK
- Random 專案總結 -12 定義定時器,繫結事件2024-04-20random定時器事件
- 「完結」總結12大CNN主流模型架構設計思想2019-07-14CNN模型架構
- 羽夏殼世界—— PE 結構(上)2022-04-10
- 12月更新&2022亮點總結 | Java on Visual Studio Code2023-01-16Java
- 12個iOS技術面試題及答案總結2022-03-12iOS面試題
- VideoPipe視覺化影片結構化框架更新總結(2023-12-5)2023-12-05IDE視覺化框架
- springboot 結合jackson資料脫敏2024-04-24Spring Boot
- 12個流行的Python資料視覺化庫總結2019-01-11Python視覺化
- 12C新特性___In-Memory列式儲存的總結2020-03-08
- Jira Software 年度總結:12個重要功能大放送!2021-12-28