• 标 题:一个典型的时间限制软件的破解 (4千字)
  • 作 者:uhlan
  • 时 间:2001-1-29 8:21:30
  • 链 接:http://bbs.pediy.com

明天就开学了,开学后就会忙得要命,再也没有时间来学习破解技术了。
所以这可能是我近期最后一篇文章了。


软件名:Minicom 3.6

软件简介:对于家里有两台电脑的朋友来说,这是个挺有用的软件。
它可以用来控制网络上另一台电脑的一切活动。包括运行软件,更
改系统配置,关机,等等。由于它有实时屏幕抓图的功能,所以一
切操作都象在自己这台电脑上进行一样。


下载地址:
http://dccnet.tucows.com/files2/mc30day.exe

所用的工具:
            1.softICE 4.05.可在下列网址download
http://mud.sz.jsinfo.net/per/aaron/files/debuggers/win/si405w9x.zip

            2.HIEW 6.01
下载地址: http://go2.163.com/%7Etoye/tools/hiew640reg.zip

破解思路:

          本软件的破解思路和步骤完全来自看雪教材。如果你对这类软件
的破解原理还不了解,请看完这篇文章再看下去。
http://www.kanxue.com/lesson1404.htm


费话少说,让我们开始吧!


I. 找出对比关键。


1. 用 SoftICE 的 Symbol Loader 载入 mincom.exe

2. 被拦下来后,下 bpx getlocaltime

3. 按 F5, 然后,就会被 SoftICE 再次拦下来。

4. 下 wc 取消显示指令栏。

5.  然后就是狂按 F10 啦。一直到跳出SoftICE为止。

6.  回到 SoftICE 的 Symbol Loader ,选 File---> Save SoftICE History As...
    吧刚才我们所看到的东西都保存为log1.txt。

7.  把系统时间调后三个月。

8. 再用 SoftICE 的 Symbol Loader 载入 mincom.exe.

9. 用前面相同的步骤取得另外一个文件,取名为 log2.txt.

10. 用写字板打开这两个文件。看从那里开始,这两个文件开始不同。

  我把这两个文件的相同部分帖在下面了。

Break due to BPX KERNEL32!GetLocalTime  (ET=98.36 milliseconds)
KERNEL32!GetLocalTime
0177:BFF77256  PUSH      BFFA2168
0177:BFF7725B  PUSH      DWORD PTR FS:[EDX]
0177:BFF7725E  MOV      FS:[EDX],ESP
0177:BFF77261  MOV      ECX,[ESP+0C]
0177:BFF77265  ADD      BYTE PTR [ECX],00
0177:BFF77268  ADD      BYTE PTR [ECX+0F],00
0177:BFF7726C  POP      DWORD PTR FS:[EDX]
0177:BFF7726F  ADD      ESP,04
0177:BFF77272  JMP      BFF76A58                                    (JUMP )
0177:BFF76A58  PUSH      EBP
0177:BFF76A59  MOV      EBP,ESP
0177:BFF76A5B  PUSH      EDI
0177:BFF76A5C  PUSH      EBX
0177:BFF76A5D  PUSH      DWORD PTR [BFFCAE10]
0177:BFF76A63  CALL      KERNEL32!ORD_0061
0177:BFF76A68  MOV      EDI,[EBP+08]
0177:BFF76A6B  MOV      ECX,00000004
0177:BFF76A70  SUB      EAX,EAX
0177:BFF76A72  REPZ STOSD
0177:BFF76A74  MOV      EDI,[EBP+08]
0177:BFF76A77  MOV      AH,2A
0177:BFF76A79  CALL      BFF712B9
0177:BFF76A7E  MOV      [EDI+02],DH
0177:BFF76A81  MOV      [EDI+06],DL
0177:BFF76A84  MOV      [EDI],CX
0177:BFF76A87  SUB      AH,AH
0177:BFF76A89  MOV      [EDI+04],AX
0177:BFF76A8D  MOV      AH,2C
0177:BFF76A8F  CALL      BFF712B9
0177:BFF76A94  MOV      [EDI+08],CH
0177:BFF76A97  MOV      [EDI+0A],CL
0177:BFF76A9A  MOV      [EDI+0C],DH
0177:BFF76A9D  SUB      DH,DH
0177:BFF76A9F  IMUL      DX,DX,0A
0177:BFF76AA3  MOV      [EDI+0E],DX
0177:BFF76AA7  PUSH      DWORD PTR [BFFCAE10]
0177:BFF76AAD  CALL      KERNEL32!ORD_0062
0177:BFF76AB2  POP      EBX
0177:BFF76AB3  POP      EDI
0177:BFF76AB4  LEAVE
0177:BFF76AB5  RET      0004
0177:00401FF1  MOV      ECX,[EBP+08]
0177:00401FF4  MOV      DL,[EBP-0A]
0177:00401FF7  MOV      [ECX],DL
0177:00401FF9  MOV      EAX,[EBP+08]
0177:00401FFC  MOV      CL,[EBP-0E]
0177:00401FFF  MOV      [EAX+01],CL
0177:00402002  MOV      EDX,[EBP+08]
0177:00402005  MOV      DWORD PTR [EDX+04],00000000
0177:0040200C  MOV      EAX,[EBP-10]
0177:0040200F  AND      EAX,0000FFFF
0177:00402014  MOV      ECX,[EBP+08]
0177:00402017  MOV      [ECX+04],EAX
0177:0040201A  MOV      ESP,EBP
0177:0040201C  POP      EBP
0177:0040201D  RET      0004
0177:00402B31  MOV      ECX,[EBP-04]
0177:00402B34  PUSH      ECX
0177:00402B35  MOV      EDX,[EBP-08]
0177:00402B38  PUSH      EDX
0177:00402B39  MOV      ECX,[EBP-0C]
0177:00402B3C  CALL      00402A66
0177:00402B41  MOV      ESP,EBP
0177:00402B43  POP      EBP
0177:00402B44  RET
0177:004322B1  MOV      [EBP-18],EAX  ---> 提取今天日期
0177:004322B4  MOV      EAX,[EBP-0128] ---> 提取安装日期
0177:004322BA  ADD      EAX,1E        ---> 安装日期加30 
0177:004322BD  CMP      [EBP-18],EAX  ---> 比较,看过期没有。
0177:004322C0  JA        004322D1      ---> 大于则跳。跳则过期。

从这两个文件我们可以发现从
0177:004322C0  JA        004322D1
处,两个文件的流程开始不同。所以,这个jump 就是对比的关键。


II. 修改文件。

11. 用 Hiew 载入 minicom.exe

12. 按 F4 选择 Decode

13. 按 F5  , 输入偏址: 000322C0 然后回车。

14. 按 F3, 将 77 改为 74.

15. 修改好后,F9存盘(按回车后到下一行,再按ESC让对话框消失,然后按F9)。


  感谢看雪大哥给我的提示,使我的 bpx getsystemtime 能拦截。:)