⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cracker_h5.txt

📁 黑客教程的提高篇
💻 TXT
字号:
                                   提高篇(5)

         大家好!我是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????????-????????了呢(?为随便数字)?当然

没有这么简单了,这只是开头呢?好戏还在后面呢?不过今天就讲到这里吧!手都有

点软件了,不是快快闪方为上着!!!

作者:Ru Feng

信箱:ocq@163.net

网址:http://ocq.yeah.net                            (未完,代续)



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -