题目:爆破虚拟光碟(中文版) V6.2 for 95/98/ME/NT/2000/XP [高手勿读]
软件名称:虚拟光碟(中文版) V6.2 for 95/98/ME/NT/2000/XP (n[n<30]天试用)
软件功能:
1. 与 Windows XP 相容
2. 支持多种光碟格式:
CD-ROM÷CD-Audio÷DVD-ROM(data mode)(Windows98/ME)÷Video-CD÷Photo-CD÷MixedMode-CD
3. 更人性化之使用界面:
可用拖拉方式(Drag-and-Drop)来加入虚拟光盘片(VCD)
可用拖拉方式(Drag-and-Drop)来插入/退出虚拟光盘片(VCD)
4. Customized CD-ROM支援高达1GM Byte:
文件总数: 最多32767个文件
目录层数: 不可超过15层(参考ISO9660规格)
路径长度: 不可超过128 Byte(参考ISO9660规格)
爆破手 :QduWg
级 别:初级菜菜鸟级
爆破日期:2005年12月20日
爆破工具:Trw2000 1.22,W32DASM8.93,FI,UltraEdit
破解目的:去掉2个NAG 级别:易
说 明:本人是初级菜鸟,初学乍练,肯定存在很多不足,希望高手指点。目前还是在CRACKER 的殿堂门口徘徊,正在不懈努力登堂入室。故事的发生是这样的,今天想用虚拟光驱软件制做MP3光盘镜象,可以省去多少光驱磨损啊。结果只可以试用3个周,真是无可奈何,花了半个下午把它搞定(菜鸟水平嘛!),顺便用了半个小时把过程总结一下,目的只有一个---促进技术交流。如有疏漏之处,请各位大侠不吝赐教! 言归正传!
首先安装虚拟光驱软件(废话^_^),调整系统日期使其过期,运行虚拟光驱出现提示窗口,第一个NAG窗口内容是“你现在使用的是虚拟光驱评估版,不是正式版。。。。”。如果你按了确定后立即出现第二个窗口,内容是“评估期限已经超过,请购买正式版安装后继续使用。。。。”。好了现在让我们上路吧!
启动TRW,选择“文件”-->“命令”-->“捕获新线程”,然后运行虚拟光驱程序Mgr.exe,被TRW断下,按F10跟踪直到出现第一个错误提示,记下地址。按F8跟入,如果没有特别说明,在跟入后一直按F10键即可,为了节省篇幅,中间略去一些代码(略去的代码都是按F10执行即可)。
0167:0043C4C3 00558B ADD [EBP-75],DL
0167:0043C4C6 EC IN AL,DX
0167:0043C4C7 6AFF PUSH BYTE -01
。
。略去N行代码
。
0167:0043C5E8 50 PUSH EAX
0167:0043C5E9 56 PUSH ESI
0167:0043C5EA 53 PUSH EBX
0167:0043C5EB 53 PUSH EBX
0167:0043C5EC FF15C4304400 CALL `KERNEL32!GetModuleHandleA`
0167:0043C5F2 50 PUSH EAX
0167:0043C5F3 E838040000 CALL 0043CA30 // 此处按F8跟入
----------------------------------------------------
0167:0043CA30 FF742410 PUSH DWORD [ESP+10]
0167:0043CA34 FF742410 PUSH DWORD [ESP+10]
0167:0043CA38 FF742410 PUSH DWORD [ESP+10]
0167:0043CA3C FF742410 PUSH DWORD [ESP+10]
0167:0043CA40 E843000000 CALL `MFC42!ord_00000628` // 此处按F10就出现NAG,所以需要按F8跟入
0167:0043CA45 C21000 RET 10
----------------------------------------------------
0167:5F40B4AC 53 PUSH EBX
0167:5F40B4AD 56 PUSH ESI
。
。略去N行代码
。
0167:5F40B4E8 85C0 TEST EAX,EAX
0167:5F40B4EA 7414 JZ 5F40B500
0167:5F40B4EC 8B06 MOV EAX,[ESI]
0167:5F40B4EE 8BCE MOV ECX,ESI
0167:5F40B4F0 FF5058 CALL NEAR [EAX+58] //此处按F8 跟入
----------------------------------------------------
0167:00416830 6AFF PUSH BYTE -01
0167:00416832 6872F14300 PUSH DWORD 0043F172
0167:00416837 64A100000000 MOV EAX,[FS:00]
0167:0041683D 50 PUSH EAX
。
。略去N行代码
。
0167:0041689D 6801000080 PUSH DWORD 80000001
0167:004168A2 68C4264500 PUSH DWORD 004526C4
0167:004168A7 C7865A1400000100MOV DWORD [ESI+145A],01
0167:004168B1 E8AA5E0200 CALL 0043C760
0167:004168B6 83C408 ADD ESP,BYTE +08
0167:004168B9 8BCE MOV ECX,ESI
0167:004168BB E810020000 CALL 00416AD0 //此处按F8 跟入
----------------------------------------------------
0167:00416AD0 6AFF PUSH BYTE -01
0167:00416AD2 68FCF24300 PUSH DWORD 0043F2FC
0167:00416AD7 64A100000000 MOV EAX,[FS:00]
0167:00416ADD 50 PUSH EAX
0167:00416ADE 64892500000000 MOV [FS:00],ESP
0167:00416AE5 81EC3C020000 SUB ESP,023C
。
。略去N行代码
。
0167:00416EAC C644244C00 MOV BYTE [ESP+4C],00
0167:00416EB1 8D44244C LEA EAX,[ESP+4C]
0167:00416EB5 8D4C241C LEA ECX,[ESP+1C]
0167:00416EB9 50 PUSH EAX
0167:00416EBA E81B4A0200 CALL `MFC42!ord_0000035C`
0167:00416EBF 8D4C2444 LEA ECX,[ESP+44]
0167:00416EC3 83CEFF OR ESI,BYTE -01
0167:00416EC6 51 PUSH ECX
0167:00416EC7 8BCD MOV ECX,EBP
0167:00416EC9 89742448 MOV [ESP+48],ESI
0167:00416EC9 89742448 MOV [ESP+48],ESI
0167:00416ECD E81E110000 CALL 00417FF0
0167:00416ED2 85C0 TEST EAX,EAX //此处按F8 跟入
------------------------------------
0167:00417FF0 64A100000000 MOV EAX,[FS:00]
0167:00417FF6 6AFF PUSH BYTE -01
0167:00417FF8 6850F44300 PUSH DWORD 0043F450
0167:00417FFD 50 PUSH EAX
。
。略去N行代码
。
0167:004180CE E967010000 JMP 0041823A
0167:004180D3 8B442414 MOV EAX,[ESP+14]
0167:004180D7 2500FF0000 AND EAX,FF00
0167:004180DC 3D00990000 CMP EAX,9900
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004180E1(C)
|
:004180F6 85F6 test esi, esi
:004180F8 7406 je 00418100 //修改此处可以跳过后面2个CALL
:004180FA C70600000000 mov dword ptr [esi], 00000000
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004180F8(C)
|
:00418100 6A30 push 00000030
:00418102 6A00 push 00000000
* Possible Reference to String Resource ID=00457: "?(@(?[焐?0H
/cH,
挲(?"琳0(
?\c?(
?b,l?枫H" //全是乱码,因为W32DASM无法显示中文,我没有找到中文版的W32DASM。此处是对话框内容。
|
:00418104 68C9010000 push 000001C9
* Reference To: MFC42.Ordinal:04AF, Ord:04AFh
|
:00418109 E808380200 Call 0043B916
:0041810E 6A00 push 00000000
* Possible StringData Ref from Data Obj ->"iDvdis"
|
:00418110 68A82D4500 push 00452DA8
* Possible StringData Ref from Data Obj ->"intl"
|
:00418115 68A02D4500 push 00452DA0
* Reference To: KERNEL32.GetProfileIntA, Ord:0147h
|
:0041811A FF1594304400 Call dword ptr [00443094]
:00418120 85C0 test eax, eax
:00418122 7417 je 0041813B
:00418124 55 push ebp
:00418125 6A00 push 00000000
* Possible Reference to String Resource ID=00454: ",[焐?,赫0HU0P??它枫H,????(
M/?(?咴
(" //全是乱码,因为W32DASM无法显示中文,我没有找到中文版的W32DASM。此处是对话框内容。
|
:00418127 68C6010000 push 000001C6
* Reference To: MFC42.Ordinal:04AF, Ord:04AFh
|
:0041812C E8E5370200 Call 0043B916
:00418131 B801000000 mov eax, 00000001 //此处必须让EAX=0,否则无法启动
:00418136 E9FF000000 jmp 0041823A
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00418122(C)
|
:0041813B A1E03A4500 mov eax, dword ptr [00453AE0]
-----------------------------
总结:
(1)把004180F8 7406 JZ 00418100 改为JMP 00418131
(2)把00418131 B801000000 MOV EAX,01改为MOV EAX, 0
分别是EB 37,B800000000
打开UltraEdit,按照W32ASM给出的相关指令的RA地址,修改后保存即可。一瞬间,这里的黎明静悄悄!!
欢迎批评指正!!
我第一次写破解教程,感到了大侠们写教程的辛苦,感谢大侠们的教诲!
qduwg,2005年12月20日
qduwg@163.com
顺便问一个问题:我从内存DUMP的程序文本怎么保持各列对齐啊?我打开保存的文件发现一片混乱,需要我逐行调整对齐,实在累人。谁有高见?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课