您的位置:首页精文荟萃破解文章 → 环宇通汉英翻译系统3.0脱壳

环宇通汉英翻译系统3.0脱壳

时间:2004/10/15 0:50:00来源:本站整理作者:蓝点我要评论(0)

 

环宇通汉英翻译系统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就是真正的入口,试一下果然正确。

    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程