【文章名称】:通用英汉汉英辞典 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交流*****
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课