環宇通漢英翻譯系統3.0脫殼(lock98),有人要,胡亂寫一些。 (5千字)
環宇通漢英翻譯系統3.0用LOCK98加殼,這個殼相對來說還是很溫和的。沒有ANTI-DEBUG,沒有破壞輸入表。
簡要說一下。
一開始有很多SMC來還原程式的程式碼,很簡單,但比較長就不多說了。遇到LOOP就G到它的下面一句,只要有耐心透過他並不困難。然後走到讀密匙盤的地方如下:
0167:004E7C37 MOV BYTE [EBP+00433DE9],00
0167:004E7C3E MOV AL,01
0167:004E7C40 MOV DL,[EBP+00433DE9]
0167:004E7C46 CALL 004E78B5
0167:004E7C4B MOV AL,02
0167:004E7C4D MOV DL,[EBP+00433DE9]
0167:004E7C53 CALL 004E78B5
0167:004E7C58 MOV AX,0401
0167:004E7C5C MOV CX,4F01
0167:004E7C60 MOV DH,01
0167:004E7C62 MOV DL,[EBP+00433DE9]
0167:004E7C68 CALL 004E7925
0167:004E7C6D MOV AX,0201
0167:004E7C71 MOV CX,4F32
0167:004E7C75 MOV DH,01
0167:004E7C77 MOV DL,[EBP+00433DE9]
0167:004E7C7D CALL 004E7925
0167:004E7C82 MOV DL,[EBP+00433DE9]
0167:004E7C88 CALL 004E78FD
0167:004E7C8D MOV DL,[EBP+00433DE9]
0167:004E7C93 CALL 004E78FD
0167:004E7C98 MOV EBX,[EBP+00433DD7]
0167:004E7C9E CMP EBX,[EBP+00433DBF]
0167:004E7CA4 JZ 004E7CB7 <----注意這個,強迫跳
0167:004E7CA6 CMP BYTE [EBP+00433DE9],01
0167:004E7CAD JNC 004E7CCE
0167:004E7CAF INC BYTE [EBP+00433DE9]
0167:004E7CB5 JMP SHORT 004E7C3E
0167:004E7CB7 PUSH EAX
0167:004E7CB8 LEA EDI,[EBP+00433BD7]
0167:004E7CBE LEA ECX,[EBP+00433CCA]
0167:004E7CC4 SUB ECX,EDI
0167:004E7CC6 DEC ECX
0167:004E7CC7 CLD
0167:004E7CC8 XOR AL,AL
0167:004E7CCA REP STOSB
0167:004E7CCC POP EAX
0167:004E7CCD RET
上面強迫跳轉後就不會要求密匙盤了。再往下還有一些還原始碼,最後到如下:
0167:004E7118 MOV EAX,004300A6
0167:004E711D ADD EAX,EBP
0167:004E711F SUB EAX,[EBP+00433DBB]
0167:004E7125 PUSH EAX
0167:004E7126 LEA EDI,[EBP+00430000]
0167:004E712C LEA ECX,[EBP+00433138]
0167:004E7132 SUB ECX,EDI
0167:004E7134 DEC ECX
0167:004E7135 CLD
0167:004E7136 XOR AL,AL
0167:004E7138 REP STOSB
0167:004E713A POP EAX
0167:004E713B PUSH EAX
0167:004E713C LEA EDI,[EBP+004332D3]
0167:004E7142 LEA ECX,[EBP+00434000]
0167:004E7148 SUB ECX,EDI
0167:004E714A DEC ECX
0167:004E714B CLD
0167:004E714C XOR AL,AL
0167:004E714E REP STOSB
0167:004E7150 POP EAX
0167:004E7151 MOV BYTE [EBP+00433DE8],00
0167:004E7158 POP EBP
0167:004E7159 JMP EAX <----到原入口
原入口可能需要密盤資料來還原,沒有密盤所以得到的入口是不正確的,再執行會非法操作。可以這樣,在最後那句把程式DUMP下來,反彙編。看裡面的函式呼叫,比如:GetCommandLineA、GetVersion這些函式一般都出現在程式入口處,找一下,找到如下:
:0042DED7 55
push ebp
:0042DED8 8BEC
mov ebp, esp
:0042DEDA 6AFF
push FFFFFFFF
:0042DEDC 68D0754600 push 004675D0
:0042DEE1 6810224300 push 00432210
:0042DEE6 64A100000000 mov eax, dword
ptr fs:[00000000]
:0042DEEC 50
push eax
:0042DEED 64892500000000 mov dword ptr fs:[00000000],
esp
:0042DEF4 83EC58
sub esp, 00000058
:0042DEF7 53
push ebx
:0042DEF8 56
push esi
:0042DEF9 57
push edi
:0042DEFA 8965E8
mov dword ptr [ebp-18], esp
* Reference To: KERNEL32.GetVersion, Ord:0174h
|
:0042DEFD FF1570034600 Call dword ptr
[00460370]
:0042DF03 33D2
xor edx, edx
:0042DF05 8AD4
mov dl, ah
:0042DF07 8915945A4800 mov dword ptr
[00485A94], edx
:0042DF0D 8BC8
mov ecx, eax
:0042DF0F 81E1FF000000 and ecx, 000000FF
:0042DF15 890D905A4800 mov dword ptr
[00485A90], ecx
:0042DF1B C1E108
shl ecx, 08
:0042DF1E 03CA
add ecx, edx
:0042DF20 890D8C5A4800 mov dword ptr
[00485A8C], ecx
:0042DF26 C1E810
shr eax, 10
:0042DF29 A3885A4800 mov dword
ptr [00485A88], eax
:0042DF2E 6A01
push 00000001
:0042DF30 E862560000 call 00433597
:0042DF35 59
pop ecx
:0042DF36 85C0
test eax, eax
:0042DF38 7508
jne 0042DF42
:0042DF3A 6A1C
push 0000001C
:0042DF3C E8C3000000 call 0042E004
:0042DF41 59
pop ecx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0042DF38(C)
|
:0042DF42 E8A5330000 call 004312EC
:0042DF47 85C0
test eax, eax
:0042DF49 7508
jne 0042DF53
:0042DF4B 6A10
push 00000010
:0042DF4D E8B2000000 call 0042E004
:0042DF52 59
pop ecx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0042DF49(C)
|
:0042DF53 33F6
xor esi, esi
:0042DF55 8975FC
mov dword ptr [ebp-04], esi
:0042DF58 E8C13E0000 call 00431E1E
* Reference To: KERNEL32.GetCommandLineA, Ord:00CAh
|
:0042DF5D FF15F8014600 Call dword ptr
[004601F8]
:0042DF63 A3C8714800 mov dword
ptr [004871C8], eax
:0042DF68 E8F8540000 call 00433465
:0042DF6D A3D05A4800 mov dword
ptr [00485AD0], eax
:0042DF72 E8A1520000 call 00433218
:0042DF77 E8E3510000 call 0043315F
:0042DF7C E8E5EEFFFF call 0042CE66
:0042DF81 8975D0
mov dword ptr [ebp-30], esi
:0042DF84 8D45A4
lea eax, dword ptr [ebp-5C]
:0042DF87 50
push eax
所以估計42DED7就是真正的入口,試一下果然正確。
相關文章
- Lock98主程式脫殼筆記 (1千字)2015-11-15筆記
- 詞典翻譯 英譯漢2018-07-21
- [翻譯]利用程式碼注入脫殼2015-11-15
- jdpack的脫殼及破解 (5千字)2002-06-25
- LOCK98 V1.00.28 脫殼 ―― 反編譯專家UnFoxAll
2.10版2015-11-15編譯
- ASPROtect 1.22加殼的ahaview2.0脫殼 (5千字)2002-03-24View
- 【漢譯英】翻譯當然不是一成不變的啦2016-10-02
- 脫殼----對用Petite2.2加殼的程式進行手動脫殼的一點分析
(5千字)2000-07-27
- 微軟機器翻譯系統:中-英翻譯水平可“與人類媲美”2018-03-15微軟
- 中國特色詞彙漢譯英 - A2005-03-30
- 脫殼IglooFTP PRO v3.0的詳細過程 (11千字)2001-09-14FTP
- 脫殼----對用pecompact加殼的程式進行手動脫殼
(1千字)2000-07-30
- ASProtect 1.23
b18脫殼淺談 (5千字)2015-11-15
- FTPrint的脫殼(asprotect) (2千字)2001-02-05FTP
- telock脫殼總結 (12千字)2001-09-27
- 怎樣做英譯漢題2013-08-20
- 中國特色詞彙漢譯英 - M2005-04-01
- 中國特色詞彙漢譯英 - J2005-04-01
- 中國特色詞彙漢譯英 - H2005-03-31
- 中國特色詞彙漢譯英 - G2005-03-31
- 中國特色詞彙漢譯英 - D2005-03-31
- 中國特色詞彙漢譯英 - C2005-03-30
- 中國特色詞彙漢譯英 - B2005-03-30
- 先分析,再脫殼(二) (13千字)2003-09-04
- 脫Crunch/PE -> BitArts的殼。 (3千字)2002-05-03
- WinKawaks 1.45脫殼筆記
(10千字)2002-08-12筆記
- HTMLZip 1.0 beta 的脫殼 (3千字)2001-02-03HTML
- 一點脫殼經驗。(7千字)2001-04-20
- PicturesToExe3.51的脫殼 (2千字)2001-04-22REST
- The Bat! 1.39脫殼筆記 (1千字)2000-03-12BAT筆記
- 關於用ASProtect v1.3加殼軟體的脫殼方法體會 (5千字)2001-11-21
- 蘋果手機漢譯英的方法2019-01-14蘋果
- 中國特色詞彙漢譯英 - K,L2005-04-01
- 中國特色詞彙漢譯英 - E, F2005-03-31
- ArtCursors 3.03 ASPR殼軟體脫殼後修整記 (10千字)2015-11-15
- 教你如何寫UPX脫殼指令碼2019-05-11指令碼
- 寫給新手
- 淺談脫殼方法2004-12-18
- 另類PEtite V2.2 脫殼+修復+破解――英漢漢英雙向學習詞典
V1.02015-11-15