• 标 题:“光驱”修理手记
  • 作 者:woLONGwxd
  • 时 间:  2001-1-17
  • 链 接:http://bbs.pediy.com

“光驱”修理手记

    前奏......

  “没搞错吧!这不是硬件DIY,这是看雪学苑,众多CRACKER交流心得的乐园,去!”
    “哎,别。我这修理的是虚拟光驱,评估版解除21天的限制,......”
    “呀,失敬,失敬,欢迎,热烈欢迎”

    对,今天就拿虚拟光驱2000开刀。从网上下载了一个最新版本,安装时提醒这是评估版,只允许使用21天。重启后运行mgr.exe,弹出版本信息对话框,确认后弹出虚拟光驱画面,稍候片刻,进入虚拟光驱总管窗口。
    关闭mgr.exe,修改系统日期到一个月之后,运行mgr.exe,弹出过期对话框,确认后弹出订购对话框,确认后程序退出。呼出Softice,下断
    bpx messageboxa
运行mgr.exe被断,按几次F12回程序代码区

:00409ED4 8D1439              lea edx, dword ptr [ecx+edi]
:00409ED7 3BC2                cmp eax, edx
:00409ED9 0F8696000000        jbe 00409f75
:00409EDA 8B3DE4304200        mov edi,[Kernel32!WriteProfileStringA]
:00409EE5 68F4334300          push 004333F4  ->"1"
:00409EEA 6888354300          push 00433588 ->"iDvdis
:00409EEF 6880354300          push 00433580 ->"intl"
:00409EF4 FFD7                call edi
:00409EF6 687C354300          push 0043357C ->"0"
:00409EFB 6870354300          push 00433570 ->"iMediaxDev"
:00409F00 6880354300          push 00433580 ->"intl"
:00409F05 FFD7                call edi
:00409F07 6AFF                push FFFFFFFF
:00409F09 6A10                push 00000010
:00409F0B 686D1B0000          push 00001B6D
:00409F10 E839500100          call 0041EF4E  <-弹出过期对话框
:00409F15 E856E8FFFF          call 00408770  <-返回此处,弹出订购对话框
    分析这段代码,若在:00409ED9处不跳,则往win.ini里intl小节iDvdis项和iMediaxDev项分别写入1和0,弹出过期对话框和订购对话框,退出运行。因此,在:00409ED9处必须要跳。eax, edx的值一时也弄不清是怎么算得的,
向上看,还有十几个短跳,头都大了~!休息,休息一会儿。仔细观察,前面还有两个ret,对应
:00409C05 jz 00409C6E

:00409E72 jz 00409ED4
一定要跳,另外除了:00409E57 jz 00409FFFF,其它跳转似乎都不影响程序执行到:00409ED9处。而试着从:00409E57处跳到:00409FFFF处执行,好象也没什么问题。不管那么多了,把jz 00409C6E、jz 00409ED4和jbe 00409f75都改为无条件跳转即可解除日期限制”。

下一步要去掉讨厌的版本信息和虚拟光驱画面了,向下看
:0040A084 3BC6                cmp eax, esi
:0040A086 743A                je 0040A0C2  <-跳过版本信息对话框
:0040A088 8B3DE0304200        mov edi, dword ptr [004230E0]                                                        ^KERNEL32.GetProfileIntA
:0040A08E 6A00                push 00000000
:0040A090 6888354300          push 00433588 ->"iDvdis"
:0040A095 6880354300          push 00433580 ->"intl"
:0040A09A FFD7                call edi
:0040A09C 6A00                push 00000000
:0040A09E 6870354300          push 00433570 ->"iMediaxDev"
:0040A0A3 6880354300          push 00433580 ->"intl"
:0040A0A8 8BF0                mov esi, eax
:0040A0AA FFD7                call edi
:0040A0AC 85F6                test esi, esi
:0040A0AE 7547                jne 0040A0F7  <-iDvdis不等于0则跳,过期
:0040A0B0 83F801              cmp eax, 00000001
:0040A0B3 7542                jne 0040A0F7  <iMediaxDev不等于1则跳,过期
:0040A0B5 6AFF                push FFFFFFFF
:0040A0B7 56                  push esi
:0040A0B8 68C8010000          push 000001C8
:0040A0BD E88C4E0100          call 0041EF4E  <-版本信息对话框
:0040A0C2 3975E4              cmp dword ptr [ebp-1C], esi
:0040A0C5 7471                je 0040A138  <-跳过虚拟光驱画面
    由上可知,将je 0040A0C2和je 0040A138改为无条件跳转即可,或者直接把
je 0040A0C2改为jmp 0040A138。
    以上修改可用hiew.exe或winhex.exe等工具,不再叙述。
    更进一步,还可以打造自己的品牌,利用exescope等资源修改工具,可以隐藏“订购”菜单项,修改“关于”对话框内容为正版字样,...
    需要注意的是,光驱2000过期后将拒绝重装,这是只需把win.ini里的iDvdis改为0就行了。
   

--### 严正声名 ###--
    以上内容只能用于经验交流领域,严禁商业用途,维护正版利益!
    版权所有,请保障文章的完整性!

woLONGwxd  2001-1-17
E-mail:wxdny@263.net