首页
社区
课程
招聘
[原创]通用英汉汉英辞典 2005 Beta 简单算法分析
发表于: 2005-6-18 17:06 3998

[原创]通用英汉汉英辞典 2005 Beta 简单算法分析

2005-6-18 17:06
3998
【文章名称】:通用英汉汉英辞典 2005 Beta 简单算法分析
【文章作者】:lnn1123
【组织名称】:PCG
【软件名称】:通用英汉汉英辞典 2005 Beta
【下载地址】:http://www2.skycn.com/soft/959.html
【破解工具】:ollydbg1.10,peid
【保护方式】:注册码+启动NAG
【软件限制】:
【破解难度】:
============================================================
【软件介绍】
一个小巧而功能强大的英汉汉英双向辞典实现了金山词霸的全部功能而体积只有2M,如屏幕取词、发音,音标等全都有。
1、全新的界面 2、修正了当单词中有单引号时出错的问题 3、优化了启动速度 4、可控制更多的启动选项。

============================================================
【破解分析过程】
这个软件的算法很简单,不是菜鸟就不要看了,我就能够分析这种很
软的柿子,用PEDI查看,没有加壳,注册错误有提示,所以用老罗的插件,找到位置下好断点,也可以用MessageBox下断,看下面。:)

00423C70   . 6A FF          PUSH -1                                  ;  在这里下断
00423C72   . 68 B8D04600    PUSH QDict_R.0046D0B8                    ;  SE handler installation
00423C77   . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
00423C7D   . 50             PUSH EAX
00423C7E   . 64:8925 000000>MOV DWORD PTR FS:[0],ESP
00423C85   . 83EC 0C        SUB ESP,0C
00423C88   . 56             PUSH ESI
00423C89   . 8BF1           MOV ESI,ECX
00423C8B   . 6A 01          PUSH 1
00423C8D   . E8 CDD60200    CALL QDict_R.0045135F
00423C92   . A1 D4BC4800    MOV EAX,DWORD PTR DS:[48BCD4]
00423C97   . 894424 04      MOV DWORD PTR SS:[ESP+4],EAX
00423C9B   . 8D4C24 04      LEA ECX,DWORD PTR SS:[ESP+4]
00423C9F   . C74424 18 0000>MOV DWORD PTR SS:[ESP+18],0
00423CA7   . 51             PUSH ECX
00423CA8   . 8D8E 98000000  LEA ECX,DWORD PTR DS:[ESI+98]
00423CAE   . E8 3CBE0200    CALL QDict_R.0044FAEF                    ;  取注册码,长度返回在EAX
00423CB3   . 8B4424 04      MOV EAX,DWORD PTR SS:[ESP+4]
00423CB7   . 8D5424 0C      LEA EDX,DWORD PTR SS:[ESP+C]
00423CBB   . 6A 10          PUSH 10
00423CBD   . 52             PUSH EDX
00423CBE   . 50             PUSH EAX
00423CBF   . E8 427E0100    CALL QDict_R.0043BB06                    ;  取注册码-前的内容并变成16进制
00423CC4   . 8B8E 18010000  MOV ECX,DWORD PTR DS:[ESI+118]           ;  特殊值,这个值不变是:28E598A4
00423CCA   . 35 26594131    XOR EAX,31415926                         ;  与31415926异或
00423CCF   . 83C4 0C        ADD ESP,0C                               ;  平衡对贱
00423CD2   . 3BC1           CMP EAX,ECX                              ;  关键跳转,但是爆破这里没有用,因为还有重启验证
00423CD4   . 75 4E          JNZ SHORT QDict_R.00423D24
00423CD6   . 68 8CA24800    PUSH QDict_R.0048A28C                    ;  ASCII "QDict.ini"
00423CDB   . 8D4C24 0C      LEA ECX,DWORD PTR SS:[ESP+C]
00423CDF   . 68 08084900    PUSH QDict_R.00490808
00423CE4   . 51             PUSH ECX
00423CE5   . E8 30A10200    CALL QDict_R.0044DE1A
00423CEA   . 8B00           MOV EAX,DWORD PTR DS:[EAX]
00423CEC   . 8B5424 04      MOV EDX,DWORD PTR SS:[ESP+4]             ;  下面是把注册成功的信息写进文件
00423CF0   . 50             PUSH EAX                                 ; /FileName
00423CF1   . 52             PUSH EDX                                 ; |String
00423CF2   . 68 84A74800    PUSH QDict_R.0048A784                    ; |Key = "SerialNumber"
00423CF7   . 68 7CA74800    PUSH QDict_R.0048A77C                    ; |Section = "Common"
00423CFC   . FF15 A8024700  CALL DWORD PTR DS:[<&KERNEL32.WritePriva>; \WritePrivateProfileStringA
00423D02   . 8D4C24 08      LEA ECX,DWORD PTR SS:[ESP+8]
00423D06   . E8 7A9E0200    CALL QDict_R.0044DB85
00423D0B   . 6A 00          PUSH 0                                   ; /Arg3 = 00000000
00423D0D   . 6A 40          PUSH 40                                  ; |Arg2 = 00000040
00423D0F   . 68 74BA4800    PUSH QDict_R.0048BA74                    ; |注册正确提示
00423D14   . E8 48430300    CALL QDict_R.00458061                    ; \QDict_R.00458061
00423D19   . 6A 05          PUSH 5
00423D1B   . 8BCE           MOV ECX,ESI
00423D1D   . E8 28AB0200    CALL QDict_R.0044E84A
00423D22   . EB 0E          JMP SHORT QDict_R.00423D32
00423D24   > 6A 00          PUSH 0                                   ; /注册错误提示
00423D26   . 6A 10          PUSH 10                                  ; |Arg2 = 00000010
00423D28   . 68 4CBA4800    PUSH QDict_R.0048BA4C                    ; |Arg1 = 0048BA4C
00423D2D   . E8 2F430300    CALL QDict_R.00458061                    ; \QDict_R.00458061
00423D32   > 8D4C24 04      LEA ECX,DWORD PTR SS:[ESP+4]
00423D36   . C74424 18 FFFF>MOV DWORD PTR SS:[ESP+18],-1
00423D3E   . E8 429E0200    CALL QDict_R.0044DB85
00423D43   . 8B4C24 10      MOV ECX,DWORD PTR SS:[ESP+10]
00423D47   . 5E             POP ESI
00423D48   . 64:890D 000000>MOV DWORD PTR FS:[0],ECX
00423D4F   . 83C4 18        ADD ESP,18
00423D52   . C3             RETN
SN=
0X28E598A4 XOR 0X31415926得到19A4C182后面加-再加任意数
如19A4C182-lnn1123

注册信息上还有顾客号,但是它并没有用到
我的注册内容:
                          顾客号:319499a6
                          注册码:19A4C182-***********
**********为随便什么值
注册机:
#include <stdio.h>
main()
{
printf("19A4C182-**********");
printf("KeyGen by lnn1123");
getch();
}
哈哈,历史上没有的注册机

============================================================
【破解分析过程总结】

算法比较简单,取注册码-后前的内容,变成16进制,在与0x31415926异或,得到的值与软件特定值28E598A4比较,相等就注册成功,不等就。。。。。。。。,
注意:这是一个重启验证的软件,爆破一个点是没有用的,爆破比分析算法还要难啊,哈哈
============================================================
      *************本文章版权归: 【lnn1123】 所有*************
          *****本文章由博思(BoS)文章生成器生成!*****
                 *****作者QQ:171090098*****
             *****作者主页:博思PE交流*****

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
2
自己顶一下
2005-6-18 18:39
0
雪    币: 110
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我帮你顶一把
2005-6-18 21:44
0
雪    币: 219
活跃值: (56)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4

支持一下PCG的成员
2005-6-18 23:35
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
2005-6-19 13:48
0
游客
登录 | 注册 方可回帖
返回
//