破解心得之3DMark2001篇
作者:时空幻影
时间:2001年4月17日
工具:W23DASM白金版汉化版、TRW2000 v1.22注册版
用TRW2000载入3DMark2001.EXE后按F5让程序继续运行,然后点菜单中的“Register->Register 3DMark2001...”,
输入User Name:时空幻影
输入Registration Code:12345-67890-09876-54321
按Ctrl+N激活TRW2000,用BPX HMEMCPY设置断点,再按F5,点OK,程序会被拦。
输入PMODULE后再回车,进入3DMark2001的领空,再一直按F10到下面这个地方:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00439CD4(C)
|
:00439D33 8B4B48 mov ecx, dword ptr [ebx+48]
:00439D36 8D542410 lea edx, dword ptr [esp+10]
:00439D3A 52 push edx
:00439D3B 8D442424 lea eax, dword ptr [esp+24]
:00439D3F 50 push eax
:00439D40 E8AB7CFDFF call 004119F0 <--按F8进入
:00439D45 83F803 cmp eax, 00000003
:00439D48 7737 ja 00439D81
:00439D4A FF2485189E4300 jmp dword ptr [4*eax+00439E18]
:00439D51 6A01 push 00000001
:00439D53 8BCD mov ecx, ebp
进入后再一直按F10到下面这个地方:
* Referenced by a CALL at Address:
|:00439D40
|
:004119F0 8B442408 mov eax, dword ptr [esp+08]
:004119F4 56 push esi
:004119F5 57 push edi
:004119F6 6A01 push 00000001
:004119F8 8BF9 mov edi, ecx
:004119FA 8B4C2410 mov ecx, dword ptr [esp+10]
:004119FE 50 push eax
:004119FF 51 push ecx
:00411A00 8BCF mov ecx, edi
:00411A02 E839030000 call 00411D40 <--按F8进入
:00411A07 8BF0 mov esi, eax
:00411A09 85F6 test esi, esi
:00411A0B 7507 jne 00411A14
:00411A0D 8BCF mov ecx, edi
:00411A0F E8ACFEFFFF call 004118C0
进入后再一直按F10到下面这个地方:
* Possible StringData Ref from Code Obj ->"竴 j"
|
:00411D42 68E2186600 push 006618E2
:00411D47 64A100000000 mov eax, dword ptr fs:[00000000]
:00411D4D 50 push eax
:00411D4E 64892500000000 mov dword ptr fs:[00000000], esp
:00411D55 83EC24 sub esp, 00000024
:00411D58 53 push ebx
:00411D59 56 push esi
:00411D5A 8BF1 mov esi, ecx
:00411D5C 57 push edi
:00411D5D 8974240C mov dword ptr [esp+0C], esi
:00411D61 E8CA21FFFF call 00403F30
:00411D66 8B00 mov eax, dword ptr [eax]
:00411D68 33DB xor ebx, ebx
:00411D6A 3BC3 cmp eax, ebx
:00411D6C 0F85E6010000 jne 00411F58
:00411D72 8B7C2444 mov edi, dword ptr [esp+44]
:00411D76 57 push edi
:00411D77 8BCE mov ecx, esi
:00411D79 E8A2FCFFFF call 00411A20 <--按F8进入
:00411D7E 84C0 test al, al
:00411D80 0F84B9010000 je 00411F3F
:00411D86 385C2448 cmp byte ptr [esp+48], bl
:00411D8A 0F848C010000 je 00411F1C
:00411D90 8B5704 mov edx, dword ptr [edi+04]
:00411D93 3BD3 cmp edx, ebx
:00411D95 7506 jne 00411D9D
进入后再一直按F10到下面这个地方:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00411A84(C)
|
:00411AA6 8B4C2410 mov ecx, dword ptr [esp+10]
:00411AAA 8B4904 mov ecx, dword ptr [ecx+04]
:00411AAD 8B11 mov edx, dword ptr [ecx]
:00411AAF 8D442414 lea eax, dword ptr [esp+14]
:00411AB3 50 push eax
:00411AB4 895C2430 mov dword ptr [esp+30], ebx
:00411AB8 FF520C call [edx+0C] <--按F8进入
:00411ABB 8AD8 mov bl, al
:00411ABD 8B442418 mov eax, dword ptr [esp+18]
:00411AC1 85C0 test eax, eax
:00411AC3 5F pop edi
:00411AC4 5D pop ebp
:00411AC5 741C je 00411AE3
:00411AC7 8D48FF lea ecx, dword ptr [eax-01]
:00411ACA 8A01 mov al, byte ptr [ecx]
:00411ACC 84C0 test al, al
:00411ACE 740A je 00411ADA
:00411AD0 3CFF cmp al, FF
:00411AD2 7406 je 00411ADA
:00411AD4 FEC8 dec al
:00411AD6 8801 mov byte ptr [ecx], al
:00411AD8 EB09 jmp 00411AE3
进入后再一直按F10到下面这个地方:
* Reference To: MFC42.Ordinal:0337, Ord:0337h
|
:005FE0E4 E87F290000 Call 00600A68
:005FE0E9 83C404 add esp, 00000004
:005FE0EC 8D542450 lea edx, dword ptr [esp+50]
:005FE0F0 52 push edx
:005FE0F1 6A14 push 00000014
:005FE0F3 50 push eax
:005FE0F4 8D4C241C lea ecx, dword ptr [esp+1C]
:005FE0F8 89442420 mov dword ptr [esp+20], eax
:005FE0FC E8AFA9F9FF call 00598AB0
:005FE101 8B442414 mov eax, dword ptr [esp+14]
:005FE105 83C050 add eax, 00000050
:005FE108 89442418 mov dword ptr [esp+18], eax
:005FE10C 8944241C mov dword ptr [esp+1C], eax
:005FE110 8D4C2410 lea ecx, dword ptr [esp+10]
:005FE114 51 push ecx
:005FE115 8D542434 lea edx, dword ptr [esp+34]
:005FE119 52 push edx
:005FE11A 8D442428 lea eax, dword ptr [esp+28]
:005FE11E 50 push eax
:005FE11F 8BCE mov ecx, esi
:005FE121 C644245402 mov [esp+54], 02
:005FE126 E8450A0000 call 005FEB70 <--把注册码的每个字符(除开"-")与密码表中的字符比较,
:005FE12B 84C0 test al, al 求出该字符在密码表中的序号。
:005FE12D 755B jne 005FE18A <--跳至注册码计算部分
:005FE12F 8B4C2418 mov ecx, dword ptr [esp+18]
:005FE133 8B542414 mov edx, dword ptr [esp+14]
:005FE137 51 push ecx
:005FE138 52 push edx
:005FE139 8D4C2418 lea ecx, dword ptr [esp+18]
:005FE13D C644245001 mov [esp+50], 01
:005FE142 E849ADE6FF call 00468E90
:005FE147 8B442414 mov eax, dword ptr [esp+14]
:005FE14B 50 push eax
以下为注册码计算部分:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:005FE12D(C)
|
:005FE18A 8B4C2414 mov ecx, dword ptr [esp+14] <--[ECX]="12345678900987654321"中每个
字符在密码表中的序号,每个占4个字节
:005FE18E 8B5108 mov edx, dword ptr [ecx+08]
:005FE191 8B410C mov eax, dword ptr [ecx+0C]
:005FE194 8B6904 mov ebp, dword ptr [ecx+04]
:005FE197 8B742428 mov esi, dword ptr [esp+28] <--ESI为密码表的长度,即21h
:005FE19B 03C2 add eax, edx
:005FE19D 8B11 mov edx, dword ptr [ecx]
:005FE19F 03C5 add eax, ebp
:005FE1A1 03C2 add eax, edx
:005FE1A3 33D2 xor edx, edx
:005FE1A5 F7F6 div esi
:005FE1A7 8B5910 mov ebx, dword ptr [ecx+10]
:005FE1AA 3BDA cmp ebx, edx
:005FE1AC 0F8510010000 jne 005FE2C2 <--这个和以下的JNE都不能跳转,否则GAME OVER
:005FE1B2 8B511C mov edx, dword ptr [ecx+1C]
:005FE1B5 8B4120 mov eax, dword ptr [ecx+20]
:005FE1B8 8B5918 mov ebx, dword ptr [ecx+18]
:005FE1BB 03C2 add eax, edx
:005FE1BD 8B5114 mov edx, dword ptr [ecx+14]
:005FE1C0 03C3 add eax, ebx
:005FE1C2 03C2 add eax, edx
:005FE1C4 33D2 xor edx, edx
:005FE1C6 F7F6 div esi
:005FE1C8 8B6924 mov ebp, dword ptr [ecx+24]
:005FE1CB 3BEA cmp ebp, edx
:005FE1CD 0F85EF000000 jne 005FE2C2
:005FE1D3 8B5130 mov edx, dword ptr [ecx+30]
:005FE1D6 8B4134 mov eax, dword ptr [ecx+34]
:005FE1D9 03C2 add eax, edx
:005FE1DB 03412C add eax, dword ptr [ecx+2C]
:005FE1DE 034128 add eax, dword ptr [ecx+28]
:005FE1E1 33D2 xor edx, edx
:005FE1E3 F7F6 div esi
:005FE1E5 8B5938 mov ebx, dword ptr [ecx+38]
:005FE1E8 3BDA cmp ebx, edx
:005FE1EA 0F85D2000000 jne 005FE2C2
:005FE1F0 8B5110 mov edx, dword ptr [ecx+10]
:005FE1F3 8D042B lea eax, dword ptr [ebx+ebp]
:005FE1F6 03C2 add eax, edx
:005FE1F8 33D2 xor edx, edx
:005FE1FA F7F6 div esi
:005FE1FC 8B793C mov edi, dword ptr [ecx+3C]
:005FE1FF 3BFA cmp edi, edx
:005FE201 0F85B9000000 jne 005FE2C0
:005FE207 8B5124 mov edx, dword ptr [ecx+24]
:005FE20A 8D041F lea eax, dword ptr [edi+ebx]
:005FE20D 03C2 add eax, edx
:005FE20F 33D2 xor edx, edx
:005FE211 F7F6 div esi
:005FE213 8B6940 mov ebp, dword ptr [ecx+40]
:005FE216 3BEA cmp ebp, edx
:005FE218 0F85A2000000 jne 005FE2C0
:005FE21E 8D042F lea eax, dword ptr [edi+ebp]
:005FE221 03C3 add eax, ebx
:005FE223 33D2 xor edx, edx
:005FE225 F7F6 div esi
:005FE227 8B5944 mov ebx, dword ptr [ecx+44]
:005FE22A 3BDA cmp ebx, edx
:005FE22C 0F858E000000 jne 005FE2C0
:005FE232 8D042B lea eax, dword ptr [ebx+ebp]
:005FE235 03C7 add eax, edi
:005FE237 33D2 xor edx, edx
:005FE239 F7F6 div esi
:005FE23B 8B4148 mov eax, dword ptr [ecx+48]
:005FE23E 3BC2 cmp eax, edx
:005FE240 757E jne 005FE2C0
:005FE242 03C3 add eax, ebx
:005FE244 03C5 add eax, ebp
:005FE246 33D2 xor edx, edx
:005FE248 F7F6 div esi
:005FE24A 39514C cmp dword ptr [ecx+4C], edx
:005FE24D 7571 jne 005FE2C0
:005FE24F 51 push ecx
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Passcode="ABCDEFHJKLMNPQRSTUVWXYZ0123456789";
AnsiString r;
AnsiString s1,s2,s3,s4;
int i,k,t1,t2,t3,m[5];
if (Edit1->Text=="") r="shikonghuanying@sina.com";
else
{
r=Edit1->Text.Delete(6,2);
r=r.Delete(11,2);
r=r.Delete(16,2);
r=r.Delete(3,1);
}
for (i=1,t1=0;i<5;i++)
{
k=int(r[i])%0x21;
t1=t1+k;
s1=s1+Passcode[k+1];
}
s1=s1+Passcode[t1%0x21+1];
for (i=6,t2=0;i<10;i++)
{
k=int(r[i])%0x21;
t2=t2+k;
s2=s2+Passcode[k+1];
}
s2=s2+Passcode[t2%0x21+1];
for (i=11,t3=0;i<15;i++)
{
k=int(r[i])%0x21;
t3=t3+k;
s3=s3+Passcode[k+1];
}
s3=s3+Passcode[t3%0x21+1];
m[0]=(t1+t2+t3)%0x21;
m[1]=(t2+t3+m[0])%0x21;
m[2]=(t3+m[0]+m[1])%0x21;
m[3]=(m[0]+m[1]+m[2])%0x21;
m[4]=(m[1]+m[2]+m[3])%0x21;
s4+=Passcode[m[0]+1];
s4+=Passcode[m[1]+1];
s4+=Passcode[m[2]+1];
s4+=Passcode[m[3]+1];
s4+=Passcode[m[4]+1];
Edit1->Text=s1+"-"+s2+"-"+s3+"-"+s4;
}
//---------------------------------------------------------------------------
相关视频
相关阅读 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破解如何给软件脱壳基础教程
查看所有0条评论>>