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

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

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

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

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

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

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

您的位置:首页精文荟萃破解文章 → 电子书制作软件 算法分析

电子书制作软件 算法分析

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

 

 




(由于时间仓促,难免有不周之处。)
电子书制作软件介绍:我想熟悉电子书制作的人,应该知道这个软件。我喜欢它,是我常用的
一个工具。此软件是用aspack加的壳,很容易去的。未注册版本不能编辑和编译大于15个节点的项目。此次pj只是为了学习它的算法。为了作者的权益,我想各位如果喜欢这个软件
的话,请购买正版软件,以支持作者继续开发下去。同时也请作者海涵。
使用工具:trw2000。win32dasm(我用它只是为了取它的代码)
你可以设中断BPX HMEMCPY 剩下怎么追法就不用我说了吧。
: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此处地址存的就是F0E1
:004F2455 8BC3                    mov eax, ebx
:004F2457 E82864FFFF              call 004E8884
:004F245C 8BC3                    mov eax, ebx
:004F245E E81967FFFF              call 004E8B7C按F8进入吧。
: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比较二者是否相等。
如果你单纯想找到注册码,那么至此就可以了,如果你想学习它的算法,就请继续
往下看。
*******************************************************************
注册算法:
首先是计算注册码的前两位。
:004E89AA BF64000000              mov edi, 00000064它实际就是注册码的前两位
: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按F8进入吧。
欲知它的作用请看下文
:00409F52 80F944                  cmp cl, 44
:00409F55 7415                    je 00409F6C
:00409F57 80F955                  cmp cl, 55
:00409F5A 7422                    je 00409F7E
:00409F5C 80F958                  cmp cl, 58
:00409F5F 0F8530FFFFFF            jne 00409E95
:00409F65 B910000000              mov ecx, 00000010除数
:00409F6A EB17                    jmp 00409F83

:00409F86 31D2                    xor edx, edx为零
:00409F88 F7F1                    div ecx EAX为64
:00409F8A 80C230                  add dl, 30余数DL与30相加
:00409F8D 80FA3A                  cmp dl, 3A
:00409F90 7203                    jb 00409F95
:00409F92 80C207                  add dl, 07

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409F90(C)
|
:00409F95 4E                      dec esi串首地址减1
:00409F96 8816                    mov byte ptr [esi], dl把结果存入ESI中
:00409F98 09C0                    or eax, eax为刚才计算时的商。
:00409F9A 75EA                    jne 00409F86不相等就继续计算,
总结:此部分代码首先是计算注册码的第二位,然后再计算第一位,结果是64
:00409F9C 8D4D9F                  lea ecx, dword ptr [ebp-61]
:00409F9F 29F1                    sub ecx, esi
:00409FA1 8B55DC                  mov edx, dword ptr [ebp-24]
:00409FA4 83FA10                  cmp edx, 00000010
:00409FA7 7601                    jbe 00409FAA
:00409FA9 C3                      ret


***************************
第二步是根据你的用户名以及字符串F0E1计算剩下的几位注册码。注意所计算的ASCII值就是注册码,
用户名的位数乘以2就是注册码的位数。
0167:004E89DC  MOV      DWORD [EBP-14],01
0167:004E89E3  MOV      EAX,[EBP-04]你所输入的用户名
0167:004E89E6  MOV      EDX,[EBP-14]用户名的序号。
0167:004E89E9  MOVZX    EAX,BYTE [EAX+EDX-01]取用户名中的一个字节
0167:004E89EE  ADD      EAX,EDI EDI是上一次计算出的密码。
0167:004E89F0  MOV      ECX,FF除数
0167:004E89F5  CDQ    
0167:004E89F6  IDIV     ECX
0167:004E89F8  MOV      EBX,EDX余数存入EBX中
0167:004E89FA  CMP      ESI,[EBP-0C] ESI是字符串F0E1的序号,
[EBP-0C]是F0E1这个字符串的个数(也就是4)

0167:004E89FD  JNL      004E8A02大于就跳
0167:004E89FF  INC      ESI序号加1
0167:004E8A00  JMP      SHORT 004E8A07
0167:004E8A02  MOV      ESI,01重新赋值为1
0167:004E8A07  MOV      EAX,[EBP-08]<==为字符串F0E1
0167:004E8A0A  MOVZX    EAX,BYTE [EAX+ESI-01]从字符串F0E1中取一个字符。
0167:004E8A0F  XOR      EBX,EAX二者相互异或。运行后EBX的值就是注册码。
0167:004E8A11  LEA      EAX,[EBP-28]
0167:004E8A14  PUSH     EAX
0167:004E8A15  MOV      [EBP-24],EBX把注册码存入[EBP-24]中。
0167:004E8A18  MOV      BYTE [EBP-20],00
0167:004E8A1C  LEA      EDX,[EBP-24]
0167:004E8A1F  XOR      ECX,ECX
0167:004E8A21  MOV      EAX,004E8B68
0167:004E8A26  CALL     0040A194
0167:004E8A2B  MOV      EDX,[EBP-28]
0167:004E8A2E  LEA      EAX,[EBP-10]
0167:004E8A31  CALL     00404C70
0167:004E8A36  MOV      EDI,EBX
0167:004E8A38  INC      DWORD [EBP-14]
0167:004E8A3B  DEC      DWORD [EBP-1C]
0167:004E8A3E  JNZ      004E89E3
举例说明:用户名:abcde(它们的ASCII值分别是61、62、63、64、65)
一、首先按照第一步的方法计算它的前两位注册码即64。
二、根据你的用户名以及字符串F0E1计算后几位注册码。
有几位用户名就得计算几次。
1、计算3、4位的密码。
取用户名的首字a(61),与前一步的注册码(64)相加,结果为c5;然后c5除以FF,
余数为c5,最后取F0E1中的F(ASCII值为46)相异或,结果为83,这就是第三、四
位的注册码。
2、计算5、6位的密码。
取用户名的第二个字符b(62),与前一步的注册码(83)相加,结果为e5;然后e5除以FF,
余数为e5,最后取F0E1中的0(ASCII值为30)相异或,结果为D5,这就是第五、六
位的注册码。
3、计算7、8位的密码。
取用户名的第三个字符c(63),与前一步的注册码(D5)相加,结果为138;然后138除以FF,
余数为39,最后取F0E1中的E(ASCII值为45)相异或,结果为7C,这就是第七、八
位的注册码。
4、计算9、10位的密码。
取用户名的第四个字符d(64),与前一步的注册码(7C)相加,结果为E0;然后E0除以FF,
余数为E0,最后取F0E1中的1(ASCII值为31)相异或,结果为D1,这就是第九、十
位的注册码。
5、计算11、12位的密码。
取用户名的第五个字符e(65),与前一步的注册码(D1)相加,结果为136;然后136除以FF,
余数为37,因为字符串F0E1已经循环完毕,所以重新设指针,取F0E1中的F(ASCII值为46)相异或,结果为71,这就是第11、12
位的注册码。
也就是:用户名:abcde 注册码:6483D57CD171
当用户名为汉字时与此同。
另:因特殊原因,软件名称隐去。如果想知道这个软件的名称及下载地址请给我发消息。


    
    
     
    
    
     

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