• 标 题:文晟扫描5. 0  之破解经过 (7千字)
  • 作 者:bluearc
  • 时 间:2002-9-25 22:10:54
  • 链 接:http://bbs.pediy.com

文晟扫描5. 0  是一个优秀的扫描软件,该软件智能化较高,容易上手,使用方便,并且不需过多设置就可使用其强大的功能。只是它的试用期只有30天,到期后,该软件将自动锁死。。。让你无法使用。这样的行为,是包括我在内的所有carcker所不能容忍的!
软件名称:文晟扫描5. 0 
保护方式:机器码加注册码
破解工具:softice 4.05
破解思路:方案一 、通过动态跟踪,获得注册码 。
                    方案二  、在方案一失败的情况下,找准突破口,编缉代码,采取暴破。
Bgein !
          一、载入softice在win98之前。
        二、启动文晟扫描5.0并打开注册对话框,此注册对话框内分别有机器码文本框和注册码输入框,我们可以看到在机器码文本框里,程序给出了机器码:8A8A2ABC1372D380-2319B499(我的是这个,每台计算机的机器码都不相同),程序要做的是用这个只产生于一台计算机的机器码通过一定的算法来产生注册码,然后来验证我们输入的注册码是否正确,从而限制免费用户的长期使用。。。我们不用管它,在密码输入框内输入8888888888888888888888888(随意,意为让软件作者发发发发发。。。呵呵。。。)后,用ctrl+d呼出softice,设置专门用于挡截内存copy动作的断点bpx hmemcpy,然后按F5继续运行程序,当我们点击注册码输入框的确定按钮时,马上被softice成功挡截。
          三、bd *
          四、按F12七次之后,来到文晟扫描5.0的领空:

0167:00512A12  CALL      00559ADC        -----------调用我们输入的密码                            
0167:00512A17  POP      ECX                                                  
0167:00512A18  POP      ECX                                                   
0167:00512A19  POP      EBP                                                   
。。。。。。。。。。。。。
0167:00512A4D  TEST      AL,04              ---------没什么值得怀疑,我都D 某某过了 ,呵呵 。。。             
0167:00512A4F  JNZ      00512A68                                             
0167:00512A51  PUSH      00                                                   
0167:00512A53  PUSH      03                                                   
0167:00512A55  PUSH      000000D3                                             
0167:00512A5A  MOV      EAX,[EBP-04]                                          
0167:00512A5D  CALL      0055CC00                                            
哪哪哪哪哪哪哪哪哪SCANIMAGE!.text+00111A12哪哪哪哪哪哪---------程序领空
          五、如下所示,按F10一直到0167:004167E2  CALL      004DCB70    停下,为什么要在这里停下呢?原因有两个,第一,下d ecx 出现程序给出的机器码:8A8A2ABC1372D380-2319B499及我们输入的试探密码:8888888888888888888888888。第二,你只要再敢走一步,程序马上就要弹出密码错误提示框了(不信你试试:),所以,我们别无选择,按F8进入此call  。。。
                                       
0167:004167D9  MOV      EDX,[EDX]                                         
0167:004167DB  MOV      EAX,[EBX+000002F8]                                   
0167:004167E1  POP      ECX                                                   
0167:004167E2  CALL      004DCB70                        -------下d  ecx  出现试探码及机器码 ,可疑!如果
0167:004167E7  DEC      DWORD PTR [EBP-10]              再往下 走,我们要提前出局了,只有按F8 。。   
0167:004167EA  LEA      EAX,[EBP-08]                                         
0167:004167ED  MOV      EDX,00000002                                         
0167:004167F2  CALL      005B1A28                     
          六、进入后,我们来到这里:
0167:004DCB6F  RET                                                  --------程序在这里停下                      
0167:004DCB70  PUSH      EBP                                                  
0167:004DCB71  MOV      EBP,ESP                                               
0167:004DCB73  ADD      ESP,-10                                               
0167:004DCB76  MOV      [EBP-0C],ECX                                         
0167:004DCB79  MOV      [EBP-08],EDX                                         
0167:004DCB7C  MOV      [EBP-04],EAX                                         
0167:004DCB7F  MOV      EAX,[EBP-08]                                         
0167:004DCB82  CALL      005A20A0                      ---------注意这里,d eax 指向的机器码                         
0167:004DCB87  MOV      EAX,[EBP-0C]                                                d ecx指向我们试探码
0167:004DCB8A  CALL      005A20A0                                             
0167:004DCB8F  XOR      EAX,EAX                                                       
              。。。。。。。。。
            七、其它都没什么值得怀疑的,按F10往下走。。。
0167:004DCC67  MOV      EAX,[EBP-10]                                         
0167:004DCC6A  CALL      00517714                                             
0167:004DCC6F  MOV      EAX,[EBP-10]                                         
0167:004DCC72  CALL      005A0E7C                                             
0167:004DCC77  MOV      EAX,[EBP-04]                                         
0167:004DCC7A  CALL      004DD080                    --------注意这里,再往后一步就game over  !             
0167:004DCC7F  MOV      EAX,[EBP-04]                          别无它路 ,按F8跟进此call...   
0167:004DCC82  CMP      BYTE PTR [EAX+2B],00                                 
0167:004DCC86  JZ        004DCC90                                             
0167:004DCC88  MOV      EAX,[EBP-04]                                         
0167:004DCC8B  CALL      004DC9F0                                             
0167:004DCC90  XOR      EAX,EAX       
                八、按F8进入之后,不知按了多少次F10也不知被这狡猾的程序把softice花了多少次脸后(没事儿的,花脸之后,按F4两次就可以恢复正常),来到以下地方:
0167:004DD1CD  CALL      005A1FFC            ------- 注意这里,d  eax 指向机器码及试探码
0167:004DD1D2  JZ        004DD22D                                              d edx指向正确的注册码
0167:004DD1D4  CMP      DWORD PTR [EBP-0C],00                                 
0167:004DD1D8  JZ        004DD1E2                                             
0167:004DD1DA  MOV      EAX,[EBP-04]                                         
0167:004DD1DD  CALL      004DC9CC                                             
。。。。。。。。。。。。。。。。。。。。。                                                                   
        九、大家看到,程序在一番疯来疯去之后。。。:)来到0167:004DD1CD  CALL      005A1FFC,我们在这里停下,d  eax指向8888888888888888888888888 和8A8A2ABC1372D380-2319B499而 d  edx则指向lplG5dLhCzg3bWoqtx556Mh7jVvgmEat  看来,这就是我们要找的注册码.
        十、继续跟踪,验证我们的推断。。。经过了多次证实。。。。不久后光荣退出。。。
      十一、将我们得到的注册码输入后(一定要注意大小写)。。。。程序弹出:“注册成功”。。。                    脱狱!。。。现在,我们可以无限制的使用了,不过,这不是我们的目的,我们的目的永远是提高,再提高!
          十二 、总结此次破解,得出经验:1,验证注册码的子程序一般都会露出马脚。2,验证注册码的子程序结束之后一般都会让你game over。3,有时,抓住最后的机会是成功“脱狱”的关键之所在!                                                                                                                               


                                            飞龙狗狗