************************************************************************
** The Tutorial For QuickCHM ver 2.01 By LostInUnASM 2003.3.6 **
************************************************************************
声明:
今天想用QuickCHM把以前搜集的材料整理一下,才发现由于没有注册,不能编辑和编译大于15个节点的项目 :(于是决定自己动手丰衣足食 在这里先向吴新兵老兄陪个不是:呵呵,大哥你也喜欢用DELPHI写程式,小弟也一样,有空可以交流经验 这个QuickCHM的版本好象不是最新的吧,不知道你有何新的研究成果
程序:QuickChM 2.01
类型:Delphi Aspack
工具:W32Dasm、ProDump、Dede、TRW2000 //高手完全可以不用那么多吧
分析:先用PRODUMP脱壳,再用W32DASM反汇编,结合DEDE可以找到具体比较注册码的关键地方是
:004F246D 8B4334 mov eax, dword ptr [ebx+34]
:004F2470 8B55F8 mov edx, dword ptr [ebp-08]
:004F2473 E83429F1FF call 00404DAC ==》这里是具体比较的CALL LstrCmp Call
:004F2478 0F85BA000000 jne 004F2538 ==》在这里修改就可以暴力破解了 :P
不过只要你重新启动程序,依然会出现UnRegister的字样,SO继续跟踪程序启动时调用了哪些过程
发现:
* Possible StringData Ref from Code Obj ->"F0E1" ==》注意:这是一个很有用的字符串
|
:004EDC9D BAB8E04E00 mov edx, 004EE0B8
:004EDCA2 8BC7 mov eax, edi
:004EDCA4 E8DBABFFFF call 004E8884 ==》这是一个特别重要的CALL哦!
:004EDCA9 8BC7 mov eax, edi
:004EDCAB E8CCAEFFFF call 004E8B7C ==》这也很重要哦
:004EDCB0 8B4734 mov eax, dword ptr [edi+34] ==》存储正确的注册码
:004EDCB3 8B55F0 mov edx, dword ptr [ebp-10]
:004EDCB6 E8F170F1FF call 00404DAC ==》显然这个CALL和上面那个所调用的过程a一样
:004EDCBB 7532 jne 004EDCEF ==》修改这里就可去除UnRegister的字样了
用户名: L o s t I n U n A s m
注册码:64 F6 56 8C 30 3F 9D B7 17 1E A1 4A
使用TRW在004EDCB0处设端点,再按了无数个F10后,终于有所发现。
跟踪后发现其计算规律如下:
1、首字母的ASCII值X加100 除 255得余数X1,X1 再XOR 字符串F0E1中相对应的第一个字母的ASCII值得出 数X2 再把该数转换为16进制就可以了。
2、把第二字母的ASCII值Y加上 X2,取得 Y1 Y1 再XOR 字符串F0E1中想对应的第二个字母的ASCII值得出
数X3 再把该数转换为16进制就可以了。 依次类推.
EG: Name: F U C K Key:68487498(随便输入)
70 85 67 75
Add 100 236 114 240
---------------------------------
170 321 181 315
Mod 255 255 255 255
---------------------------------
170 66 181 60
XOR 70 48 69 49 ====>70 48 69 49 分别为F0E1的ASCII值
---------------------------------
236 114 240 13
InttoHex EC 72 F0 0D
70 48 69 49 ===》正确的注册码是: 64EC72F00D (不要漏了‘64’哦)
F 0 E 1
于是顺利地写出了注册机,用DELPHI 6.0
program KeygenForQChm;
{$APPTYPE CONSOLE}
Uses sysutils;
Var
Name,XorStr,Key:String;
LastModResult,Mr:Integer;
StrLen,I,J,IntXor:Integer;
begin
writeln('===========================================================');
writeln('This is a Keygen For QuickCHM ver 2.01 ----By LostInUnAsm');
writeln('===========================================================');
Write('Please Enter your Name(Length>=4):');
LastModResult:=100;
XorStr:='F0E1';
J:=1;
Read(Name);
StrLen:=Length(Name);
For I:=1 to StrLen do
Begin
Mr:=(Ord(Name[i])+LastModResult) Mod 255;
IntXor:=Mr Xor Ord(XorStr[J]);
Key:=Key+InttoHex(IntXor,2);
LastModResult:=IntXor;
If J<4 then Inc(J) Else J:=1;
End;
Writeln('Correct Serial Is: 64',Key); //注意,每个注册码都是以64开头的
Readln;
Readln;
end.
===================================忙了好几个小时!累死我了!=============================
PS:破解完全不用拘泥于形式,如果你想简单得到注册码,完全可以使用WINHEX,
用她来查看QuickCHM的内存,几秒就可以找到正确的注册码(好象是根据谁的理论,正确的注册码一定在错误的注册码附近)
相关视频
相关阅读 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条评论>>