文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页精文荟萃破解文章 → QuickCHM v2.01破解分析 算法分析

QuickCHM v2.01破解分析 算法分析

时间:2004/10/15 0:55:00来源:本站整理作者:蓝点我要评论(0)

 软件说明:CHM制作工具
下载地址http://www.skycn.com/download.phpid=6785&url=http://jshttp.skycn.net/down/qchm_setup.exe
破解工具:TRW2000

过程:
中断后F10来到这:
===============================================================
:004F2432 33C9                    xor ecx, ecx
:004F2434 B201                    mov dl, 01
:004F2436 A198864E00              mov eax, dword ptr [004E8698]
:004F243B E8AC63FFFF              call 004E87EC
:004F2440 8BD8                    mov ebx, eax
:004F2442 8B55FC                  mov edx, dword ptr [ebp-04]
:004F2445 8BC3                    mov eax, ebx
:004F2447 E89464FFFF              call 004E88E0
:004F244C C6434400                mov [ebx+44], 00

* Possible StringData Ref from Code Obj ->"F0E1"<----------------注意这些特殊字符以后和它进行计算
                                 |
:004F2450 BA70254F00              mov edx, 004F2570<-------------取特殊字符(EDX为“F0E1”)
:004F2455 8BC3                    mov eax, ebx
:004F2457 E82864FFFF              call 004E8884
:004F245C 8BC3                    mov eax, ebx
:004F245E E81967FFFF              call 004E8B7C<-----------------具体算法在里面(跟进)
:004F2463 837B3400                cmp dword ptr [ebx+34], 00000000<----判断注册码是否存在
:004F2467 0F84CB000000            je 004F2538
:004F246D 8B4334                  mov eax, dword ptr [ebx+34]<---真的注册码
:004F2470 8B55F8                  mov edx, dword ptr [ebp-08]<---假的注册码
:004F2473 E83429F1FF              call 00404DAC<-----------------在此CALL里比较
:004F2478 0F85BA000000            jne 004F2538<------------------不跳则注册成功
:004F247E B201                    mov dl, 01

来到这里:
============================================================
:004E8B7C 55                      push ebp
:004E8B7D 8BEC                    mov ebp, esp
:004E8B7F 6A00                    push 00000000
:004E8B81 53                      push ebx
................
................
:004E8BB5 53                      push ebx
:004E8BB6 8D45FC                  lea eax, dword ptr [ebp-04]
:004E8BB9 50                      push eax
:004E8BBA 8B4E40                  mov ecx, dword ptr [esi+40]
:004E8BBD 8B5630                  mov edx, dword ptr [esi+30]
:004E8BC0 8BC6                    mov eax, esi
:004E8BC2 E875FDFFFF              call 004E893C<-----------------跟进
:004E8BC7 8B55FC                  mov edx, dword ptr [ebp-04]

来到这里:
==============================================================
:004E893C 55                      push ebp
:004E893D 8BEC                    mov ebp, esp
:004E893F 83C4C4                  add esp, FFFFFFC4
:004E8942 53                      push ebx
:004E8943 56                      push esi
...............
...............
:004E899E 33F6                    xor esi, esi
:004E89A0 807D0C00                cmp byte ptr [ebp+0C], 00
:004E89A4 0F849B000000            je 004E8A45
:004E89AA BF64000000              mov edi, 00000064<-------------EDI赋初值64(真注册码的第一位)
:004E89AF 8D45F0                  lea eax, dword ptr [ebp-10]
:004E89B2 50                      push eax
:004E89B3 897DDC                  mov dword ptr [ebp-24], edi
:004E89B6 C645E000                mov [ebp-20], 00
:004E89BA 8D55DC                  lea edx, dword ptr [ebp-24]
:004E89BD 33C9                    xor ecx, ecx

* Possible StringData Ref from Code Obj ->"%1.2x"
                                 |
:004E89BF B8688B4E00              mov eax, 004E8B68
:004E89C4 E8CB17F2FF              call 0040A194
:004E89C9 8B45FC                  mov eax, dword ptr [ebp-04]
:004E89CC E897C2F1FF              call 00404C68
:004E89D1 85C0                    test eax, eax
:004E89D3 0F8E2F010000            jle 004E8B08
:004E89D9 8945E4                  mov dword ptr [ebp-1C], eax
:004E89DC C745EC01000000          mov [ebp-14], 00000001


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004E8A3E(C)
|
:004E89E3 8B45FC                  mov eax, dword ptr [ebp-04]<-----------取注册名
:004E89E6 8B55EC                  mov edx, dword ptr [ebp-14]
:004E89E9 0FB64410FF              movzx eax, byte ptr [eax+edx-01]<------取一位注册名
:004E89EE 03C7                    add eax, edi<--------------------------与EDI相加
:004E89F0 B9FF000000              mov ecx, 000000FF<---------------------ECX赋值FF
:004E89F5 99                      cdq
:004E89F6 F7F9                    idiv ecx<------------------------------除以FF
:004E89F8 8BDA                    mov ebx, edx<--------------------------余数存入EBX(设此值为X)
:004E89FA 3B75F4                  cmp esi, dword ptr [ebp-0C]<-----------比较ESI是否大于等于4([ebp-0c]==4(特殊字符是4位,如大于则从第一位再来)
:004E89FD 7D03                    jge 004E8A02
:004E89FF 46                      inc esi
:004E8A00 EB05                    jmp 004E8A07

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004E89FD(C)
|
:004E8A02 BE01000000              mov esi, 00000001<----------------------ESI大于等于4则重新赋值为1

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004E8A00(U)
|
:004E8A07 8B45F8                  mov eax, dword ptr [ebp-08]<------------取要进行运算的特殊字符(F0E1)
:004E8A0A 0FB64430FF              movzx eax, byte ptr [eax+esi-01]<-------取其中一位(设为Y)
:004E8A0F 33D8                    xor ebx, eax<---------------------------值X与一位特殊字符Y异或(结果为一位注册码)
:004E8A11 8D45D8                  lea eax, dword ptr [ebp-28]
:004E8A14 50                      push eax
:004E8A15 895DDC                  mov dword ptr [ebp-24], ebx
:004E8A18 C645E000                mov [ebp-20], 00
:004E8A1C 8D55DC                  lea edx, dword ptr [ebp-24]
:004E8A1F 33C9                    xor ecx, ecx

* Possible StringData Ref from Code Obj ->"%1.2x"
                                 |
:004E8A21 B8688B4E00              mov eax, 004E8B68
:004E8A26 E86917F2FF              call 0040A194
:004E8A2B 8B55D8                  mov edx, dword ptr [ebp-28]
:004E8A2E 8D45F0                  lea eax, dword ptr [ebp-10]
:004E8A31 E83AC2F1FF              call 00404C70
:004E8A36 8BFB                    mov edi, ebx
:004E8A38 FF45EC                  inc [ebp-14]<------特殊字符计数器+1
:004E8A3B FF4DE4                  dec [ebp-1C]<------注册名长度计数器-1
:004E8A3E 75A3                    jne 004E89E3<------判断运算完没有,没有则继续
:004E8A40 E9C3000000              jmp 004E8B08

================================================================
算法总结:
1、注册码前二位为64。
2、其它位为:每位注册名+前两位注册码的值 mod FF 再与特殊字符(“F0E1”往后一次取一位,循环取),相异或的值。
3、注册码都为大写字母。

注册名:master
注册码:6497C879DC0446

附TC2.0注册机源码:
main()
{
short c[20],x1,x2;
int i,j,m;
char a[20],b[4]={"F0E1"};
c[0]=0x64;
clrscr();
printf("===============================\n");
printf("       This Is QC Keygen       \n");
printf("       made by master[FCG]     \n");
printf("===============================\n");
printf("\nPlease Input Your name: ");
gets(a);
j=strlen(a);
for (i=0;ic[i+1]=((a[i]+c[i])%0xff)^b[i%4];
printf("Your Code Is: ");
for (i=0;i{
x1=c[i]/16;
x2=c[i]%16;
if (x1<10) x1=x1+48;
else x1=x1+55;
if (x2<10) x2=x2+48;
else x2=x2+55;
printf("%c%c",x1,x2);
}
}


    
    
     
    
    
     

相关阅读 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破解如何给软件脱壳基础教程