• 标 题:XDos V1.0.322 汉化版
  • 作 者:fly
  • 时 间:2003/04/15 12:29pm
  • 链 接:http://bbs.pediy.com

简单算法——XDos V1.0.322 汉化版
下载页面:  http://www.skycn.com/soft/11680.html
软件大小:  151 KB
软件语言:  简体中文
软件类别:  汉化补丁 / 共享版 / 系统其它
应用平台:  Win9x/NT/2000/XP
加入时间:  2003-04-12 14:48:22
下载次数:  53
推荐等级:  ***


【软件简介】:XDos是Dos的外壳程序,可以运行大多数的Dos命令,如:dir,ren,mkdir...,也可以运行很多Windows的程序,如:notepad,calc,regedit...,XDos是一个多窗口的程序.你可以在XDos中使用复制,粘贴等有用的命令。

【软件限制】:注册后给予最好的支持。

【作者声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!

【破解工具】:TRW2000娃娃修改版、Ollydbg1.09、PEiD、GUW32、W32Dasm 9.0白金版

—————————————————————————————————
【过    程】:


刚从 天空 DOWN了这个小东东,是 阳光灿烂 汉化的。程序有点怪,随便输入注册码后就弹出成功的提示,但是重新运行后“关于”里面的注册码栏依旧是空的。反汇编后看到许多的NOP,呵呵,可能是 阳光灿烂 汉化时顺手做了爆破。因为没有原版,所以我就无法完美爆破了,看看算法吧。

xdos.exe 是UPX 1.22壳,应该是汉化者加的。用GUW32脱之,155K->375K。Visual C++ 6.0 编写。


标识码:15588784
试炼码:13572468

因为 阳光灿烂 动了手脚,所以下面的断点我是用TRW的“S大法”追到的。
—————————————————————————————————
:00401D70 6AFF                    push FFFFFFFF
:00401D72 68F89D4300              push 00439DF8
:00401D77 64A100000000            mov eax, dword ptr fs:[00000000]
:00401D7D 50                      push eax
:00401D7E 64892500000000          mov dword ptr fs:[00000000], esp
:00401D85 83EC0C                  sub esp, 0000000C
:00401D88 A1ACC54400              mov eax, dword ptr [0044C5AC]
:00401D8D 55                      push ebp
:00401D8E 56                      push esi
:00401D8F 57                      push edi
:00401D90 8BF1                    mov esi, ecx
:00401D92 89442414                mov dword ptr [esp+14], eax
:00401D96 C744242000000000        mov [esp+20], 00000000
:00401D9E 8944240C                mov dword ptr [esp+0C], eax
:00401DA2 8D442414                lea eax, dword ptr [esp+14]
:00401DA6 8D8E98000000            lea ecx, dword ptr [esi+00000098]
:00401DAC 50                      push eax
:00401DAD C644242401              mov [esp+24], 01
:00401DB2 E8A18A0100              call 0041A858
:00401DB7 8D4C240C                lea ecx, dword ptr [esp+0C]
:00401DBB 51                      push ecx
:00401DBC 8D4E5C                  lea ecx, dword ptr [esi+5C]
:00401DBF E8948A0100              call 0041A858
:00401DC4 8B54240C                mov edx, dword ptr [esp+0C]
                                 ====>EDX=13572468          试炼码

:00401DC8 837AF801                cmp dword ptr [edx-08], 00000001
                                 ====>是否8位?

:00401DCC 90                      nop
:00401DCD 90                      nop
:00401DCE 90                      nop
:00401DCF 90                      nop
:00401DD0 90                      nop
:00401DD1 90                      nop
:00401DD2 8B442414                mov eax, dword ptr [esp+14]
                                 ====>EAX=15588784           标识码

:00401DD6 50                      push eax
:00401DD7 E83B930000              call 0040B117
                                 ====>将标识码15588784转换成16进制值  

:00401DDC 8B4C2410                mov ecx, dword ptr [esp+10]
                                 ====>ECX=13572468           试炼码

:00401DE0 8BF8                    mov edi, eax
                                 ====>EDI=EAX=00EDDDB0(H)=15588784(D)

:00401DE2 51                      push ecx
:00401DE3 E82F930000              call 0040B117
                                 ====>将试炼码13572468转换成16进制值

:00401DE8 83C408                  add esp, 00000008
:00401DEB 8BCE                    mov ecx, esi
:00401DED 8BE8                    mov ebp, eax
                                 ====>EBP=EAX=00CF1974(H)=13572468(D)

:00401DEF 57                      push edi
:00401DF0 E80B030000              call 00402100
                                 ====>算法CALL!进入!

:00401DF5 3BC5                    cmp eax, ebp
                                 ====>比较注册码!
                                 ====>EAX=04189ECD   注册码!
                                 ====>EBP=00CF1974   试炼码!


:00401DF7 90                      nop
:00401DF8 90                      nop
:00401DF9 90                      nop
:00401DFA 90                      nop
:00401DFB 90                      nop
:00401DFC 90                      nop
:00401DFD 68E9030000              push 000003E9
:00401E02 8BCE                    mov ecx, esi
:00401E04 E827AE0100              call 0041CC30
:00401E09 8BF8                    mov edi, eax
:00401E0B 6A00                    push 00000000
:00401E0D 8BCF                    mov ecx, edi
:00401E0F E8F3B00100              call 0041CF07
:00401E14 8B15ACC54400            mov edx, dword ptr [0044C5AC]
:00401E1A 89542410                mov dword ptr [esp+10], edx

* Possible Reference to String Resource ID=61450: ""
                                 |
:00401E1E 680AF00000              push 0000F00A
:00401E23 8D4C2414                lea ecx, dword ptr [esp+14]
:00401E27 C644242402              mov [esp+24], 02
:00401E2C E8E1CF0100              call 0041EE12
:00401E31 8B442410                mov eax, dword ptr [esp+10]
:00401E35 8BCF                    mov ecx, edi
:00401E37 50                      push eax
:00401E38 E843AF0100              call 0041CD80
:00401E3D 68E8030000              push 000003E8
:00401E42 8BCE                    mov ecx, esi
:00401E44 E8E7AD0100              call 0041CC30
:00401E49 6A00                    push 00000000
:00401E4B 8BC8                    mov ecx, eax
:00401E4D E8B5B00100              call 0041CF07
:00401E52 E8EB120300              call 00433142
                                 ====>保存注册信息

:00401E57 8B4004                  mov eax, dword ptr [eax+04]
:00401E5A 55                      push ebp
:00401E5B 6840C14400              push 0044C140
:00401E60 6834C14400              push 0044C134
:00401E65 8BC8                    mov ecx, eax
:00401E67 E88C5F0200              call 00427DF8
:00401E6C 6AFF                    push FFFFFFFF
:00401E6E 6A00                    push 00000000

* Possible Reference to String Resource ID=61449: ""
                                 |
:00401E70 6809F00000              push 0000F009
:00401E75 E8825D0200              call 00427BFC
                                 ====>呵呵,胜利女神!

:00401E7A 8D4C2410                lea ecx, dword ptr [esp+10]
:00401E7E C644242001              mov [esp+20], 01
:00401E83 E871CA0100              call 0041E8F9
:00401E88 EB0E                    jmp 00401E98


—————————————————————————————————
进入算法CALL:

* Referenced by a CALL at Addresses:
|:00401DF0   , :00402062  
|
:00402100 8B442404                mov eax, dword ptr [esp+04]
                                 ====>EAX=[esp+04]=00EDDDB0  标识码

:00402104 353B1FB903              xor eax, 03B91F3B
                                 ====>EAX=00EDDDB0  XOR  03B91F3B=0354C28B

:00402109 0542DCC300              add eax, 00C3DC42
                                 ====>EAX=0354C28B   +   00C3DC42=04189ECD
                                  呵呵,04189ECD的10进制值68722381就是我的注册码了!

:0040210E 7905                    jns 00402115
                                 ====>跳过去

:00402110 99                      cdq
:00402111 33C2                    xor eax, edx
:00402113 2BC2                    sub eax, edx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040210E(C)
|
:00402115 C20400                  ret 0004


—————————————————————————————————
【C++   KeyGen】:


呵呵,算法非常简单。就用我这“超级蹩脚”的C++做 fly 的第七个算法注册机吧!诸位老师见笑了!

#include<iostream.h>
#include<math.h>
void main()
{
unsigned long int k;
cout<<"\n         ★★★★XDos V1.0.322 KeyGen{7th}★★★★\n\n\n\n";
cout<<"请输入标识号:";
   cin >>k;
   k^=0X03B91F3B;
   k+=0X00C3DC42;
cout<<"\n呵呵,注册码:"<<k<<endl;
cout<<"\n\n\nCracked By 巢水工作坊——fly [OCN][FCG] 2003-4-15 0:26 COMPILE";
cout<<"\n\n\n             * * * 按回车退出!* * *";cin.get();cin.get();
}


—————————————————————————————————
【KeyMake之{58th}内存注册机】:

中断地址:00401DF5
中断次数:1
第一字节:3B
指令长度:2


寄存器方式:EAX            
十进制

—————————————————————————————————
【注册信息保存】:


同文件夹下的xdos.ini中:

[Settings]
RKey=68722381

—————————————————————————————————
【整        理】:


标识码:15588784
注册码:68722381

—————————————————————————————————


   
                   Cracked By 巢水工作坊——fly [OCN][FCG]

                          2003-4-15  0:14