QQ聊天记录察看器 5.3分析及注册机源码
QQ聊天记录察看器 5.3简单分析QQ聊天记录查看器5.3版。
附注册机源码:
为了找到自已的QQ密码,网上狂搜,的确没有有效的软件。Download这个东东,还要注册。无聊看了一下。贴给别人看。
呵无密码查看聊天记录,还真的有效。
0046EF2F|.E8 2096FCFF call 00438554 ;取得输入的假注册码1234567890123456,返回它的长度0x10
0046EF34|.8B55 F4 mov edx, dword ptr
0046EF37|.B8 E89C4800 mov eax, 00489CE8 ;ASCII "(n?
0046EF3C|.E8 8F53F9FF call 004042D0
0046EF41|.A1 E89C4800 mov eax, dword ptr
0046EF46|.E8 19FDFFFF call 0046EC64 ;对输入的注册码进行简的Xor运算,并对比真假
0046EF4B|.A3 EC9C4800 mov dword ptr , eax
0046EF50|.833D EC9C4800>cmp dword ptr , 0
0046EF57|.74 34 je short 0046EF8D
0046EF59|.6A 00 push 0
0046EF5B|.A1 E89C4800 mov eax, dword ptr
0046EF60|.E8 C757F9FF call 0040472C
0046EF65|.50 push eax
0046EF66|.68 D0EF4600 push 0046EFD0 ;注册成功
0046EF6B|.8B45 FC mov eax, dword ptr
=====================================================================================
0046EC64/$55 push ebp
0046EC65|.8BEC mov ebp, esp
0046EC67|.83C4 C8 add esp, -38
0046EC6A|.8945 FC mov dword ptr , eax ;假注册码1234567890123456
0046EC6D|.8B45 FC mov eax, dword ptr
0046EC70|.E8 A75AF9FF call 0040471C
0046EC75|.33C0 xor eax, eax
0046EC77|.55 push ebp
0046EC78|.68 A3ED4600 push 0046EDA3
0046EC7D|.64:FF30 push dword ptr fs:
0046EC80|.64:8920 mov dword ptr fs:, esp
0046EC83|.33C0 xor eax, eax
0046EC85|.8945 F8 mov dword ptr , eax
0046EC88|.8B45 FC mov eax, dword ptr
0046EC8B|.E8 A458F9FF call 00404534
0046EC90|.83F8 10 cmp eax, 10 ;注册码长度为0x10位
0046EC93|.0F8C F4000000 jl 0046ED8D
0046EC99|.8B45 FC mov eax, dword ptr
0046EC9C|.E8 9358F9FF call 00404534
0046ECA1|.83F8 10 cmp eax, 10
0046ECA4|.0F8F E3000000 jg 0046ED8D
0046ECAA|.8B45 FC mov eax, dword ptr ;假注册码
0046ECAD|.BA BCED4600 mov edx, 0046EDBC ;1163659294813585
0046ECB2|.E8 C159F9FF call 00404678
0046ECB7|.0F84 D0000000 je 0046ED8D
0046ECBD|.8B45 FC mov eax, dword ptr
0046ECC0|.BA D8ED4600 mov edx, 0046EDD8 ;0386848021608060
0046ECC5|.E8 AE59F9FF call 00404678
0046ECCA|.0F84 BD000000 je 0046ED8D
0046ECD0|.8B45 FC mov eax, dword ptr
0046ECD3|.BA F4ED4600 mov edx, 0046EDF4 ;8319e4005f00pyg0//呵呵,这可是PYG的标记?
0046ECD8|.E8 9B59F9FF call 00404678
0046ECDD|.0F84 AA000000 je 0046ED8D
0046ECE3|.8B45 FC mov eax, dword ptr
0046ECE6|.BA 10EE4600 mov edx, 0046EE10 ;0566838690673180
0046ECEB|.E8 8859F9FF call 00404678
0046ECF0|.0F84 97000000 je 0046ED8D ;以上都是黑名单
0046ECF6|.33C0 xor eax, eax
0046ECF8|.8945 DC mov dword ptr , eax
0046ECFB|>8B45 FC /mov eax, dword ptr ;假注册码
0046ECFE|.8B55 DC |mov edx, dword ptr
0046ED01|.8A0410 |mov al, byte ptr
0046ED04|.E8 13FFFFFF |call 0046EC1C
0046ED09|.8B55 DC |mov edx, dword ptr
0046ED0C|.884415 CB |mov byte ptr , al
0046ED10|.FF45 DC |inc dword ptr
0046ED13|.837D DC 10 |cmp dword ptr , 10
0046ED17|.^ 75 E2 \jnz short 0046ECFB ;0012F2CB 01 02 03 04 05 06 07 08 09 00 01 02 03 04 05 06 ..
//------------------------------------------------------------------------
0046EC1C/$55 push ebp
0046EC1D|.8BEC mov ebp, esp
0046EC1F|.51 push ecx
0046EC20|.8845 FF mov byte ptr , al
0046EC23|.807D FF 30 cmp byte ptr , 30
0046EC27|.72 10 jb short 0046EC39
0046EC29|.807D FF 39 cmp byte ptr , 39
0046EC2D|.77 0A ja short 0046EC39
0046EC2F|.8A45 FF mov al, byte ptr
0046EC32|.2C 30 sub al, 30
0046EC34|.8845 FD mov byte ptr , al
0046EC37|.EB 1C jmp short 0046EC55
0046EC39|>807D FF 41 cmp byte ptr , 41
0046EC3D|.72 12 jb short 0046EC51
0046EC3F|.807D FF 46 cmp byte ptr , 46
0046EC43|.77 0C ja short 0046EC51
0046EC45|.8A45 FF mov al, byte ptr
0046EC48|.2C 41 sub al, 41
0046EC4A|.04 0A add al, 0A
0046EC4C|.8845 FD mov byte ptr , al
0046EC4F|.EB 04 jmp short 0046EC55
0046EC51|>C645 FD FF mov byte ptr , 0FF ;如果是小写字母,则以FF代替,否则原样输出
0046EC55|>8A45 FD mov al, byte ptr
0046EC58|.8845 FE mov byte ptr , al
0046EC5B|.8A45 FE mov al, byte ptr
0046EC5E|.59 pop ecx
0046EC5F|.5D pop ebp
0046EC60\.C3 retn
//---------------------------------------------------------------------------------
0046ED19|.33C0 xor eax, eax
0046ED1B|.8945 E0 mov dword ptr , eax
0046ED1E|>8B45 E0 /mov eax, dword ptr ;假注册码,两两组合成一个新的Byte
0046ED21|.03C0 |add eax, eax
0046ED23|.8A4405 CC |mov al, byte ptr
0046ED27|.C1E0 04 |shl eax, 4
0046ED2A|.8B55 E0 |mov edx, dword ptr
0046ED2D|.03D2 |add edx, edx
0046ED2F|.024415 CB |add al, byte ptr
0046ED33|.8B55 E0 |mov edx, dword ptr
0046ED36|.884415 EF |mov byte ptr , al
0046ED3A|.FF45 E0 |inc dword ptr
0046ED3D|.837D E0 09 |cmp dword ptr , 9
0046ED41|.^ 75 DB \jnz short 0046ED1E ;0012F2EF21 43 65 87 09 21 43 65 就称为N1..N8吧
0046ED43|.8A45 F2 mov al, byte ptr ;现在捉对厮杀
0046ED46|.3245 EF xor al, byte ptr ;N1 xor N4
0046ED49|.8845 E6 mov byte ptr , al
0046ED4C|.8A45 F0 mov al, byte ptr
0046ED4F|.3245 F6 xor al, byte ptr ;N2 xor N8
0046ED52|.8845 E7 mov byte ptr , al
0046ED55|.8A45 F1 mov al, byte ptr
0046ED58|.3245 F4 xor al, byte ptr ;N3 xor N6
0046ED5B|.8845 E8 mov byte ptr , al
0046ED5E|.8A45 F5 mov al, byte ptr
0046ED61|.3245 F3 xor al, byte ptr ;N5 xor N7
0046ED64|.8845 E9 mov byte ptr , al ;以上是逐对进行Xor,生成另一组Byte
0046ED67|.807D E6 38 cmp byte ptr , 38 ;结果与常数比对,第一个Byte
0046ED6B|.75 1B jnz short 0046ED88
0046ED6D|.807D E7 6E cmp byte ptr , 6E ;第二个Byte
0046ED71|.75 15 jnz short 0046ED88
0046ED73|.807D E8 4E cmp byte ptr , 4E ;第三个Byte
0046ED77|.75 0F jnz short 0046ED88
0046ED79|.807D E9 1A cmp byte ptr , 1A ;第四个Byte
0046ED7D|.75 09 jnz short 0046ED88
0046ED7F|.C745 F8 FFFFF>mov dword ptr , -1 ;注册标志赋值
0046ED86|.EB 05 jmp short 0046ED8D
0046ED88|>33C0 xor eax, eax
0046ED8A|.8945 F8 mov dword ptr , eax ;注册标志得到0,注册失败
0046ED8D|>33C0 xor eax, eax
0046ED8F|.5A pop edx
0046ED90|.59 pop ecx
0046ED91|.59 pop ecx
0046ED92|.64:8910 mov dword ptr fs:, edx
0046ED95|.68 AAED4600 push 0046EDAA
0046ED9A|>8D45 FC lea eax, dword ptr
0046ED9D|.E8 DA54F9FF call 0040427C
0046EDA2\.C3 retn
===============================================================================
假设输入假注册码:
1234567890123456
简单处理之,如果是小写字母则以FF代替,否则原样输出:
即:
01 02 03 04 05 06 07 08 09 00 01 02 03 04 05 06
简单处理成:
21 43 65 87 09 21 43 65
我且依序取名为:
N1 N2 N3 N4 N5 N6 N7 N8
简单的Xor运算:
N1 xor N4==A6结果如果是38则通过
N2 xor N8==26结果如果是6E则通过
N3 xor N6==44结果如果是4E则通过
N5 xor N7==4A结果如果是1A则通过
判断:
A6==38
26==6E
44==4E
4A==1A
//=============================================================================
于是有简单的注册机:
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage('Code by wofan'+#13+'QQ:339171218'+#13+'2007-3-27');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
SN:array of byte;
t:array of byte;
i:integer;
str:string;
begin
Randomize;
{
SN_str:='';
fillchar(sn,sizeof(sn),0);
fillchar(t,sizeof(t),0);
}
SN:=random(10); //随机生成第某些位置的注册码字符
SN:=random(10); //Random(x)将生成一个0<=num<x的数
SN:=random(10);
SN:=random(10);
SN:=random(10);
SN:=random(10);
SN:=random(10);
SN:=random(10);
t:=(SN shl 4+SN) xor $38;//捉对厮杀
t:=(SN shl 4+SN) xor $6E;
t:=(SN shl 4+SN) xor $4E;
t:=(SN shl 4+SN) xor $1A;
SN:=t shr 4; //从结果中提取出注册字符
SN:=t and $F;
SN:=t shr 4;
SN:=t and $F;
SN:=t shr 4;
SN:=t and $F;
SN:=t shr 4;
SN:=t and $F;
for i:=0 to 15 do
SN_str:=SN_str+inttohex(SN,1);
edit1.Text:=SN_str; //输出注册码
end; 注册机源码怎么用 这个不错!学习下了! SN_str:=SN_str+inttohex(SN,1);
inttohex这里编译通过不了的啊?
var
SN:array of byte;
t:array of byte;
i:integer;
str:string;//这个变量应该是SN_str吧? 学习,不断提高自己
页:
[1]