首页
社区
课程
招聘
[原创]证卡图文批量印制王v4.0调试手记
发表于: 2012-2-9 19:46 6693

[原创]证卡图文批量印制王v4.0调试手记

2012-2-9 19:46
6693

前几天要打印证件,在网上找了一下,没有一个是破解能用的,找了个证件通,调试完了,但是功能不太好,又去找了一个,就是证卡图文批量印制王,最新版的好象是5.35的,没调人家新的,找了4.0的调试了一下,够用就行吧。因为以前调的,随用随扔,好久没向看雪发东西了,发点也报答一下论坛对我的培养啊,呵呵。下面基本上是调试的手记,不逻辑大侠们见到了别笑。
调试完后回过头来看这个软件有3个方面的限制,1、开软件就升级,烦人;2、注册成功;3、是本以为找到注册码,注册成功了,还是在打印预览里面出现水印,出现了功能限制。以为即然成功了,还出现水印,那可能调试了一个不完整的版本;下面就是作了这三方面的工作。这些话调试前都不知道哦,呵呵。
1、去掉软件一启动就检测升级打开软件主页

在所有模块调用里下这个函数断点,ShellExecute,此函数是调用打开网页的函数。

此入断下,00454B62     E8 01502400     call <jmp.&SHELL32.ShellExecuteA>

走到段首分析,代码如下:
00454A84     55              push ebp
00454A85     8BEC            mov ebp,esp
00454A87     83C4 BC         add esp,-44
00454A8A     8945 CC         mov dword ptr ss:[ebp-34],eax
00454A8D     B8 5C786B00     mov eax,BatchCar.006B785C
00454A92     E8 350C2200     call BatchCar.006756CC
00454A97     8D45 C4         lea eax,dword ptr ss:[ebp-3C00454A9A     E8 25F7FAFF     call BatchCar.004041C4
00454A9F     8D45 BC         lea eax,dword ptr ss:[ebp-44]
00454AA2     E8 1DF7FAFF     call BatchCar.004041C4
00454AA7     8B15 78C66C00   mov edx,dword ptr ds:[6CC678]                      ; BatchCar.006DA671
00454AAD     C602 2D         mov byte ptr ds:[edx],2D
00454AB0     66:C745 E0 0800 mov word ptr ss:[ebp-20],8
00454AB6     BA 87726B00     mov edx,BatchCar.006B7287                          ; yyyy/mm/dd
00454ABB     8D45 FC         lea eax,dword ptr ss:[ebp-4]
00454ABE     E8 35152400     call BatchCar.00695FF8
00454AC3     FF45 EC         inc dword ptr ss:[ebp-14]
00454AC6     8D55 FC         lea edx,dword ptr ss:[ebp-4]
00454AC9     A1 7CC66C00     mov eax,dword ptr ds:[6CC67C]
00454ACE     E8 A1172400     call BatchCar.00696274
00454AD3     FF4D EC         dec dword ptr ss:[ebp-14]
00454AD6     8D45 FC         lea eax,dword ptr ss:[ebp-4]
00454AD9     BA 02000000     mov edx,2
00454ADE     E8 61172400     call BatchCar.00696244
00454AE3     66:C745 E0 1400 mov word ptr ss:[ebp-20],14
00454AE9     BA 92726B00     mov edx,BatchCar.006B7292                          ; 2007-12-30
00454AEE     8D45 F8         lea eax,dword ptr ss:[ebp-8]
00454AF1     E8 02152400     call BatchCar.00695FF8
00454AF6     FF45 EC         inc dword ptr ss:[ebp-14]
00454AF9     8B00            mov eax,dword ptr ds:[eax]
00454AFB     E8 D0CE2000     call BatchCar.006619D0
00454B00     DD5D C4         fstp qword ptr ss:[ebp-3C]
00454B03     FF4D EC         dec dword ptr ss:[ebp-14]
00454B06     8D45 F8         lea eax,dword ptr ss:[ebp-8]
00454B09     BA 02000000     mov edx,2
00454B0E     E8 31172400     call BatchCar.00696244
00454B13     E8 70B92000     call BatchCar.00660488
00454B18     DD5D BC         fstp qword ptr ss:[ebp-44]
00454B1B     DD45 C4         fld qword ptr ss:[ebp-3C]
00454B1E     DC5D BC         fcomp qword ptr ss:[ebp-44]
00454B21     DFE0            fstsw ax
00454B23     9E              sahf
00454B24     EB 41           jnb short BatchCar.00454B67                     //分析后,将此处改成 jmp
00454B26     66:C745 E0 2000 mov word ptr ss:[ebp-20],20
00454B2C     BA 9D726B00     mov edx,BatchCar.006B729D                          ; 请升级到更新的版本!
00454B31     8D45 F4         lea eax,dword ptr ss:[ebp-C]
00454B34     E8 BF142400     call BatchCar.00695FF8
00454B39     FF45 EC         inc dword ptr ss:[ebp-14]
00454B3C     8B00            mov eax,dword ptr ds:[eax]
00454B3E     E8 E9F11B00     call BatchCar.00613D2C
00454B43     FF4D EC         dec dword ptr ss:[ebp-14]
00454B46     8D45 F4         lea eax,dword ptr ss:[ebp-C]
00454B49     BA 02000000     mov edx,2
00454B4E     E8 F1162400     call BatchCar.00696244
00454B53     6A 01           push 1
00454B55     6A 00           push 0
00454B57     6A 00           push 0
00454B59     68 B1726B00     push BatchCar.006B72B1                             ; http://www.deft7.com
00454B5E     6A 00           push 0
00454B60     6A 00           push 0
00454B62     E8 01502400     call <jmp.&SHELL32.ShellExecuteA>
00454B67     8B4D D0         mov ecx,dword ptr ss:[ebp-30]
00454B6A     64:890D 0000000>mov dword ptr fs:[0],ecx
00454B71     8BE5            mov esp,ebp
00454B73     5D              pop ebp
00454B74     C3              retn

00618E3B     837B 30 00      cmp dword ptr ds:[ebx+30],0

006573F1     E8 4AB8FFFF     call BatchCar.00652C40

005DD4BC     E8 43C10B00     call <jmp.&KERNEL32.GetVersion>

2、在查找所有模块调用用,下这个函数MessageBoxA的断点,在下面这段断下了,然后到段首分析。

00607878     55              push ebp
00607879     8BEC            mov ebp,esp
0060787B     83C4 AC         add esp,-54
0060787E     53              push ebx
0060787F     56              push esi
00607880     57              push edi
00607881     8BF9            mov edi,ecx
00607883     8BF2            mov esi,edx
00607885     8945 FC         mov dword ptr ss:[ebp-4],eax
00607888     8B5D 08         mov ebx,dword ptr ss:[ebp+8]
0060788B     E8 16240900     call <jmp.&USER32.GetActiveWindow>
00607890     8945 F4         mov dword ptr ss:[ebp-C],eax
00607893     6A 02           push 2
00607895     8B45 F4         mov eax,dword ptr ss:[ebp-C]
00607898     50              push eax
00607899     A1 4CC56C00     mov eax,dword ptr ds:[6CC54C]
0060789E     8B00            mov eax,dword ptr ds:[eax]
006078A0     FFD0            call eax
006078A2     8945 EC         mov dword ptr ss:[ebp-14],eax
006078A5     6A 02           push 2
006078A7     8B45 FC         mov eax,dword ptr ss:[ebp-4]
006078AA     8B40 30         mov eax,dword ptr ds:[eax+30]
006078AD     50              push eax
006078AE     A1 4CC56C00     mov eax,dword ptr ds:[6CC54C]
006078B3     8B00            mov eax,dword ptr ds:[eax]
006078B5     FFD0            call eax
006078B7     8945 E8         mov dword ptr ss:[ebp-18],eax
006078BA     8B45 EC         mov eax,dword ptr ss:[ebp-14]
006078BD     3B45 E8         cmp eax,dword ptr ss:[ebp-18]
006078C0     74 60           je short BatchCar.00607922
006078C2     C745 BC 2800000>mov dword ptr ss:[ebp-44],28
006078C9     8D45 BC         lea eax,dword ptr ss:[ebp-44]
006078CC     50              push eax
006078CD     8B45 EC         mov eax,dword ptr ss:[ebp-14]
006078D0     50              push eax
006078D1     A1 54C56C00     mov eax,dword ptr ds:[6CC554]
006078D6     8B00            mov eax,dword ptr ds:[eax]
006078D8     FFD0            call eax
006078DA     8D45 AC         lea eax,dword ptr ss:[ebp-54]
006078DD     50              push eax
006078DE     8B45 FC         mov eax,dword ptr ss:[ebp-4]
006078E1     8B40 30         mov eax,dword ptr ds:[eax+30]
006078E4     50              push eax
006078E5     E8 DC240900     call <jmp.&USER32.GetWindowRect>
006078EA     6A 1D           push 1D
006078EC     6A 00           push 0
006078EE     6A 00           push 0
006078F0     8B4D CC         mov ecx,dword ptr ss:[ebp-34]
006078F3     8B55 C4         mov edx,dword ptr ss:[ebp-3C]
006078F6     2BCA            sub ecx,edx
006078F8     D1F9            sar ecx,1
006078FA     79 03           jns short BatchCar.006078FF
006078FC     83D1 00         adc ecx,0
006078FF     03CA            add ecx,edx
00607901     51              push ecx
00607902     8B55 C8         mov edx,dword ptr ss:[ebp-38]
00607905     8B45 C0         mov eax,dword ptr ss:[ebp-40]
00607908     2BD0            sub edx,eax
0060790A     D1FA            sar edx,1
0060790C     79 03           jns short BatchCar.00607911
0060790E     83D2 00         adc edx,0
00607911     03D0            add edx,eax
00607913     52              push edx
00607914     6A 00           push 0
00607916     8B45 FC         mov eax,dword ptr ss:[ebp-4]
00607919     8B40 30         mov eax,dword ptr ds:[eax+30]
0060791C     50              push eax
0060791D     E8 54260900     call <jmp.&USER32.SetWindowPos>
00607922     33C0            xor eax,eax
00607924     E8 7369FFFF     call BatchCar.005FE29C
00607929     8945 F0         mov dword ptr ss:[ebp-10],eax
0060792C     E8 8768FFFF     call BatchCar.005FE1B8
00607931     8945 E4         mov dword ptr ss:[ebp-1C],eax
00607934     8B45 FC         mov eax,dword ptr ss:[ebp-4]
00607937     E8 78EEFFFF     call BatchCar.006067B4
0060793C     84C0            test al,al
0060793E     74 06           je short BatchCar.00607946
00607940     81CB 00001000   or ebx,100000
00607946     33C9            xor ecx,ecx
00607948     55              push ebp
00607949     68 CD796000     push BatchCar.006079CD
0060794E     64:FF31         push dword ptr fs:[ecx]
00607951     64:8921         mov dword ptr fs:[ecx],esp
00607954     53              push ebx
00607955     57              push edi
00607956     56              push esi
00607957     8B45 FC         mov eax,dword ptr ss:[ebp-4]
0060795A     8B40 30         mov eax,dword ptr ds:[eax+30]
0060795D     50              push eax
0060795E     E8 11250900     call <jmp.&USER32.MessageBoxA>          //此处nop掉,就不出现要求注册窗口了。但是不是真正的注册
00607963     8945 F8         mov dword ptr ss:[ebp-8],eax
00607966     33C0            xor eax,eax
00607968     5A              pop edx
00607969     59              pop ecx
0060796A     59              pop ecx
0060796B     64:8910         mov dword ptr fs:[eax],edx
0060796E     68 D4796000     push BatchCar.006079D4
00607973     8B45 EC         mov eax,dword ptr ss:[ebp-14]
00607976     3B45 E8         cmp eax,dword ptr ss:[ebp-18]
00607979     74 38           je short BatchCar.006079B3
0060797B     6A 1D           push 1D
0060797D     6A 00           push 0
0060797F     6A 00           push 0
00607981     8B4D B8         mov ecx,dword ptr ss:[ebp-48]
00607984     8B55 B0         mov edx,dword ptr ss:[ebp-50]
00607987     2BCA            sub ecx,edx
00607989     D1F9            sar ecx,1
0060798B     79 03           jns short BatchCar.00607990
0060798D     83D1 00         adc ecx,0
00607990     03CA            add ecx,edx
00607992     51              push ecx
00607993     8B55 B4         mov edx,dword ptr ss:[ebp-4C]
00607996     8B45 AC         mov eax,dword ptr ss:[ebp-54]
00607999     2BD0            sub edx,eax
0060799B     D1FA            sar edx,1
0060799D     79 03           jns short BatchCar.006079A2
0060799F     83D2 00         adc edx,0
006079A2     03D0            add edx,eax
006079A4     52              push edx
006079A5     6A 00           push 0
006079A7     8B45 FC         mov eax,dword ptr ss:[ebp-4]
006079AA     8B40 30         mov eax,dword ptr ds:[eax+30]
006079AD     50              push eax
006079AE     E8 C3250900     call <jmp.&USER32.SetWindowPos>
006079B3     8B45 F0         mov eax,dword ptr ss:[ebp-10]
006079B6     E8 9569FFFF     call BatchCar.005FE350
006079BB     8B45 F4         mov eax,dword ptr ss:[ebp-C]
006079BE     50              push eax
006079BF     E8 3A250900     call <jmp.&USER32.SetActiveWindow>
006079C4     8B45 E4         mov eax,dword ptr ss:[ebp-1C]
006079C7     E8 F467FFFF     call BatchCar.005FE1C0
006079CC     C3              retn

查找参考字符串吧,把下面的都找了。

Ultra 字符串参考,项目 100
地址=004084CB
反汇编=mov edx,BatchCar.0069C58B
文本字符串=reg
Ultra 字符串参考,项目 102
地址=00408527
反汇编=push BatchCar.0069C58F
文本字符串=reg
Ultra 字符串参考,项目 104
地址=004085A4
反汇编=mov edx,BatchCar.0069C5E3
文本字符串=reg
Ultra 字符串参考,项目 105
地址=004085FC
反汇编=mov edx,BatchCar.0069C5E7
文本字符串=reg
Ultra 字符串参考,项目 185
地址=0040AC1A
反汇编=mov edx,BatchCar.0069CCC4
文本字符串=已注册,谢谢!。(&thanks)
Ultra 字符串参考,项目 186
地址=0040AC74
反汇编=mov edx,BatchCar.0069CCDE
文本字符串=请注册,谢谢!。(&thanks)
Ultra 字符串参考,项目 202
地址=0040B1B0
反汇编=mov edx,BatchCar.0069CD6C
文本字符串=请您注册
0041333A     BA 2AD46900     mov edx,BatchCar.0069D42A                          ; reg

Ultra 字符串参考,项目 354
地址=00417A82
反汇编=mov eax,BatchCar.0069D5B0
文本字符串=谢谢您第
Ultra 字符串参考,项目 355
地址=00417A9D
反汇编=mov edx,BatchCar.0069D5B9
文本字符串=次使用本软件!您用的是限制版!请您注册!
Ultra 字符串参考,项目 356
地址=00417AF9
反汇编=mov edx,BatchCar.0069D5E0
文本字符串=点击[是]进行注册?点击[否]继续试用!
Ultra 字符串参考,项目 442
地址=0041EF5C
反汇编=mov edx,BatchCar.0069D9EC
文本字符串=     您已经注册,多谢您支持正版!如果使用过程中发现有不如意的地方,请发email把您的建议告诉作者,如果您利用本软件设计出很受欢迎的模板,请您把您设计的模板和底图发给作者。如果您能提供合理化的建议或提供优秀的模板给作者,将会得到作者免费的升级服务。请常到作 ...

Ultra 字符串参考,项目 1126
地址=004550A3
反汇编=mov eax,BatchCar.006B75BC
文本字符串=谢谢您第
Ultra 字符串参考,项目 1127
地址=004550BE
反汇编=mov edx,BatchCar.006B75C7
文本字符串=  次使用,付费后把序列号复制再粘贴到电子邮件发给作者!
Ultra 字符串参考,项目 1128
地址=004551B8
反汇编=mov edx,BatchCar.006B761D
文本字符串=123
Ultra 字符串参考,项目 1129
地址=004551CA
反汇编=mov edx,BatchCar.006B7605
文本字符串=请输入注册码
Ultra 字符串参考,项目 1130
地址=004551DC
反汇编=mov edx,BatchCar.006B75FE
文本字符串=注册
Ultra 字符串参考,项目 1132
地址=00455280
反汇编=push BatchCar.006B7621
文本字符串=reg
Ultra 字符串参考,项目 1133
地址=004552D4
反汇编=mov edx,BatchCar.006B7629
文本字符串=您已经注册,谢谢您的支持。&thanks
Ultra 字符串参考,项目 1134
地址=0045545B
反汇编=mov edx,BatchCar.006B775A
文本字符串=您注册不成功!请联系作者解决.
Ultra 字符串参考,项目 1136
地址=00455550
反汇编=mov edx,BatchCar.006B77EC
文本字符串=返回注册
Ultra 字符串参考,项目 1137
地址=004555E9
反汇编=mov edx,BatchCar.006B77F5
文本字符串=regist.txt

Ultra 字符串参考,项目 184
地址=0040AB62
反汇编=push BatchCar.0069CCC0
文本字符串=reg

Ultra 字符串参考,项目 2
地址=00403C9A
反汇编=mov edx,BatchCar.0069BE66
文本字符串=注册后消失www.deft7.com!

Ultra 字符串参考,项目 4466
地址=005C15A8
反汇编=push BatchCar.005C1678
文本字符串=floppy

Ultra 字符串参考,项目 4620
地址=00606D29
反汇编=push BatchCar.00606FF4
文本字符串=registerautomation

把找的字符串作一下重点调选,如下:

地址=0040AC1A 反汇编=mov edx,BatchCar.0069CCC4 文本字符串=已注册,谢谢!。(&thanks)Ultra 字符串参考,项目 186

地址=0040AC74 反汇编=mov edx,BatchCar.0069CCDE 文本字符串=请注册,谢谢!。(&thanks)Ultra 字符串参考,项目 202

跟随到了下面这一段:

0040ABFB     E8 44B62800     call BatchCar.00696244
0040AC00     59              pop ecx
0040AC01     84C9            test cl,cl
0040AC03     74 59           je short BatchCar.0040AC5E             // 这就是关键跳,不跳就行,有很多方法,改je,test ,pop都行,这样就爆掉了。可是在打印预览的时候有水印,本来不想跟了,那还是继续跟吧。运行以下,注册987654321,没什么效果。分析以下上面的几个call ,那么0040ABFB     E8 44B62800     call BatchCar.00696244就是一关键,F7进入吧。单步走。 

0040AC05     A1 D8CA6C00     mov eax,dword ptr ds:[_MainForm]
0040AC0A     C680 BC0E0000 0>mov byte ptr ds:[eax+EBC],1
0040AC11     66:C785 38FCFFF>mov word ptr ss:[ebp-3C8],560
0040AC1A     BA C4CC6900     mov edx,BatchCar.0069CCC4                          ; 已注册,谢谢!。(&thanks)
0040AC1F     8D85 48FDFFFF   lea eax,dword ptr ss:[ebp-2B8]
0040AC25     E8 CEB32800     call BatchCar.00695FF8
0040AC2A     FF85 44FCFFFF   inc dword ptr ss:[ebp-3BC]
0040AC30     8B10            mov edx,dword ptr ds:[eax]
0040AC32     8B8D 24FCFFFF   mov ecx,dword ptr ss:[ebp-3DC]
0040AC38     8B81 5C040000   mov eax,dword ptr ds:[ecx+45C]
0040AC3E     E8 8D441D00     call BatchCar.005DF0D0
0040AC43     FF8D 44FCFFFF   dec dword ptr ss:[ebp-3BC]
0040AC49     8D85 48FDFFFF   lea eax,dword ptr ss:[ebp-2B8]
0040AC4F     BA 02000000     mov edx,2
0040AC54     E8 EBB52800     call BatchCar.00696244
0040AC59     E9 C6050000     jmp BatchCar.0040B224
0040AC5E     8B0D D8CA6C00   mov ecx,dword ptr ds:[_MainForm]
0040AC64     C681 BC0E0000 0>mov byte ptr ds:[ecx+EBC],0
0040AC6B     66:C785 38FCFFF>mov word ptr ss:[ebp-3C8],56C
0040AC74     BA DECC6900     mov edx,BatchCar.0069CCDE                          ; 请注册,谢谢!。(&thanks)
0040AC79     8D85 3CFDFFFF   lea eax,dword ptr ss:[ebp-2C4]
0040AC7F     E8 74B32800     call BatchCar.00695FF8
0040AC84     FF85 44FCFFFF   inc dword ptr ss:[ebp-3BC]
0040AC8A     8B10            mov edx,dword ptr ds:[eax]
0040AC8C     8B85 24FCFFFF   mov eax,dword ptr ss:[ebp-3DC]
0040AC92     8B80 5C040000   mov eax,dword ptr ds:[eax+45C]
0040AC98     E8 33441D00     call BatchCar.005DF0D0

接着0040AC03     74 59           je short BatchCar.0040AC5E 地址讲,下面是进入call的地方。上面的跳,应该说是影响zf标志位的是pop ecx,那位分析一下ecx。

00696244     55              push ebp
00696245     8BEC            mov ebp,esp
00696247     51              push ecx
00696248     53              push ebx
00696249     56              push esi
0069624A     8BF2            mov esi,edx
0069624C     8945 FC         mov dword ptr ss:[ebp-4],eax
0069624F     837D FC 00      cmp dword ptr ss:[ebp-4],0
00696253     74 19           je short BatchCar.0069626E
00696255     8B45 FC         mov eax,dword ptr ss:[ebp-4]
00696258     E8 23BBFDFF     call BatchCar.00671D80   //这个过去后,ecx 变了,所以这个是要进入的call重新来过,后进入到这里,看下面的Call讲解。

0069625D     F7C6 01000000   test esi,1
00696263     74 09           je short BatchCar.0069626E
00696265     FF75 FC         push dword ptr ss:[ebp-4]
00696268     E8 D7E1FDFF     call BatchCar.00674444
0069626D     59              pop ecx
0069626E     5E              pop esi
0069626F     5B              pop ebx
00696270     59              pop ecx
00696271     5D              pop ebp
00696272     C3              retn

接着00696258     E8 23BBFDFF     call BatchCar.00671D80 讲,下面是进入call后的代码。F8单步走,

00671D80     8B10            mov edx,dword ptr ds:[eax]       //这里的eax是12fbf8,而[eax] 里的内容就是00ed64d4,把它放到edx,而00ed64d4的ASCII码就是刚才输的假码987654321,那么在内存地址窗口跟随吧。跟随后下硬件访问断点dword。重新开始文件吧。
00671D82     85D2            test edx,edx
00671D84     74 1C           je short BatchCar.00671DA2
00671D86     C700 00000000   mov dword ptr ds:[eax],0
00671D8C     8B4A F8         mov ecx,dword ptr ds:[edx-8]
00671D8F     49              dec ecx
00671D90     7C 10           jl short BatchCar.00671DA2
00671D92     F0:FF4A F8      lock dec dword ptr ds:[edx-8]
00671D96     75 0A           jnz short BatchCar.00671DA2
00671D98     50              push eax
00671D99     8D42 F8         lea eax,dword ptr ds:[edx-8]
00671D9C     E8 5BDCFFFF     call BatchCar.0066F9FC
00671DA1     58              pop eax
00671DA2     C3              retn

接着00671D80     8B10            mov edx,dword ptr ds:[eax],重新过来后,运行,第一次不是要的地方,第二次也不是,下面就是要的地方了。解释如下:

0067217C     53              push ebx
0067217D     56              push esi
0067217E     57              push edi
0067217F     89C6            mov esi,eax
00672181     89D7            mov edi,edx
00672183     39D0            cmp eax,edx
00672185     0F84 8F000000   je BatchCar.0067221A
0067218B     85F6            test esi,esi
0067218D     74 68           je short BatchCar.006721F7
0067218F     85FF            test edi,edi
00672191     74 6B           je short BatchCar.006721FE
00672193     8B46 FC         mov eax,dword ptr ds:[esi-4]
00672196     8B57 FC         mov edx,dword ptr ds:[edi-4]
00672199     29D0            sub eax,edx
0067219B     77 02           ja short BatchCar.0067219F
0067219D     01C2            add edx,eax
0067219F     52              push edx
006721A0     C1EA 02         shr edx,2
006721A3     74 26           je short BatchCar.006721CB                  
006721A5     8B0E            mov ecx,dword ptr ds:[esi]          //这里存的是假码
006721A7     8B1F            mov ebx,dword ptr ds:[edi]          //这里面存的就是注册码,可以在此做注册机了。 我的EDI 下地址00ED64B8下的内容为 ASCII "33508403125860" ,做注册机的时候,应该在第87次运行处下断。不过如果不做假的注册,就不好找注册点了。不继续追了。就这样吧,今天已经很晚了。所以,用注册机之前,先注册一下假的,再用注册机吧。后面附上附件了。不过不知道怎么了,即使注册成功了,还是在打印的时候有水印。
006721A9     39D9            cmp ecx,ebx
006721AB     75 58           jnz short BatchCar.00672205         
006721AD     4A              dec edx
006721AE     74 15           je short BatchCar.006721C5
006721B0     8B4E 04         mov ecx,dword ptr ds:[esi+4]
006721B3     8B5F 04         mov ebx,dword ptr ds:[edi+4]
006721B6     39D9            cmp ecx,ebx
006721B8     75 4B           jnz short BatchCar.00672205
006721BA     83C6 08         add esi,8
006721BD     83C7 08         add edi,8
006721C0     4A              dec edx
006721C1   ^ 75 E2           jnz short BatchCar.006721A5
006721C3     EB 06           jmp short BatchCar.006721CB
006721C5     83C6 04         add esi,4
006721C8     83C7 04         add edi,4
006721CB     5A              pop edx
006721CC     83E2 03         and edx,3
006721CF     74 22           je short BatchCar.006721F3
006721D1     8B0E            mov ecx,dword ptr ds:[esi]
006721D3     8B1F            mov ebx,dword ptr ds:[edi]
006721D5     38D9            cmp cl,bl
006721D7     75 41           jnz short BatchCar.0067221A
006721D9     4A              dec edx
006721DA     74 17           je short BatchCar.006721F3
006721DC     38FD            cmp ch,bh
006721DE     75 3A           jnz short BatchCar.0067221A
006721E0     4A              dec edx
006721E1     74 10           je short BatchCar.006721F3
006721E3     81E3 0000FF00   and ebx,0FF0000
006721E9     81E1 0000FF00   and ecx,0FF0000
006721EF     39D9            cmp ecx,ebx
006721F1     75 27           jnz short BatchCar.0067221A
006721F3     01C0            add eax,eax
006721F5     EB 23           jmp short BatchCar.0067221A
006721F7     8B57 FC         mov edx,dword ptr ds:[edi-4]
006721FA     29D0            sub eax,edx
006721FC     EB 1C           jmp short BatchCar.0067221A
006721FE     8B46 FC         mov eax,dword ptr ds:[esi-4]
00672201     29D0            sub eax,edx
00672203     EB 15           jmp short BatchCar.0067221A
00672205     5A              pop edx
00672206     38D9            cmp cl,bl
00672208     75 10           jnz short BatchCar.0067221A
0067220A     38FD            cmp ch,bh
0067220C     75 0C           jnz short BatchCar.0067221A
0067220E     C1E9 10         shr ecx,10
00672211     C1EB 10         shr ebx,10
00672214     38D9            cmp cl,bl
00672216     75 02           jnz short BatchCar.0067221A
00672218     38FD            cmp ch,bh
0067221A     5F              pop edi
0067221B     5E              pop esi
0067221C     5B              pop ebx
0067221D     C3              retn

EDI 00ED64B8 ASCII "33508403125860"

3、继续,看一下到底是不是一个功能不完整的软件。
查字符串,见到下面的这些,进入堆栈,又出栈的,可是查来查去不好查。另想思路。
00403C9A     BA 66BE6900     mov edx,BatchCar.0069BE66                          ; 注册后消失www.deft7.com!

还是在查找所有模块的调用吧,在这个函数ExtTextOutA处下断吧,这个函数是用当前选择的字体、背景颜色和正文颜色来绘制一个字符串。有一下四个,分别下了断点。运行,第一个断下,没有什么,取消这个断点,继续运行,打印预览。

004718CC     E8 BD802200     call <jmp.&GDI32.ExtTextOutA>
00471BE4     E8 A57D2200     call <jmp.&GDI32.ExtTextOutA>    //在此处断下,堆栈里出现了这个,0012FB0C   08F3BC8C  |String = "www.flyear.com注册后消失!"这里就应该是上面进栈后出现的了。可以在内存窗口跟一下,内容为:0A605C50  2E777777  www.
0A605C54  65796C66  flye
0A605C58  632E7261  ar.c
0A605C5C  A2D76D6F  om注
0A605C60  F3BAE1B2  册后
0A605C64  A7CAFBCF  消失
0A605C68  0000A1A3  !..
不过没跟。向上找了。下面接着讲。
005F3EF1     E8 985A0A00     call <jmp.&GDI32.ExtTextOutA>   //这个用不到了,呵呵。
005F3FA4     E8 E5590A00     call <jmp.&GDI32.ExtTextOutA>   //这个也用不到了,呵呵。

接着上面的讲,找段首,这一段为,

00471AFF     55              push ebp
00471B00     68 8B1C4700     push BatchCar.00471C8B
00471B05     64:FF30         push dword ptr fs:[eax]
00471B08     64:8920         mov dword ptr fs:[eax],esp
00471B0B     8B45 08         mov eax,dword ptr ss:[ebp+8]
00471B0E     8B40 C8         mov eax,dword ptr ds:[eax-38]
00471B11     8B80 1C020000   mov eax,dword ptr ds:[eax+21C]
00471B17     80B8 8D020000 0>cmp byte ptr ds:[eax+28D],0
00471B1E     0F84 C5000000   je BatchCar.00471BE9      //分析一下,这个就是关键跳了。改吧,怎么改都行,反正跳了就行。
00471B24     8D4D FC         lea ecx,dword ptr ss:[ebp-4]
00471B27     8B45 08         mov eax,dword ptr ss:[ebp+8]
00471B2A     8B40 C8         mov eax,dword ptr ds:[eax-38]
00471B2D     8B80 54020000   mov eax,dword ptr ds:[eax+254]
00471B33     8BD3            mov edx,ebx
00471B35     8B30            mov esi,dword ptr ds:[eax]
00471B37     FF56 0C         call dword ptr ds:[esi+C]
00471B3A     8B45 FC         mov eax,dword ptr ss:[ebp-4]
00471B3D     E8 F6042000     call BatchCar.00672038
00471B42     85C0            test eax,eax
00471B44     0F8E 9F000000   jle BatchCar.00471BE9
00471B4A     6A 00           push 0
00471B4C     8D4D F8         lea ecx,dword ptr ss:[ebp-8]
00471B4F     8B45 08         mov eax,dword ptr ss:[ebp+8]
00471B52     8B40 C8         mov eax,dword ptr ds:[eax-38]
00471B55     8B80 54020000   mov eax,dword ptr ds:[eax+254]
00471B5B     8BD3            mov edx,ebx
00471B5D     8B30            mov esi,dword ptr ds:[eax]
00471B5F     FF56 0C         call dword ptr ds:[esi+C]
00471B62     8B45 F8         mov eax,dword ptr ss:[ebp-8]
00471B65     E8 CE042000     call BatchCar.00672038
00471B6A     50              push eax
00471B6B     8D4D F4         lea ecx,dword ptr ss:[ebp-C]
00471B6E     8B45 08         mov eax,dword ptr ss:[ebp+8]
00471B71     8B40 C8         mov eax,dword ptr ds:[eax-38]
00471B74     8B80 54020000   mov eax,dword ptr ds:[eax+254]
00471B7A     8BD3            mov edx,ebx
00471B7C     8B30            mov esi,dword ptr ds:[eax]
00471B7E     FF56 0C         call dword ptr ds:[esi+C]
00471B81     8B45 F4         mov eax,dword ptr ss:[ebp-C]
00471B84     E8 A7062000     call BatchCar.00672230
00471B89     50              push eax
00471B8A     8B45 08         mov eax,dword ptr ss:[ebp+8]
00471B8D     83C0 B4         add eax,-4C
00471B90     50              push eax
00471B91     8B45 08         mov eax,dword ptr ss:[ebp+8]
00471B94     8B40 A4         mov eax,dword ptr ds:[eax-5C]
00471B97     50              push eax
00471B98     8B45 08         mov eax,dword ptr ss:[ebp+8]
00471B9B     66:8B50 E8      mov dx,word ptr ds:[eax-18]
00471B9F     52              push edx
00471BA0     FF70 E4         push dword ptr ds:[eax-1C]
00471BA3     FF70 E0         push dword ptr ds:[eax-20]
00471BA6     8B45 08         mov eax,dword ptr ss:[ebp+8]
00471BA9     8B40 C8         mov eax,dword ptr ds:[eax-38]
00471BAC     8B80 24020000   mov eax,dword ptr ds:[eax+224]
00471BB2     E8 05C8FFFF     call BatchCar.0046E3BC
00471BB7     50              push eax
00471BB8     8B45 08         mov eax,dword ptr ss:[ebp+8]
00471BBB     66:8B50 B0      mov dx,word ptr ds:[eax-50]
00471BBF     52              push edx
00471BC0     FF70 AC         push dword ptr ds:[eax-54]
00471BC3     FF70 A8         push dword ptr ds:[eax-58]
00471BC6     8B45 08         mov eax,dword ptr ss:[ebp+8]
00471BC9     8B40 C8         mov eax,dword ptr ds:[eax-38]
00471BCC     8B80 24020000   mov eax,dword ptr ds:[eax+224]
00471BD2     E8 A9C7FFFF     call BatchCar.0046E380
00471BD7     50              push eax
00471BD8     8B45 08         mov eax,dword ptr ss:[ebp+8]
00471BDB     8B40 C4         mov eax,dword ptr ds:[eax-3C]
00471BDE     E8 E5251800     call BatchCar.005F41C8
00471BE3     50              push eax
00471BE4     E8 A57D2200     call <jmp.&GDI32.ExtTextOutA>
00471BE9     8B45 08         mov eax,dword ptr ss:[ebp+8]
00471BEC     8B40 C8         mov eax,dword ptr ds:[eax-38]
00471BEF     8BB0 1C020000   mov esi,dword ptr ds:[eax+21C]
00471BF5     80BE 8C020000 0>cmp byte ptr ds:[esi+28C],0
00471BFC     74 5D           je short BatchCar.00471C5B

关键跳:
00471B1E    /0F84 C5000000   je BatchCar.00471BE9

这样就破解成功了。

什么流氓软件,注册成功了,还不去掉水印,希望调试了这个软件的时期版本,不要影响人家啊。现在可能是5.35了。干脆上面的那个注册的跳一起爆掉,就不用作内存注册机了。总结,分析思路有这么几种,小生怕怕好象总结的,命令查找、字符串查找、函数查找,函数查找要熟悉这种语言了,就象上面分析的。即使再怎么加密,处理,如果你熟悉这种语言,那么软件被破,轻而易举的事。所以,要想分析,熟悉几种语言是十分有必要的。再就是小生我怕怕没提的那个内存跟踪是一种很好的技能。
分析到此结束,希望对大家分析有所帮助。

这个软件的原版是在华军软件下载的。大家可以到那里下载调试。
附上补丁吧!!本人邮箱123186685@QQ.com,原与大家讨论。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 6
支持
分享
最新回复 (5)
雪    币: 202
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
要改这么多啊   还不如算个注册码出来注册一下呢
2012-2-10 11:55
0
雪    币: 88
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
实际上,爆掉,没改几个地方,也就两个地方吧。只是分析的时候,有些地方爆掉了。注册码能用注册机得到,只是这个软件设计,注册码对了,可预览的时候还有水印,不知道它原版的是什么样子的,可能还需要软盘,加密狗之类的吧。所以这软件只能爆破了。哈哈。
2012-2-10 14:49
0
雪    币: 8201
活跃值: (2706)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
仔细看看注册机制吧,不会水印的地方也检查吧
丢ida看了一下,可能是key文件吧,bcb编的
2012-2-10 20:40
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢楼主的分享,支持一下!
2012-2-11 17:28
0
雪    币: 15
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
肯嗲啊
楼主果真人才啊
2012-2-15 17:14
0
游客
登录 | 注册 方可回帖
返回
//