首页
社区
课程
招聘
一个软件的爆破
2004-7-1 12:39 6198

一个软件的爆破

2004-7-1 12:39
6198
【破解作者】 xcs
【作者邮箱】 xcs2356.126.com
【使用工具】 c32asm,peid,regshot1.61
【破解平台】 Win9x/NT/2000/XP
【软件名称】 esdps4.01
【软件简介】 这是一款工程测量专业软件,无论是界面还是功能相当不错.未注册用户只能使用150次.注册费180元.
下载地址:http://download.5iyt.com/softview/softview_4266.html
【软件大小】 2.02
【加壳方式】 aspack2.12
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:);献丑了!!
--------------------------------------------------------------------------------
【破解内容】

以前我破解了这个版本,去掉了NAG,后来有朋友反映说软件已经过期,@_@.我倒.
拿来一看,果真过期了(原版没过期,说明是破解引起的),详细分析一下一团糟。干脆
来个重新破解.注册码嘛很遗憾没找到.只有爆破了,^_^!!各位大哥见笑了.
分析之后有以下几处需要解决:
1、去掉启动NAG
2、去掉次数限制
3、去掉“未注册”字样
4、去掉计算NAG
5、解决过期问题

先脱壳,再让我一个一个来:

1、用TRW+F10粗跟踪,再通过分析汇编代码,发现以下信息:

::00413B56::  8BCE                     MOV     ECX, ESI                        
::00413B58::  E8 8B1E0600              CALL    004759E8                        
::00413B5D::  6A 04                    PUSH    4                              
::00413B5F::  8BCE                     MOV     ECX, ESI                        
::00413B61::  E8 7C1E0600              CALL    004759E2                       
::00413B66::  8BCE                     MOV     ECX, ESI                        
::00413B68::  E8 53070000              CALL    004142C0                     
::00413B6D::  84C0                     TEST    AL, AL                          
::00413B6F::  0F85 1A020000            JNZ     00413D8F                    
::00413B75::  6A 00                    PUSH    0                              
::00413B77::  8D4C24 5C                LEA     ECX, DWORD PTR [ESP+5C]         
::00413B7B::  E8 10410400              CALL    00457C90                       
::00413B80::  8D4C24 58                LEA     ECX, DWORD PTR [ESP+58]         
::00413B84::  C78424 1C050000 01000000 MOV     DWORD PTR [ESP+51C], 1         
::00413B8F::  E8 FE190600              CALL    00475592                        \此处就是调用启动注册对话框的CALL,NOP掉.
                                                                                过期问题由此引起,不知道在此CALL内作了
                                                                                什么手脚。我跟了半天,一头雾水。@_@
::00413B94::  83F8 02                  CMP     EAX, 2                                                               
::00413B97::  0F85 CB000000            JNZ     00413C68                       
::00413B9D::  8D8C24 10050000          LEA     ECX, DWORD PTR [ESP+510]        
::00413BA4::  C78424 1C050000 0A000000 MOV     DWORD PTR [ESP+51C], A         
::00413BAF::  E8 941B0600              CALL    00475748                        
::00413BB4::  8D8C24 0C050000          LEA     ECX, DWORD PTR [ESP+50C]        

2、解决次数问题,先用注册表监视工具regshot1.61监视,发现程序的注册信息和使用次数放在往注册表里,每次启动是读写注册表。
   用C32ASM反汇编,参考字符串“BCGPControlBar-59392”来到这里。
::00413C63::  E9 1E020000              JMP     00413E86                     
::00413C68::  6A 01                    PUSH    1                             
::00413C6A::  68 74C54900              PUSH    49C574                              \->: times
::00413C6F::  68 74C54900              PUSH    49C574                              \->: times
::00413C74::  8BCE                     MOV     ECX, ESI                        
::00413C76::  E8 611D0600              CALL    004759DC                     
::00413C7B::  6A 01                    PUSH    1                              
::00413C7D::  68 5CC54900              PUSH    49C55C                              \->: BCGPControlBar-59392
::00413C82::  68 50C54900              PUSH    49C550                              \->: Settings
::00413C87::  8BCE                     MOV     ECX, ESI                        
::00413C89::  E8 4E1D0600              CALL    004759DC                            \从注册表里读出总次数                       
::00413C8E::  0FBFC0                   MOVSX   EAX, AX                        
::00413C91::  A3 FC2E4A00              MOV     DWORD PTR [4A2EFC], EAX         
::00413C96::  40                       INC     EAX                                 \此处总次数加1,NOP掉  
::00413C97::  50                       PUSH    EAX                             
::00413C98::  68 74C54900              PUSH    49C574                              \->: times
::00413C9D::  68 74C54900              PUSH    49C574                              \->: times
::00413CA2::  8BCE                     MOV     ECX, ESI                        
::00413CA4::  E8 2D1D0600              CALL    004759D6                            \从注册表里读出使用次数
::00413CA9::  8B15 FC2E4A00            MOV     EDX, DWORD PTR [4A2EFC]         
::00413CAF::  8BCE                     MOV     ECX, ESI                        
::00413CB1::  42                       INC     EDX                                 \  此处使用次数加1,NOP掉                                   
::00413CB2::  52                       PUSH    EDX                             
::00413CB3::  68 5CC54900              PUSH    49C55C                              \->: BCGPControlBar-59392
::00413CB8::  68 50C54900              PUSH    49C550                              \->: Settings
::00413CBD::  E8 141D0600              CALL    004759D6                       
::00413CC2::  C605 002F4A00 00         MOV     BYTE PTR [4A2F00], 0            
::00413CC9::  8D8C24 10050000          LEA     ECX, DWORD PTR [ESP+510]        
::00413CD0::  C78424 1C050000 13000000 MOV     DWORD PTR [ESP+51C], 13   
    次数问题就这样轻松解决了,永远都是“第一次”使用。嘿嘿!!!
3、去掉“未注册”字样,共有两处:
::0041493F::  68 3CC74900              PUSH    49C73C                              \->: 此软件使用权属于:
::00414944::  8D4C24 10                LEA     ECX, DWORD PTR [ESP+10]         
::00414948::  75 4B                    JNZ     SHORT 00414995                     \此一处,跳过就没有啦!!!75改74
::0041494A::  E8 FF0D0600              CALL    0047574E                        
::0041494F::  8D4C24 3C                LEA     ECX, DWORD PTR [ESP+3C]         
::00414953::  51                       PUSH    ECX                             
::00414954::  8D4C24 10                LEA     ECX, DWORD PTR [ESP+10]         
::00414958::  E8 350F0600              CALL    00475892                        
::0041495D::  68 30C74900              PUSH    49C730                              \->: (未注册)
::00414962::  8D4C24 10                LEA     ECX, DWORD PTR [ESP+10]         
::00414966::  E8 270F0600              CALL    00475892                        
::0041496B::  8B4424 0C                MOV     EAX, DWORD PTR [ESP+C]         
::0041496F::  C74424 18 02000000       MOV     DWORD PTR [ESP+18], 2           
::00414977::  C74424 1C B6000000       MOV     DWORD PTR [ESP+1C], B6         
::0041497F::  897424 20                MOV     DWORD PTR [ESP+20], ESI         
::00414983::  C74424 24 C8000000       MOV     DWORD PTR [ESP+24], C8         
::0041498B::  8B48 F8                  MOV     ECX, DWORD PTR [EAX-8]         
::0041498E::  53                       PUSH    EBX                             
::0041498F::  8D5424 1C                LEA     EDX, DWORD PTR [ESP+1C]         
::00414993::  EB 49                    JMP     SHORT 004149DE                  
::00414995::  E8 B40D0600              CALL    0047574E                        
::0041499A::  8D4C24 3C                LEA     ECX, DWORD PTR [ESP+3C]         
::0041499E::  51                       PUSH    ECX                             
::0041499F::  8D4C24 10                LEA     ECX, DWORD PTR [ESP+10]         
::004149A3::  E8 EA0E0600              CALL    00475892                        
::004149A8::  68 24C74900              PUSH    49C724                              \->: (已注册)
::004149AD::  8D4C24 10                LEA     ECX, DWORD PTR [ESP+10]         
::004149B1::  E8 DC0E0600   

::0045E67B::  68 3CC74900              PUSH    49C73C                              \->: 此软件使用权属于:
::0045E680::  8D4C24 08                LEA     ECX, DWORD PTR [ESP+8]         
::0045E684::  75 1A                    JNZ     SHORT 0045E6A0                      \又一处,跳过就没有啦!!!74改75
::0045E686::  E8 C3700100              CALL    0047574E                        
::0045E68B::  8D4424 24                LEA     EAX, DWORD PTR [ESP+24]         
::0045E68F::  8D4C24 04                LEA     ECX, DWORD PTR [ESP+4]         
::0045E693::  50                       PUSH    EAX                             
::0045E694::  E8 F9710100              CALL    00475892                        
::0045E699::  68 30C74900              PUSH    49C730                              \->: (未注册)
::0045E69E::  EB 18                    JMP     SHORT 0045E6B8               
::0045E6A0::  E8 A9700100              CALL    0047574E                       
::0045E6A5::  8D4C24 24                LEA     ECX, DWORD PTR [ESP+24]         
::0045E6A9::  51                       PUSH    ECX                             
::0045E6AA::  8D4C24 08                LEA     ECX, DWORD PTR [ESP+8]         
::0045E6AE::  E8 DF710100              CALL    00475892                        
::0045E6B3::  68 24C74900              PUSH    49C724                              \->: (已注册)
::0045E6B8::  8D4C24 08                LEA     ECX, DWORD PTR [ESP+8]         
::0045E6BC::  E8 D1710100              CALL    00475892                        
::0045E6C1::  8D4C24 04                LEA     ECX, DWORD PTR [ESP+4]         
::0045E6C5::  C74424 3C FFFFFFFF       MOV     DWORD PTR [ESP+3C], -1         
::0045E6CD::  E8 76700100              CALL    00475748                       
::0045E6D2::  8B4C24 34                MOV     ECX, DWORD PTR [ESP+34]         
::0045E6D6::  33C0                     XOR     EAX, EAX                        
::0045E6D8::  5E                       POP     ESI                             
::0045E6D9::  64:890D 00000000         MOV     DWORD PTR FS:[0], ECX

4、去掉计算NAG,通过分析汇编代码,发现以下信息:
::00419466::  52                       PUSH    EDX                             
::00419467::  6A 04                    PUSH    4                              
::00419469::  57                       PUSH    EDI                             
::0041946A::  E8 B1CD0500              CALL    00476220                     
::0041946F::  56                       PUSH    ESI                             
::00419470::  E8 5BC20500              CALL    004756D0                        
::00419475::  83C4 04                  ADD     ESP, 4                          
::00419478::  A0 002F4A00              MOV     AL, BYTE PTR [4A2F00]           
::0041947D::  84C0                     TEST    AL, AL                          
::0041947F::  75 25                    JNZ     SHORT 004194A6                      \此处跳过"数据处理结束\x0A未注册"的NAG,当然是75改74啦!
::00419481::  8B4424 1C                MOV     EAX, DWORD PTR [ESP+1C]         
::00419485::  6A 01                    PUSH    1                              
::00419487::  68 F4010000              PUSH    1F4                             
::0041948C::  68 B80B0000              PUSH    BB8                             
::00419491::  68 F4010000              PUSH    1F4                             
::00419496::  68 F0CA4900              PUSH    49CAF0                              \->: 数据处理结束\x0A未注册
::0041949B::  8D88 A0020000            LEA     ECX, DWORD PTR [EAX+2A0]        
::004194A1::  E8 8A690400              CALL    0045FE30                        
::004194A6::  8D4C24 28                LEA     ECX, DWORD PTR [ESP+28]           

5,最后解决过期问题,这个问题捆绕了我很久,解决计算NAG的过程中给我一些信息与启发,查找字符串”软件已经过期“,
一查,还真有。下面的事就好办了。我改:
::004320FD::  7F 09                    JG      SHORT 00432108                 
::004320FF::  A0 382F4A00              MOV     AL, BYTE PTR [4A2F38]           
::00432104::  84C0                     TEST    AL, AL                          
::00432106::  75 2F                    JNZ     SHORT 00432137                  
::00432108::  A0 002F4A00              MOV     AL, BYTE PTR [4A2F00]           
::0043210D::  84C0                     TEST    AL, AL                          
::0043210F::  75 26                    JNZ     SHORT 00432137                     \此处解决过期问题,不跳就过期啦我跳!75改74
::00432111::  6A 01                    PUSH    1                                  \问题解决
::00432113::  68 F4010000              PUSH    1F4                             
::00432118::  68 B80B0000              PUSH    BB8                             
::0043211D::  68 F4010000              PUSH    1F4                             
::00432122::  68 04D84900              PUSH    49D804                              \->: 软件已经过期\x0A请注册
::00432127::  8D8E A0020000            LEA     ECX, DWORD PTR [ESI+2A0]        
::0043212D::  E8 FEDC0200              CALL    0045FE30                       
::00432132::  5F                       POP     EDI                             
::00432133::  33C0                     XOR     EAX, EAX                        
::00432135::  5E                       POP     ESI                             
::00432136::  C3                       RETN

通过上面的修改,此软件已经是没有任何限制的注册版了;哈哈,高兴。美中不足的是没有找到注册码。

--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

收藏
免费 3
打赏
分享
最新回复 (9)
雪    币: 237
活跃值: (160)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
XF[BCG] 1 2004-7-2 11:19
2
0
你根本就没有找到注册的地方,这么和你说吧,作者将你输入的30位注册码通过算法还原成7位数值和你的序列号比较,成功做一标记。默认就是不成功,你没有找到关键的地方,要破解只要改半个字节就OK了。
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xcs 2004-7-2 11:45
3
0
请指教!:o :o :o :o :o :o
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xcs 2004-7-2 14:13
4
0
:o
雪    币: 34
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
八神庵 2004-7-2 19:20
5
0
好难,有很多东西要学啊…………
雪    币: 1373
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
binliao 2004-7-10 23:17
6
0
完美破解:

:00413B68 E853070000              call 004142C0 \启动时注册验证
:00413B6D 84C0                    test al, al
:00413B6F 0F851A020000            jne 00413D8F  \验证错误不跳
      ==> 90E91A020000            jmp 00413D8F  \改为跳到注册成功
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xcs 2004-7-13 12:03
7
0
好!
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
鸡蛋壳 2004-7-13 12:49
8
0
楼主头像能不能改一下,先来后到,这个规矩都不懂。
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xcs 2004-7-16 14:17
9
0
谢谢指教!
雪    币: 280
活跃值: (281)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
lzqgj 6 2004-7-16 20:07
10
0
00419478:: A0 002F4A00 MOV AL, BYTE PTR [4A2F00]
::0041947D:: 84C0 TEST AL, AL
::0041947F:: 75 25 JNZ SHORT 004194A6 \此处跳过"数据处理结束\x0A未注册"的NAG,当然是75改74啦!

标志位可能在[4A2F00],试试用内存断点看看什么时候[4A2F00]的值会改变,然后及时改变标志位的值。
游客
登录 | 注册 方可回帖
返回