多层次破解某象棋软件

多层次破解某象棋软件
多层次破解某象棋软件

jimxy 2011-01-20, 18:31:55 【原创】多层次破解某象棋软件(申请邀请码)

多层次破解某象棋软件(申请邀请码)

中国象棋V2.0

软件大小:908KB

软件语言:中文

软件类别:国内/共享版

运行环境:win9x/me/NT/XP/2003

Download:网上搜索

首先说明,本人刚学破解几个月的菜鸟,感觉破解这门学问太深了,也想通过论坛继续学习,模访网上的文章写的,个人感觉内容还是很丰富的,希望大家不要见笑。方法一:清除软件使用次数限制(两种途径)

首先查壳,运行PEID,载入中国象棋V2.0,无壳,如下图:

运行软件,启动时有注册提示窗口和30天试用信息,如下图:

点击现在注册,注册软件,发现有错误提示窗口,如下图:

点击开始—运行,输入regedit,打开注册表,点击编辑—查找,输入chess:

点击查找下一个,F3继续,来到下图处:

观察DayOfUsed键的数据似乎与时间有关,将时间修改为2011.1.9试一下,在DayOfUsed键上单击鼠标右键—修改,2011.1.19修改为2011.1.9:

重新运行软件,发现软件使用天数变为11天,

可以肯定,该键值的数据就是计算使用天数的基准日期,将2011.1.19改为3011.1.19,可以达到永久试用的目的。

还有一种思路也可达到永久试用的目的,既然软件有计算试用天数的程序,我们只要

跳过这部分不就可以达到永久试用的目的吗?

OD载入软件,既然计算试用天数要用到注册表中的基准时间,可下bp RegOpenKeyExA断点,按F9运行,观察堆栈,F9继续运行,直到出现GZ_POWER_CHESS注册表项,如图:

Alt+F9执行到用户代码,

00408BAA 8B4424 10 mov eax,dword ptr ss:[esp+10] ,返回到此处

00408BAE 3BC3 cmp eax,ebx

00408BB0 0F84 FB000000 je ChineseC.00408CB1 ,关键跳,修改此处正好跳过计算试用天数

00408BB6 8D4C24 14 lea ecx,dword ptr ss:[esp+14]

00408BBA 51 push ecx

00408BBB 68 3F000F00 push 0F003F

00408BC0 53 push ebx

00408BC1 68 20054400 push ChineseC.00440520 ; set

00408BC6 50 push eax

00408BC7 FFD6 call esi

00408BC9 8B4424 14 mov eax,dword ptr ss:[esp+14]

00408BCD 3BC3 cmp eax,ebx

00408BCF 0F84 DA010000 je ChineseC.00408DAF

00408BD5 8D5424 2C lea edx,dword ptr ss:[esp+2C]

00408BD9 8D4C24 48 lea ecx,dword ptr ss:[esp+48]

00408BDD 52 push edx

00408BDE 51 push ecx

00408BDF 53 push ebx

00408BE0 53 push ebx

00408BE1 68 14054400 push ChineseC.00440514 ; dayofused

00408BE6 50 push eax

00408BE7 C74424 48 00020>mov dword ptr ss:[esp+48],200

00408BEF C74424 44 1E000>mov dword ptr ss:[esp+44],1E

00408BF7 FFD5 call ebp

00408BF9 85C0 test eax,eax

00408BFB 75 1A jnz short ChineseC.00408C17

00408BFD 51 push ecx

00408BFE 8D5424 4C lea edx,dword ptr ss:[esp+4C]

00408C02 8BCC mov ecx,esp

00408C04 896424 38 mov dword ptr ss:[esp+38],esp

00408C08 52 push edx

00408C09 E8 9CB30200 call

00408C0E 8B4C24 20 mov ecx,dword ptr ss:[esp+20]

00408C12 E8 F9080000 call ChineseC.00409510

00408C17 8B5424 14 mov edx,dword ptr ss:[esp+14]

00408C1B 8D4424 2C lea eax,dword ptr ss:[esp+2C]

00408C1F 8D4C24 48 lea ecx,dword ptr ss:[esp+48]

00408C23 50 push eax

00408C24 51 push ecx

00408C25 53 push ebx

00408C26 53 push ebx

00408C27 68 08054400 push ChineseC.00440508 ; chesscount

00408C2C 52 push edx

00408C2D FFD5 call ebp

00408C2F 85C0 test eax,eax

00408C31 75 18 jnz short ChineseC.00408C4B

00408C33 8D4424 48 lea eax,dword ptr ss:[esp+48]

00408C37 50 push eax

00408C38 FF15 2C874300 call dword ptr ds:[<&MSVCRT.atol>] ; msvcrt.atol 00408C3E 8B4C24 20 mov ecx,dword ptr ss:[esp+20]

00408C42 83C4 04 add esp,4

00408C45 8981 C4000000 mov dword ptr ds:[ecx+C4],eax

00408C4B 8B4C24 14 mov ecx,dword ptr ss:[esp+14]

00408C4F 8D5424 30 lea edx,dword ptr ss:[esp+30]

00408C53 8D8424 68020000 lea eax,dword ptr ss:[esp+268]

00408C5A 52 push edx

00408C5B 50 push eax

00408C5C 53 push ebx

00408C5D 53 push ebx

00408C5E 68 FC044400 push ChineseC.004404FC ; registernum

00408C63 51 push ecx

00408C64 FFD5 call ebp

00408C66 3BC3 cmp eax,ebx

00408C68 74 14 je short ChineseC.00408C7E

00408C6A 8B5424 10 mov edx,dword ptr ss:[esp+10]

00408C6E 8B35 14804300 mov esi,dword ptr ds:[<&ADV API32.RegCloseKey>] ; ADV API32.RegCloseKey

00408C74 52 push edx

00408C75 FFD6 call esi

00408C77 8B4424 14 mov eax,dword ptr ss:[esp+14]

00408C7B 50 push eax

00408C7C EB 31 jmp short ChineseC.00408CAF

00408C7E 8B4424 14 mov eax,dword ptr ss:[esp+14]

00408C82 8D4C24 28 lea ecx,dword ptr ss:[esp+28]

00408C86 8D9424 68010000 lea edx,dword ptr ss:[esp+168]

00408C8D 51 push ecx

00408C8E 52 push edx

00408C8F 53 push ebx

00408C90 53 push ebx

00408C91 68 F0044400 push ChineseC.004404F0 ; username

00408C96 50 push eax

00408C97 FFD5 call ebp

00408C99 3BC3 cmp eax,ebx

00408C9B 74 2D je short ChineseC.00408CCA

00408C9D 8B4C24 10 mov ecx,dword ptr ss:[esp+10]

00408CA1 8B35 14804300 mov esi,dword ptr ds:[<&ADV API32.RegCloseKey>] ; ADV API32.RegCloseKey

00408CA7 51 push ecx

00408CA8 FFD6 call esi

00408CAA 8B5424 14 mov edx,dword ptr ss:[esp+14]

00408CAE 52 push edx

00408CAF FFD6 call esi

00408CB1 8D4C24 18 lea ecx,dword ptr ss:[esp+18]

00408CB5 C78424 70040000>mov dword ptr ss:[esp+470],-1

在00408BB0这行单击鼠标右键,选择汇编,将je修改为jmp,

在汇编窗口单击鼠标右键,选择复制到可执行文件—所有修改,然后选择全部复制,

单击鼠标右键,选择保存文件,OK!软件可以永久试用,不信的话可以修改注册表DayOfUsed项的数据,发现试用天数不变。

方法二:爆破

既然注册时有错误提示,可以通过查找字符串来查找按钮事件,OD载入软件

在汇编窗口单击鼠标右键,选择Ultra字符串参考—1.查找ASCII,

双击“姓名和注册码不匹配,注册不成功!”这一行,来到主程序窗口,

往上观察,发现了一些关键东西:

00430B67 E8 24E9FFFF call ChineseC.0042F490 关键CALL

00430B6C 84C0 test al,al 关键比较

00430B6E 6A 40 push 40

00430B70 68 90044400 push ChineseC.00440490 ; gzpower chess

00430B75 75 21 jnz short ChineseC.00430B98 关键跳

00430B77 68 9C1A4400 push ChineseC.00441A9C ; 姓名和注册码不匹配,注册不成功!

00430B7C 8BCE mov ecx,esi

在00430B70这行单击鼠标右键,选择汇编,将jnz修改为jz,在汇编窗口单击鼠标右键,选择复制到可执行文件—所有修改,然后选择全部复制,

单击鼠标右键,选择保存文件。

重启中国象棋V2.0,仍有注册提示窗口,但可以注册成功,

重启后仍然是未注册版,因些必须去掉提示注册的NAG窗口中。

OD载入软件,用F12暂停法去掉NAG窗口,F9运行软件,然后到反汇编窗口,按F12键,Alt+F9执行到用户代码,

00408499 这一行是调用注册提示的NAG窗口,往上查找,发现00408461这一行正好跳过调用注册提示的NAG窗口,在00408461这一行单击鼠标右键,选择汇编,将jnz改为jmp,

在汇编窗口单击鼠标右键,选择复制到可执行文件—所有修改,然后选择全部复制,然后单击鼠标右键,选择保存文件。

重启中国象棋V2.0,没有注册提示窗口,直接进入软件,如下图:

仍然有未注册字样,但不影响使用,也可将未注册字样去掉,OD重新载入修改后中国象棋V2.0,在汇编窗口单击鼠标右键,选择Ultra字符串参考—1.查找ASCII,

双击“(未注册)”这一行,来到主程序窗口,

从004086C6这一行往上观察,发现004086C4这一行跳转正好跳过“未注册”字样这一行,在004086C4这一行单击鼠标右键,选择汇编,将jnz改为jmp,

在汇编窗口单击鼠标右键,选择复制到可执行文件—所有修改,然后选择全部复制,然后单击鼠标右键,选择保存文件。

重启中国象棋V2.0,直接进入软件,且没有“未注册”字样。OK!现在就是正式用户了!

方法三:追踪注册码,制作内存注册机

根据前文分析,00430B67这一行是关键CALL,用OD载入中国象棋V2.0,Ctrl+G 输入00430B67

点击确定,来到00430B67这一行,F2下断点,

F9运行软件,输入注册名和注册码,

点击“注册”,软件被OD断下来, F8单步,观察堆栈窗口,

正在进行真假码对照,复制"9eb9a33259ad034db8b0a8462dac9aee"字符串进行注册,注册成功。

下面制作内存注册机,见上面分析,软件被OD断在00430B67这一行,F7单步进入,F8单步走,来到0042F4A0这一行,观察寄存器窗口,

EAX寄存器中就是真的注册码,打开keymake注册机,选择其它—内存注册机,浏览选择中国象棋ChineseChess应用程序,点击添加,在是中断位置填写0042F4A0,中断次数位置填写1,第一字节位置填写FF,指令长度位置填写6,

选中“保存下列信息为注册码”,选中内存方式,寄存器方式选择EAX,然后点击添加,关闭添加窗口,点击生成按钮,

选择界面三,点击确定,保存注册机。运行内存注册机,注册码会自动出现,OK!

方法四:算法分析,写注册机

目前正在学习中,有点难度。

相关主题
相关文档
最新文档