• 标 题:PeterChen and [FCG]member,我交作业了:《Cool Tray 2001 (2.0.0) 爆破札记》 (5千字)
  • 作 者:paulyoung
  • 时 间:2001-7-21 20:47:20
  • 链 接:http://bbs.pediy.com

Cool Tray 2001 (2.0.0) 爆破札记

  特别感谢TAE![CCG]对我的大力帮助,使我顺利完成此次破解!

作  者:PaulYoung[FCG,BCG]
时  间:2001年7月21日
软件简介:1、从1901年至2060年共计160年的中国农历历法,精确、方便,同时弥补了 Windows 时钟没有农历和星期显示;2、直观精确的键盘按键次数统计,操作异常方便;3、记录鼠标在屏幕上移动的距离,可以选择八种距离单位,击键次数严格区分左键、右键、单击、双击;4、在 Windows 任务栏状态区中提示物理内存、CPU 使用率图形显示,防止系统崩溃;5、即时、整点汉语语音报时,包含公历、农历日期及时间,小巧实用的闹钟,可以方便提醒您时间;6、Windows 任务栏状态区中动画显示 CD-ROM 中是否有光碟,可以通过右键菜单或双击图标开关 CD-ROM;软件对 CPU 的使用率低于百分之一,并且操作使用绝对直观方便!
下  载:http://mengliao.126.com
功能限制:未注册版在切换功能时,有提示窗口,而且时间非常的长,令人厌烦。
破解工具:FILEINFO V2.43A,CASPR 1.100,W32DASM V8.93,HIEW V6.45,TRW2000 V1.03
_________________________________________________________________________________________________

    一、用FILEINFO侦察,发现其用ASPROTECT 1.1加壳,用CASPR脱壳。该软件防SOFT-ICE,反汇编找到出错语句,往上看……

:004B236E E879FBFFFF              call 004B1EEC //NOP掉此call
:004B2373 84C0                    test al, al
:004B2375 7457                    je 004B23CE
.
.
.
* Possible StringData Ref from Data Obj ->"信息:

SoftICE 正在运行!

请退出 "
                                        ->"Debug 模式后,再运行本软件。"

  二、脱壳后的程序运行出错,估计它有自校验。用TRW 2000 LOAD此软件,F10直到……

:004B2402 E875BDF9FF              call 0044E17C //此处出错,F8跟入……再F10单步跟踪……直到
:0044E1AD FF572C                  call [edi+2C] //此处出错,F8跟入……再F10单步跟踪……直到
:004472BC E87BC0FBFF              call 0040333C //此处出错,F8跟入……再F10单步跟踪……直到

:004A95A1 8B45FC                  mov eax, dword ptr [ebp-04]
:004A95A4 3B45F8                  cmp eax, dword ptr [ebp-08]
:004A95A7 740C                    je 004A95B5      //改为750C

* Possible StringData Ref from Data Obj ->"002FAE36"  //出错信息
                                  |
:004A95A9 6858964A00              push 004A9658
:004A95AE 6A00                    push 00000000
:004A95B0 E837D1F5FF              call 004066EC

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004A95A7(C)
|
:004A95B5 33C0                    xor eax, eax

自校验问题解决。

三、在软件“关于”处,有“未注册版本,请您注册!”的信息,在“串式参考”处找到这条信息,来到……

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004B1A68(C), :004B1A6D(C), :004B1A78(C), :004B1A7D(C)        //此4处调用,进入……
|

* Possible StringData Ref from Data Obj ->"未注册版本,请您注册!"
                                  |
:004B1ACF B83C1C4B00              mov eax, 004B1C3C
:004B1AD4 894728                  mov dword ptr [edi+28], eax

来到……

:004B1A62 8B55E4                  mov edx, dword ptr [ebp-1C]
:004B1A65 3B55D4                  cmp edx, dword ptr [ebp-2C]
:004B1A68 7565                    jne 004B1ACF  //改为7465
:004B1A6A 3B45D0                  cmp eax, dword ptr [ebp-30]
:004B1A6D 7560                    jne 004B1ACF  //改为7460
:004B1A6F 8B45D8                  mov eax, dword ptr [ebp-28]
:004B1A72 8B55DC                  mov edx, dword ptr [ebp-24]
:004B1A75 3B55CC                  cmp edx, dword ptr [ebp-34]
:004B1A78 7555                    jne 004B1ACF  //改为7455
:004B1A7A 3B45C8                  cmp eax, dword ptr [ebp-38]
:004B1A7D 7550                    jne 004B1ACF  //改为7450
:004B1A7F 8D55E8                  lea edx, dword ptr [ebp-18]

现在在“关于”处已经显示为注册版本了,注册信息放在注册表中的……

REGEDIT4

[HKEY_CURRENT_USER\Software\Mengliao\Cool Tray\Ver 2001 (2.0.0)\Registration]
"RegName"="用户名"
"RegCompany"="公司"
"RegSerial"="注册码"

你爱怎么填就怎么填吧。

四、但现在的程序在切换功能时,还有提示窗口。
此时在 TRW2000 下BPX HMEMCPY ,再切换功能,立即中断,按F12直到出现提示窗口,注册提示窗口消失时,再次中断于……

:004A98F2 C3                      ret

往上看……

:004A9893 8B542404                mov edx, dword ptr [esp+04]
:004A9897 3B542414                cmp edx, dword ptr [esp+14]
:004A989B 751A                    jne 004A98B7    //改为741A
:004A989D 3B442410                cmp eax, dword ptr [esp+10]
:004A98A1 7514                    jne 004A98B7    //改为7414
:004A98A3 8B442408                mov eax, dword ptr [esp+08]
:004A98A7 8B54240C                mov edx, dword ptr [esp+0C]
:004A98AB 3B54241C                cmp edx, dword ptr [esp+1C]
:004A98AF 7504                    jne 004A98B5
:004A98B1 3B442418                cmp eax, dword ptr [esp+18]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004A98AF(C)
|
:004A98B5 7434                    je 004A98EB    //改为7534

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004A989B(C), :004A98A1(C)
|
:004A98B7 80BB2508000000          cmp byte ptr [ebx+00000825], 00
:004A98BE 752B                    jne 004A98EB
:004A98C0 8B0D98204D00            mov ecx, dword ptr [004D2098]
:004A98C6 8B09                    mov ecx, dword ptr [ecx]
:004A98C8 B201                    mov dl, 01

_________________________________________________________________________________________________

  终于彻底搞定了!PeterChen,最近实在太忙了,这篇文章水平虽然不高,但也算是对Free Cracking Group 的一点小小心意吧。