您的位置:首页精文荟萃破解文章 → rufeng教程 提高篇(5)

rufeng教程 提高篇(5)

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

 大家好!我是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????????-????????了呢(?为随便数字)?当然没有这么简单了,这只是开头呢?好戏还在后面呢?不过今天就讲到这里吧!手都有点软件了,不是快快闪方为上着!!!

    
    
     
    
    
     

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