老万 发表于 2010-7-17 17:22:23

如何去除连网限制?

本帖最后由 老万 于 2010-7-18 22:10 编辑

今天我破解了一个PYG软件库里边一个软件,分析了它的算法,推出了注册码,注册后显示“注册成功”,软件重启后进行网络验证,仍显示未注册,修改启动验证时的跳转,可以得到完美的破解版,但是如果电脑不联网的话,软件就启动不了,希望高手分析一下,我的分析过程如下:

【目标程序:】机动车驾驶人考试培训系统2010(速成版)

【下载地址:】http://down.qiannao.com/space/file/zgmap/share/2010/7/13/Setup(2010.4.1all).rar
【PEID査壳:】 Borland Delphi 6.0 - 7.0

【破解过程:】
下面直接来到关键地方:
005FAC6A   .8B45 F4       MOV EAX,DWORD PTR SS:
005FAC6D   .E8 EEE4FFFF   CALL jzks.005F9160                     ;启动时验证算法
005FAC72   .8B95 54FEFFFF MOV EDX,DWORD PTR SS:         ;机器码
005FAC78   .8B45 F0       MOV EAX,DWORD PTR SS:            ;注册码加密计算后的值
005FAC7B   .E8 04A1E0FF   CALL jzks.00404D84                     ;机器码与注册码加密计算后的值进行比较,如果相等的话,就注册成功
005FAC80      0F85 9A000000 JNZ jzks.005FAD20                        ;关键跳
005FAC86   .8B45 E8       MOV EAX,DWORD PTR SS:
005FAC89   .BA DCAE5F00   MOV EDX,jzks.005FAEDC                  ;pass
005FAC8E   .E8 F1A0E0FF   CALL jzks.00404D84                     ;判断验证是否通过
005FAC93   .74 0F         JE SHORT jzks.005FACA4                   ;软件注册码如果网络验证通过的话,此处就跳,成为全功能版
005FAC95   .8B45 EC       MOV EAX,DWORD PTR SS:
005FAC98   .BA DCAE5F00   MOV EDX,jzks.005FAEDC                  ;pass
005FAC9D   .E8 E2A0E0FF   CALL jzks.00404D84
005FACA2      75 7C         JNZ SHORT jzks.005FAD20                  ;关键跳
005FACA4   >8B45 FC       MOV EAX,DWORD PTR SS:

注册时的验证:
005EB07C   .E8 B7FCFFFF   CALL jzks.005EAD38                ;注册时候验证算法

此外,软件还有加密和解密注册码算法,如下:
005FAB15   .E8 46E6FFFF   CALL jzks.005F9160                ;启动时解密注册码算法
005EB1CB   .E8 10FAFFFF   CALL jzks.005EABE0                     ;注册成功后加密注册码算法

进入启动时算法CALl 005F9160
。。。。。。。。。。。。。
005F915D   ?3A5C00 55   CMP BL,BYTE PTR DS:
005F9161|.8BEC          MOV EBP,ESP
005F9163|.83C4 D0       ADD ESP,-30
005F9166|.53            PUSH EBX
005F9167|.56            PUSH ESI
005F9168|.57            PUSH EDI
005F9169|.33DB          XOR EBX,EBX
005F916B|.895D D0       MOV DWORD PTR SS:,EBX
005F916E|.895D D8       MOV DWORD PTR SS:,EBX
005F9171|.895D D4       MOV DWORD PTR SS:,EBX
005F9174|.895D E0       MOV DWORD PTR SS:,EBX
005F9177|.895D DC       MOV DWORD PTR SS:,EBX
005F917A|.895D E8       MOV DWORD PTR SS:,EBX
005F917D|.894D F4       MOV DWORD PTR SS:,ECX
005F9180|.8955 F8       MOV DWORD PTR SS:,EDX             ;字符串"bigfish1"
005F9183|.8945 FC       MOV DWORD PTR SS:,EAX             ;注册码
005F9186|.8B45 FC       MOV EAX,DWORD PTR SS:
005F9189|.E8 9ABCE0FF   CALL jzks.00404E28
005F918E|.8B45 F8       MOV EAX,DWORD PTR SS:
005F9191|.E8 92BCE0FF   CALL jzks.00404E28
005F9196|.33C0          XOR EAX,EAX
005F9198|.55            PUSH EBP
005F9199|.68 BD925F00   PUSH jzks.005F92BD
005F919E|.64:FF30       PUSH DWORD PTR FS:
005F91A1|.64:8920       MOV DWORD PTR FS:,ESP
005F91A4|.8B45 F8       MOV EAX,DWORD PTR SS:
005F91A7|.E8 8CBAE0FF   CALL jzks.00404C38                     ;取长度
005F91AC|.8945 F0       MOV DWORD PTR SS:,EAX
005F91AF|.837D F0 00    CMP DWORD PTR SS:,0
005F91B3|.75 0D         JNZ SHORT jzks.005F91C2
005F91B5|.8D45 F8       LEA EAX,DWORD PTR SS:
005F91B8|.BA D4925F00   MOV EDX,jzks.005F92D4                  ;bigfish1
005F91BD|.E8 4EB8E0FF   CALL jzks.00404A10
005F91C2|>33FF          XOR EDI,EDI
005F91C4|.8D45 DC       LEA EAX,DWORD PTR SS:
005F91C7|.50            PUSH EAX
005F91C8|.B9 02000000   MOV ECX,2
005F91CD|.BA 01000000   MOV EDX,1
005F91D2|.8B45 FC       MOV EAX,DWORD PTR SS:
005F91D5|.E8 BEBCE0FF   CALL jzks.00404E98                     ;从第1位取注册码2位
005F91DA|.8B4D DC       MOV ECX,DWORD PTR SS:
005F91DD|.8D45 E0       LEA EAX,DWORD PTR SS:
005F91E0|.BA E8925F00   MOV EDX,jzks.005F92E8                  ;$
005F91E5|.E8 9ABAE0FF   CALL jzks.00404C84
005F91EA|.8B45 E0       MOV EAX,DWORD PTR SS:
005F91ED|.E8 860CE1FF   CALL jzks.00409E78
005F91F2|.8945 EC       MOV DWORD PTR SS:,EAX
005F91F5|.BE 03000000   MOV ESI,3                              ;ESI=3
005F91FA|>8D45 D4       /LEA EAX,DWORD PTR SS:
005F91FD|.50            |PUSH EAX
005F91FE|.B9 02000000   |MOV ECX,2
005F9203|.8BD6          |MOV EDX,ESI
005F9205|.8B45 FC       |MOV EAX,DWORD PTR SS:
005F9208|.E8 8BBCE0FF   |CALL jzks.00404E98                      ;从第ESI位取注册码2位
005F920D|.8B4D D4       |MOV ECX,DWORD PTR SS:
005F9210|.8D45 D8       |LEA EAX,DWORD PTR SS:
005F9213|.BA E8925F00   |MOV EDX,jzks.005F92E8                   ;$
005F9218|.E8 67BAE0FF   |CALL jzks.00404C84
005F921D|.8B45 D8       |MOV EAX,DWORD PTR SS:
005F9220|.E8 530CE1FF   |CALL jzks.00409E78
005F9225|.8945 E4       |MOV DWORD PTR SS:,EAX
005F9228|.3B7D F0       |CMP EDI,DWORD PTR SS:
005F922B|.7D 03         |JGE SHORT jzks.005F9230
005F922D|.47            |INC EDI
005F922E|.EB 05         |JMP SHORT jzks.005F9235
005F9230|>BF 01000000   |MOV EDI,1
005F9235|>8B45 F8       |MOV EAX,DWORD PTR SS:            ;"bigfish1"
005F9238|.33DB          |XOR EBX,EBX
005F923A|.8A5C38 FF   |MOV BL,BYTE PTR DS:          ;依次取字符串 "bigfish1"的ASCII码值依次送入BL
005F923E|.335D E4       |XOR EBX,DWORD PTR SS:         ;注册码2位与上面的ASCII码值异或
005F9241|.3B5D EC       |CMP EBX,DWORD PTR SS:         ;异或值与注册码前两位值进行比较
005F9244|.7F 0B         |JG SHORT jzks.005F9251
005F9246|.81C3 FF000000 |ADD EBX,0FF                           ;如果小的话,加上0FF
005F924C|.2B5D EC       |SUB EBX,DWORD PTR SS:         ;减去前2位的值
005F924F|.EB 03         |JMP SHORT jzks.005F9254
005F9251|>2B5D EC       |SUB EBX,DWORD PTR SS:         ;减去注册码前2位的值
005F9254|>8D45 D0       |LEA EAX,DWORD PTR SS:
005F9257|.8BD3          |MOV EDX,EBX                           ;差值送入EDX
005F9259|.E8 02B9E0FF   |CALL jzks.00404B60
005F925E|.8B55 D0       |MOV EDX,DWORD PTR SS:
005F9261|.8D45 E8       |LEA EAX,DWORD PTR SS:
005F9264|.E8 D7B9E0FF   |CALL jzks.00404C40
005F9269|.8B45 E4       |MOV EAX,DWORD PTR SS:
005F926C|.8945 EC       |MOV DWORD PTR SS:,EAX
005F926F|.83C6 02       |ADD ESI,2                               ;ESI+2
005F9272|.8B45 FC       |MOV EAX,DWORD PTR SS:            ;注册码送入EAX
005F9275|.E8 BEB9E0FF   |CALL jzks.00404C38
005F927A|.3BF0          |CMP ESI,EAX
005F927C|.^ 0F8C 78FFFFFF \JL jzks.005F91FA
005F9282|.8B45 F4       MOV EAX,DWORD PTR SS:
005F9285|.8B55 E8       MOV EDX,DWORD PTR SS:
005F9288|.E8 3FB7E0FF   CALL jzks.004049CC
。。。。。。。。。。。。。。。。。
算法总结:

1,取注册码前2位,记为L,变量i初始化为1

2,从注册码第(i+2)位取2位,记为M

3,依次取字符串 "bigfish1"的ASCII码值,与M异或

4,异或值与L进行比较(如果小于L的话,异或值加上加上0FF,再进行下面计算),异或值减去L,结果转换为字符,记为S(i)

5,令L=M,变量i=i+2

6,重复2~5的过程,最后把S(i)连接起来,组成一个字符串,记为SZ

7,机器码与SZ进行比较,如果相同,就注册成功。

我的机器码:4MT257LQ ,逆算出来一组注册码:1224180B5BF942E609

下面是我用注册码注册成功的插图

重新启动后,打开题库显示如下:


如果爆破的话,只需修改
005FAC80   JNZ jzks.005FAD20
为:
005FAC80   JMPjzks.005FACA4
就能爆破成功,但是电脑不连网 的话,软件就打不开,希望高手帮忙解决一下,让我这样的菜鸟学习一下?

GGLHY 发表于 2010-7-17 17:50:16

看看去。
向老万同志学习...

isable 发表于 2010-7-17 18:28:40

我太菜了!等高手.

wuhanqi 发表于 2010-7-18 13:10:18

学习,学习

月之精灵 发表于 2010-7-18 13:26:53

本帖最后由 月之精灵 于 2010-7-18 13:28 编辑

跟着小吴的后面排队
说实话,我下载不了文件哈,楼主试下链接看
想学习都找不着门,哎

老万 发表于 2010-7-18 22:13:26

回复 5# 月之精灵


    月老大,我已经修改连接,你试试吧

yanhuohua999 发表于 2010-7-19 10:30:56

跟着高手学习。。。。

nevsayno 发表于 2010-7-19 10:53:27

对send下断   -->   找检测网络连通的地方

brightsm 发表于 2010-7-19 13:12:04

分析下网络数据,做个本地验证服务器就行了。

老万 发表于 2010-7-19 21:15:45

回复 9# brightsm

希望高手做个详细的教程,学习一下?
页: [1] 2
查看完整版本: 如何去除连网限制?