环宇通汉英翻译系统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 <----到原入口