【破文标题】Free Internet Window Washer 2.1简单分析
【破文作者】tianxj
【作者邮箱】tianxj_2007@126.com
【作者主页】WwW.ChiNaPYG.CoM
【破解工具】PEiD,OD
【破解平台】Windows XP
【软件名称】Free Internet Window Washer 2.1
【软件大小】887KB
【软件类别】国外软件/卸载工具  
【软件授权】共享版 
【软件语言】英文
【更新时间】2007-8-3
【原版下载】自己找一下
【保护方式】注册码
【软件简介】
Free Internet Window Washer 是一款能够帮助用户清除计算机使用记录的免费软件,用户在浏览网页后可能会在缓存盘与 cookie 中留下大量的重要信息,这些对用户来说都有着极大的威胁,因此,你可以通过 Free Internet Window Washer 来轻松消除这些信息,以保障你的个人安全。
除了浏览缓存文件、 cookie 的清除外, Free Internet Window Washer 还能够清除使用者的浏览历史、输入网址、打开文件...等记录,且连 Windows Media Player 的播放记录或是压缩软件的开文件记录等,也全都包含在它的清除之列喔。有了 Free Internet Window Washer 的帮忙,你就可以做到使用计算机不留痕迹。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
"Registration is not valid, please try again."
**************************************************************
二、用PEiD对Clearpch.exe查壳,为 Borland Delphi 6.0 - 7.0
**************************************************************
三、运行OD,打开Clearpch.exe,用DeDe查找按钮事件
==============================================================

代码:
004CE5E8  /.  55            PUSH EBP
004CE5E9  |.  8BEC          MOV EBP,ESP
004CE5EB  |.  33C9          XOR ECX,ECX
004CE5ED  |.  51            PUSH ECX
004CE5EE  |.  51            PUSH ECX
004CE5EF  |.  51            PUSH ECX
004CE5F0  |.  51            PUSH ECX
004CE5F1  |.  51            PUSH ECX
004CE5F2  |.  53            PUSH EBX
004CE5F3  |.  8BD8          MOV EBX,EAX
004CE5F5  |.  33C0          XOR EAX,EAX
004CE5F7  |.  55            PUSH EBP
004CE5F8  |.  68 CEE64C00   PUSH Clearpch.004CE6CE
004CE5FD  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
004CE600  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
004CE603  |.  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]
004CE606  |.  8B83 08030000 MOV EAX,DWORD PTR DS:[EBX+308]
004CE60C  |.  E8 4FF7F8FF   CALL Clearpch.0045DD60
004CE611  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //试练码
004CE614  |.  E8 33260000   CALL Clearpch.004D0C4C                   ;  //关键CALL
004CE619  |.  84C0          TEST AL,AL
004CE61B  |.  75 3B         JNZ SHORT Clearpch.004CE658              ;  //关键跳转
004CE61D  |.  6A 10         PUSH 10
004CE61F  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
004CE622  |.  A1 906E4D00   MOV EAX,DWORD PTR DS:[4D6E90]
004CE627  |.  E8 B882F3FF   CALL Clearpch.004068E4
004CE62C  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
004CE62F  |.  E8 5066F3FF   CALL Clearpch.00404C84
004CE634  |.  50            PUSH EAX
004CE635  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
004CE638  |.  A1 146E4D00   MOV EAX,DWORD PTR DS:[4D6E14]
004CE63D  |.  E8 A282F3FF   CALL Clearpch.004068E4
004CE642  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
004CE645  |.  E8 3A66F3FF   CALL Clearpch.00404C84
004CE64A  |.  50            PUSH EAX                                 ; |Text
004CE64B  |.  E8 B08EF3FF   CALL <JMP.&user32.GetActiveWindow>       ; |[GetActiveWindow
004CE650  |.  50            PUSH EAX                                 ; |hOwner
004CE651  |.  E8 DA90F3FF   CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
004CE656  |.  EB 46         JMP SHORT Clearpch.004CE69E
004CE658  |>  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
004CE65B  |.  8B83 04030000 MOV EAX,DWORD PTR DS:[EBX+304]
004CE661  |.  E8 FAF6F8FF   CALL Clearpch.0045DD60
004CE666  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]
004CE669  |.  A1 34694D00   MOV EAX,DWORD PTR DS:[4D6934]
004CE66E  |.  83C0 10       ADD EAX,10
004CE671  |.  E8 A261F3FF   CALL Clearpch.00404818
004CE676  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
004CE679  |.  8B83 08030000 MOV EAX,DWORD PTR DS:[EBX+308]
004CE67F  |.  E8 DCF6F8FF   CALL Clearpch.0045DD60
004CE684  |.  8B55 EC       MOV EDX,DWORD PTR SS:[EBP-14]
004CE687  |.  A1 34694D00   MOV EAX,DWORD PTR DS:[4D6934]
004CE68C  |.  83C0 14       ADD EAX,14
004CE68F  |.  E8 8461F3FF   CALL Clearpch.00404818
004CE694  |.  C783 4C020000>MOV DWORD PTR DS:[EBX+24C],1
004CE69E  |>  33C0          XOR EAX,EAX
004CE6A0  |.  5A            POP EDX
004CE6A1  |.  59            POP ECX
004CE6A2  |.  59            POP ECX
004CE6A3  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
004CE6A6  |.  68 D5E64C00   PUSH Clearpch.004CE6D5
004CE6AB  |>  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
004CE6AE  |.  BA 02000000   MOV EDX,2
004CE6B3  |.  E8 3061F3FF   CALL Clearpch.004047E8
004CE6B8  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
004CE6BB  |.  BA 02000000   MOV EDX,2
004CE6C0  |.  E8 2361F3FF   CALL Clearpch.004047E8
004CE6C5  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
004CE6C8  |.  E8 F760F3FF   CALL Clearpch.004047C4
004CE6CD  \.  C3            RETN
004CE6CE   .^ E9 515AF3FF   JMP Clearpch.00404124
004CE6D3   .^ EB D6         JMP SHORT Clearpch.004CE6AB
004CE6D5   .  5B            POP EBX
004CE6D6   .  8BE5          MOV ESP,EBP
004CE6D8   .  5D            POP EBP
004CE6D9   .  C3            RETN
==============================================================
004D0C4C  /$  55            PUSH EBP
004D0C4D  |.  8BEC          MOV EBP,ESP
004D0C4F  |.  6A 00         PUSH 0
004D0C51  |.  53            PUSH EBX
004D0C52  |.  56            PUSH ESI
004D0C53  |.  8BF0          MOV ESI,EAX
004D0C55  |.  33C0          XOR EAX,EAX
004D0C57  |.  55            PUSH EBP
004D0C58  |.  68 E80C4D00   PUSH Clearpch.004D0CE8
004D0C5D  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
004D0C60  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
004D0C63  |.  33DB          XOR EBX,EBX
004D0C65  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
004D0C68  |.  8BD6          MOV EDX,ESI
004D0C6A  |.  E8 ED3BF3FF   CALL Clearpch.0040485C
004D0C6F  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //试练码
004D0C72  |.  E8 0D3EF3FF   CALL Clearpch.00404A84
004D0C77  |.  83F8 09       CMP EAX,9
004D0C7A  |.  75 56         JNZ SHORT Clearpch.004D0CD2              ;  //试练码长度不等于9则跳
004D0C7C  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //试练码
004D0C7F  |.  33C9          XOR ECX,ECX
004D0C81  |.  8A08          MOV CL,BYTE PTR DS:[EAX]                 ;  //CL=试练码第1位ASCII值
004D0C83  |.  8BC1          MOV EAX,ECX
004D0C85  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
004D0C88  |.  0FB672 03     MOVZX ESI,BYTE PTR DS:[EDX+3]            ;  //ESI=试练码第4位ASCII值
004D0C8C  |.  03C6          ADD EAX,ESI                              ;  //EAX=EAX+ESI
004D0C8E  |.  83E8 60       SUB EAX,60                               ;  //EAX=EAX-60
004D0C91  |.  83F8 08       CMP EAX,8                                ;  //EAX与8比较
004D0C94  |.  7E 3C         JLE SHORT Clearpch.004D0CD2              ;  //小于等于则跳
004D0C96  |.  8BC1          MOV EAX,ECX                              ;  //EAX=ECX=试练码第1位ASCII值
004D0C98  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]             ;  //试练码
004D0C9B  |.  0FB652 02     MOVZX EDX,BYTE PTR DS:[EDX+2]            ;  //EDX=试练码第3位ASCII值
004D0C9F  |.  03C2          ADD EAX,EDX                              ;  //EAX=EAX+EDX
004D0CA1  |.  03C6          ADD EAX,ESI                              ;  //EAX=EAX+ESI
004D0CA3  |.  2D 90000000   SUB EAX,90                               ;  //EAX=EAX-90
004D0CA8  |.  B9 0A000000   MOV ECX,0A                               ;  //ECX=0
004D0CAD  |.  99            CDQ
004D0CAE  |.  F7F9          IDIV ECX                                 ;  //EAX/ECX,商送EAX,余送EDX
004D0CB0  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //试练码
004D0CB3  |.  0FB640 05     MOVZX EAX,BYTE PTR DS:[EAX+5]            ;  //EAX=试练码第6位ASCII值
004D0CB7  |.  83E8 30       SUB EAX,30                               ;  //EAX=EAX-30
004D0CBA  |.  3BD0          CMP EDX,EAX                              ;  //EDX与EAX比较
004D0CBC  |.  75 14         JNZ SHORT Clearpch.004D0CD2              ;  //不相等则跳
004D0CBE  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //试练码
004D0CC1  |.  8078 01 35    CMP BYTE PTR DS:[EAX+1],35               ;  //试练码第2位ASCII值与35比较
004D0CC5  |.  76 0B         JBE SHORT Clearpch.004D0CD2              ;  //小于等于则跳
004D0CC7  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //试练码
004D0CCA  |.  8078 04 33    CMP BYTE PTR DS:[EAX+4],33               ;  //试练码第5位ASCII值与33比较
004D0CCE  |.  73 02         JNB SHORT Clearpch.004D0CD2              ;  //大于等于则跳
004D0CD0  |.  B3 01         MOV BL,1
004D0CD2  |>  33C0          XOR EAX,EAX
004D0CD4  |.  5A            POP EDX
004D0CD5  |.  59            POP ECX
004D0CD6  |.  59            POP ECX
004D0CD7  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
004D0CDA  |.  68 EF0C4D00   PUSH Clearpch.004D0CEF
004D0CDF  |>  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
004D0CE2  |.  E8 DD3AF3FF   CALL Clearpch.004047C4
004D0CE7  \.  C3            RETN
004D0CE8   .^ E9 3734F3FF   JMP Clearpch.00404124
004D0CED   .^ EB F0         JMP SHORT Clearpch.004D0CDF
004D0CEF   .  8BC3          MOV EAX,EBX
004D0CF1   .  5E            POP ESI
004D0CF2   .  5B            POP EBX
004D0CF3   .  59            POP ECX
004D0CF4   .  5D            POP EBP
004D0CF5   .  C3            RETN
**************************************************************  
【破解总结】
--------------------------------------------------------------
【算法总结】
 1.注册码算法与用户名无关
 2.注册码长度必须为9位
 3.注册码第1位与第4位之和大于8
 4.注册码第1、3、4位之和取10的余数必须与第6位相等
 5.注册码第2位必须大于5
 6.注册码第5位必须小于3
--------------------------------------------------------------
【注册信息】
一组可用的注册码
用户名:(任意)
注册码:963426789
保存在options.ini
--------------------------------------------------------------
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及178911980等所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

     _/_/_/   _/   _/   _/_/_/ 
    _/   _/  _/  _/    _/       
   _/_/_/    _/_/     _/_/_/_/ 
  _/         _/      _/    _/
 _/         _/      _/_/_/ _/    tianxj