« Maxthon清除表单功能 | Main | 转换.HXS为.CHM »

时间提醒助手算法

本机机器码:-1343620097
1、将机器码转为16进制字符串 记为 M1
-1343620097=>(FFFFFFFF舍)AFE9FBFF

2、在M1前加'aB',后加'Cd' 即 'aB'+M1+'Cd' 记为M2
aBAFE9FBFFCd
3、循环 从M2后面开始取字符 Char
9FBFFCd
4、常数 $587C5F33 / Char 的 ASCII值 取余数,余数转化为10进制字符串
d C F F B F 9
43435353555352
5、循环取字符到 length(M2)-6 结束
6、将余数10进制字符串转换为16进制字符串即为注册码。
43435353555352=>278114D1C198

[参考]http://www.pediy.com/bbshtml/bbs7/pediy7-121.htm
[摘录]
--------------------------------------
【Crack总结】:

作者的算法很简单,我不知到里面的浮点运算是干什么用的。

1、将机器码转为16进制字符串 记为 M1
2、在M1前加'aB',后加'Cd' 即 'aB'+M1+'Cd' 记为M2
3、循环 从M2后面开始取字符 Char
4、常数 $587C5F33 / Char 的 ASCII值 取余数,余数转化为10进制字符串
5、循环取字符到 length(M2)-6 结束
6、将余数10进制字符串转换为16进制字符串即为注册码。


贴出注册机delphi源码:
Procedure TForm1.btn1Click(Sender: TObject);
Const
Num: Integer = $587C5F33;
Var
MnoStr, SerailNo: String;
i: Integer;
Begin
MnoStr := 'aB' + IntToHex(StrToInt64(edt1.Text), 1) + 'Cd';

For i := 0 To Length(MnoStr) - 6 Do
SerailNo := SerailNo + FormatFloat('0', Num Mod Ord(MnoStr[Length(MnoStr) - i]));

edt2.Text := IntToHex(StrToInt64(SerailNo), 1);
End;

内存注册机:
中断地址:004949F1
中断次数:1
第一字节:8B
指令长度:3
注册码: 内存方式 寄存器 EAX


大家可以验证一下:
机器码:1072429567
注册码:278114D14C6B
------------------------------------------------------


RelatedEntries:

TrackBack

TrackBack URL for this entry:
http://www.trucy.org/cgi-bin/blog/mt-tb.cgi/2113

Post a comment