老文章档案 · 2003 年

rufeng教程 提高篇(5)

网络学院 · 破解文章 · 2003-09-23 · 出处:赢政天下整理收藏

大家好!我是Ru Feng,今天我又找到了一个很好的VB数据控件,一用之下,没得说的,极品之中的极品,它就是APEX True DBGrid Pro 6.0b,安装完成后,一看它竟然要注册,开始以为只是一般的软件,但细心一看,才发现这个软件的加密又是一绝,刚好最近写提高篇没有题材,所以就认真地对它的程式进行分析,发现这个软件有个特别的地方,就是它是由机器产生一个number(随机的),每次运行都不同,然后你输入你的注册码去,经过运算后,再与它比较,正确就注册,所以就是说,只要你没有把程式分析得很清楚,写出注册机,那么你就别想注册这个软件了,我试过强行注册,没有成功,所以最后决定为它写注册机。

好了,既然要写注册机了,就要把程式分析得很清楚,所以以下的程式各位可不要觉得太麻了,这个软件就是这么麻的了,好的东西很多时都是要付出代价才能得到的。

首先随便输入注册码后,程序中断后向上跳回主程式:

0137:004020E1 XOR EBX,EBX

0137:004020E3 POP ECX

0137:004020E4 XOR EAX,EAX

0137:004020E6 LEA EDI,[EBP-7B]

0137:004020E9 MOV [EBP-7C],BL

0137:004020EC PUSH DWORD PTR [ESI+000000F8]

0137:004020F2 MOV [EBP-1A],BL

0137:004020F5 REPZ STOSD

0137:004020F7 STOSB

0137:004020F8 LEA EAX,[EBP-7C]

0137:004020FB MOV [EBP-1C],BL

0137:004020FE PUSH EAX

0137:004020FF MOV [EBP-19],BL

0137:00402102 MOV [EBP-1B],BL

0137:00402105 MOV [EBP-1D],BL

0137:00402108 MOV [EBP-11],BL

0137:0040210B CALL 004035D0

0137:00402110 LEA EAX,[EBP-7C]

0137:00402113 PUSH EAX

0137:00402114 CALL 004036F0

0137:00402119 ADD ESP,0C

0137:0040211C CMP EAX,16 注册码长度

0137:0040211F JNZ 004026AF

0137:00402125 MOVSX EAX,BYTE PTR [EBP-6F]

0137:00402129 PUSH EAX

0137:0040212A CALL 0040417A

0137:0040212F CMP EAX,45

0137:00402132 POP ECX

0137:00402133 JZ 0040213F

0137:00402135 CMP BYTE PTR [EBP-6F],2D 注册码的格式

0137:00402139 JNZ 004026AF

0137:0040213F XOR EAX,EAX

0137:00402141 LEA EDI,[EBP-43]

0137:00402144 MOV [EBP-44],BL

0137:00402147 PUSH 05

0137:00402149 STOSD

0137:0040214A STOSD

0137:0040214B STOSB

0137:0040214C LEA EAX,[EBP-7C]

0137:0040214F PUSH EAX

0137:00402150 LEA EAX,[EBP-44]

0137:00402153 PUSH EAX

0137:00402154 CALL 00403770

0137:00402159 ADD ESP,0C

0137:0040215C LEA EAX,[EBP-18]

0137:0040215F MOV ECX,ESI

0137:00402161 PUSH EAX

0137:00402162 CALL 004028A2

0137:00402167 LEA EAX,[EBP-44]

0137:0040216A PUSH 00420E5C

0137:0040216F PUSH EAX

0137:00402170 MOV DWORD PTR [EBP-04],00000001

0137:00402177 CALL 00404770 注册码版本检查

0137:0040217C POP ECX

0137:0040217D TEST EAX,EAX

0137:0040217F POP ECX

0137:00402180 JNZ 00402199

0137:00402182 PUSH 00420E48

0137:00402187 PUSH DWORD PTR [EBP-18]

0137:0040218A CALL 00404770 注册码版本检查

0137:0040218F POP ECX

0137:00402190 TEST EAX,EAX

0137:00402192 POP ECX

0137:00402193 JNZ 00402199

0137:00402195 MOV BYTE PTR [EBP-1A],01

0137:00402199 LEA EAX,[EBP-44]

0137:0040219C PUSH 00420E40

0137:004021A1 PUSH EAX

0137:004021A2 CALL 00404770 注册码版本检查

0137:004021A7 POP ECX

0137:004021A8 TEST EAX,EAX

0137:004021AA POP ECX

0137:004021AB JNZ 004021C4

0137:004021AD PUSH 00420E2C

0137:004021B2 PUSH DWORD PTR [EBP-18]

0137:004021B5 CALL 00404770 注册码版本检查

0137:004021BA POP ECX

0137:004021BB TEST EAX,EAX

0137:004021BD POP ECX

0137:004021BE JNZ 004021C4

0137:004021C0 MOV BYTE PTR [EBP-1C],01

0137:004021C4 LEA EAX,[EBP-44]

0137:004021C7 PUSH 00420E24

0137:004021CC PUSH EAX

0137:004021CD CALL 00404770 注册码版本检查

0137:004021D2 POP ECX

0137:004021D3 TEST EAX,EAX

0137:004021D5 POP ECX

0137:004021D6 JNZ 004021EF

0137:004021D8 PUSH 00420E10

0137:004021DD PUSH DWORD PTR [EBP-18]

0137:004021E0 CALL 00404770 注册码版本检查

0137:004021E5 POP ECX

0137:004021E6 TEST EAX,EAX

0137:004021E8 POP ECX

0137:004021E9 JNZ 004021EF

0137:004021EB MOV BYTE PTR [EBP-19],01

0137:004021EF LEA EAX,[EBP-44]

0137:004021F2 PUSH 00420E08

0137:004021F7 PUSH EAX

0137:004021F8 CALL 00404770 注册码版本检查

0137:004021FD POP ECX

0137:004021FE TEST EAX,EAX

0137:00402200 POP ECX

0137:00402201 JNZ 0040221A

0137:00402203 PUSH 00420DF4

0137:00402208 PUSH DWORD PTR [EBP-18]

0137:0040220B CALL 00404770 注册码版本检查

0137:00402210 POP ECX

0137:00402211 TEST EAX,EAX

0137:00402213 POP ECX

0137:00402214 JNZ 0040221A

0137:00402216 MOV BYTE PTR [EBP-1B],01

0137:0040221A LEA EAX,[EBP-44]

0137:0040221D PUSH 00420DEC

0137:00402222 PUSH EAX

0137:00402223 CALL 00404770 注册码版本检查

0137:00402228 POP ECX

0137:00402229 TEST EAX,EAX

0137:0040222B POP ECX

0137:0040222C JNZ 00402245

0137:0040222E PUSH 00420DC8

0137:00402233 PUSH DWORD PTR [EBP-18]

0137:00402236 CALL 00404770 注册码版本检查

0137:0040223B POP ECX

0137:0040223C TEST EAX,EAX

0137:0040223E POP ECX

0137:0040223F JNZ 00402245

0137:00402241 MOV BYTE PTR [EBP-1D],01

0137:00402245 LEA EAX,[EBP-44]

0137:00402248 PUSH 00420DC0

0137:0040224D PUSH EAX

0137:0040224E CALL 00404770 注册码版本检查

0137:00402253 POP ECX

0137:00402254 TEST EAX,EAX

0137:00402256 POP ECX

0137:00402257 JNZ 00402270

0137:00402259 PUSH 00420DAC

0137:0040225E PUSH DWORD PTR [EBP-18]

0137:00402261 CALL 00404770 注册码版本检查

0137:00402266 POP ECX

0137:00402267 TEST EAX,EAX

0137:00402269 POP ECX

0137:0040226A JNZ 00402270

0137:0040226C MOV BYTE PTR [EBP-11],01

0137:00402270 CMP [EBP-1A],BL

0137:00402273 JNZ 004022A0

0137:00402275 CMP [EBP-1C],BL

0137:00402278 JNZ 004022A0

0137:0040227A CMP [EBP-19],BL

0137:0040227D JNZ 004022A0

0137:0040227F CMP [EBP-1B],BL

0137:00402282 JNZ 004022A0

0137:00402284 CMP [EBP-1D],BL

0137:00402287 JNZ 004022A0

0137:00402289 CMP [EBP-11],BL

0137:0040228C JNZ 004022A0

0137:0040228E PUSH EBX

0137:0040228F PUSH 10

0137:00402291 PUSH 00420D70

0137:00402296 CALL 00415C1F 出错窗口

0137:0040229B JMP 004026A1

0137:004022A0 MOVSX EAX,BYTE PTR [EBP-6F]

好了大家见到了出错窗口的call了,向上一望,从0137:00402270到0137:0040228C这段程式中有6个jnz都可以跳过去的,那么只要让它们跳,就可以了,所以这时第一时间就是找出它们为什么不跳的原因,而它们跳的条件是它们其中一个与BL不等。

再次执行,又可以发现程式在下面跳了:

0137:00402114 CALL 004036F0

0137:00402119 ADD ESP,0C

0137:0040211C CMP EAX,16

0137:0040211F JNZ 004026AF 跳了

一分析call 004036f0的功能,原来是计算注册码的个数,正确应为22个,于是输入了22个注册码再次执行,程式又在下面跳了:

0137:00402135 CMP BYTE PTR [EBP-6F],2D

0137:00402139 JNZ 004026AF

下d ss:ebp-6f可知注册码的形式为?????????????-????????

再次输入注册码后,慢慢分析下去,我们先来到

0137:00402177 CALL 00404770

0137:0040217C POP ECX

0137:0040217D TEST EAX,EAX

0137:0040217F POP ECX

0137:00402180 JNZ 00402199

0137:00402182 PUSH 00420E48

0137:00402187 PUSH DWORD PTR [EBP-18]

0137:0040218A CALL 00404770

0137:0040218F POP ECX

0137:00402190 TEST EAX,EAX

0137:00402192 POP ECX

0137:00402193 JNZ 00402199

0137:00402195 MOV BYTE PTR [EBP-1A],01

见到了吗!0137:00402195语句可以令[ebp-1a]为01,那么后面不就可以令0137:00402273语句跳了吗!但好快发现在0137:00402180就跳过去了,所以CALL00404770一定有问题,进去看一看,有什么古怪。

:CALL 00404770

0137:00404770 PUSH EBP

0137:00404771 MOV EBP,ESP

0137:00404773 PUSH EDI

0137:00404774 PUSH ESI

0137:00404775 PUSH EBX

0137:00404776 MOV ESI,[EBP+0C] 下d ds:esi

0137:00404779 MOV EDI,[EBP+08] 下d ds:edi

0137:0040477C LEA EAX,[00426A28]

0137:00404782 CMP DWORD PTR [EAX+08],00

0137:00404786 JNZ 004047C3

0137:00404788 MOV AL,FF

0137:0040478A MOV EDI,EDI

0137:0040478C OR AL,AL

0137:0040478E JZ 004047BE

0137:00404790 MOV AL,[ESI]

0137:00404792 INC ESI

0137:00404793 MOV AH,[EDI]

0137:00404795 INC EDI

0137:00404796 CMP AH,AL

0137:00404798 JZ 0040478C

0137:0040479A SUB AL,41

0137:0040479C CMP AL,1A

0137:0040479E SBB CL,CL

0137:004047A0 AND CL,20

0137:004047A3 ADD AL,CL

0137:004047A5 ADD AL,41

0137:004047A7 XCHG AH,AL

0137:004047A9 SUB AL,41

0137:004047AB CMP AL,1A

0137:004047AD SBB CL,CL

0137:004047AF AND CL,20

0137:004047B2 ADD AL,CL

0137:004047B4 ADD AL,41

0137:004047B6 CMP AL,AH

0137:004047B8 JZ 0040478C

0137:004047BA SBB AL,AL

0137:004047BC SBB AL,FF

0137:004047BE MOVSX EAX,AL

0137:004047C1 JMP 0040483B

0137:004047C3 LOCK INC DWORD PTR [00427D8C]

0137:004047CA CMP DWORD PTR [00427D88],00

0137:004047D1 JG 004047D7

0137:004047D3 PUSH 00

0137:004047D5 JMP 004047EC

0137:004047D7 LOCK DEC DWORD PTR [00427D8C]

0137:004047DE PUSH 13

0137:004047E0 CALL 00406A0C

0137:004047E5 MOV DWORD PTR [ESP],00000001

0137:004047EC MOV EAX,000000FF

0137:004047F1 XOR EBX,EBX

0137:004047F3 NOP

0137:004047F4 OR AL,AL

0137:004047F6 JZ 0040481F

0137:004047F8 MOV AL,[ESI]

0137:004047FA INC ESI

0137:004047FB MOV BL,[EDI]

0137:004047FD INC EDI

0137:004047FE CMP AL,BL

0137:00404800 JZ 004047F4

0137:00404802 PUSH EAX

0137:00404803 PUSH EBX

0137:00404804 CALL 00406A82

0137:00404809 MOV EBX,EAX

0137:0040480B ADD ESP,04

0137:0040480E CALL 00406A82

0137:00404813 ADD ESP,04

0137:00404816 CMP BL,AL

0137:00404818 JZ 004047F4

0137:0040481A SBB EAX,EAX

0137:0040481C SBB EAX,-01

0137:0040481F MOV EBX,EAX

0137:00404821 POP EAX

0137:00404822 OR EAX,EAX

0137:00404824 JNZ 0040482F

0137:00404826 LOCK DEC DWORD PTR [00427D8C]

0137:0040482D JMP 00404839

0137:0040482F PUSH 13

0137:00404831 CALL 00406A6D

0137:00404836 ADD ESP,04

0137:00404839 MOV EAX,EBX

0137:0040483B POP EBX

0137:0040483C POP ESI

0137:0040483D POP EDI

0137:0040483E LEAVE

0137:0040483F RET

从0137:00404776和0137:00404779两句我们可以见到它是用我们的注册码的前五位和TDBG5进行比较,如果不等,就令eax不为0,一出去就跳了,所以我猜测注册码的前五位是TDBG5。所以我把注册码改为TDBG5????????-????????,再调试下去,终于可以过了

0137:00402180 JNZ 00402199

但一到了

0137:00402193 JNZ 00402199

程式又跳了,所以又进入了0137:0040218A CALL 00404770分析,见到程式用TrueDBGrid Pro 6.0和TrueDBGrid Pro 5.0进行比较,由于不等,所以跳了,那来的TrueDBGrid Pro 6.0呢?回注册窗口一看,哦原来如此,这时是检查软件的版本。好了,先不管这么多了,用TDBG5????????-????????为注册码,一步一步地分析下去再说,经过一轮的分析,终于弄清了每个call的作用。

以下是各个版本对应的注册码形式:

TrueDBGrid Pro 5.0 TDBG5????????-????????

TrueDBGrid Pro 6.0 TDBG6????????-????????

TrueDBList Pro 5.0 TDBL5????????-???????? 或 TDBW5????????-????????

TrueDBWizard 5.0 TDBS5????????-????????

TrueDBList Pro 6.0 TDBL6????????-????????

好了,注册形式终于找到了,由上面可知,这个公司可能认为它的软件的加密够强了所以几代都是用同一个注册机,只是前面的序列号改了一下,的确本人觉得它的注册码也是很强的,很少软件象它那样每次注册的时候注册码都不同的,所以它也值得骄傲的。由于上面可知注册码的正确格式是TDBG6????????-????????。

那么是不是注册码就是TDBG6????????-????????了呢(?为随便数字)?当然没有这么简单了,这只是开头呢?好戏还在后面呢?不过今天就讲到这里吧!手都有点软件了,不是快快闪方为上着!!!

相关资讯:

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)|

广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright (C) 1998-2004 winzheng.com All Rights Reserved.

特别感谢 蓝芒科技 提供下载站及论坛服务器

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史