- 标题:星际争霸1.08版免CD分析
- 作者:龍之冰点
- 来自:本站原创
- 更新:2006年10月18日
- 一个执著的星际迷玩不了星际的心情谁能了解?
- 光盘验证。
- 祭出宝刀OD!
- 载入StarCraft.exe,停在004CFA90。
- Alt+E打开可执行模块,主程序StarCraf上Crtl+N打开名称,看一下,都有些什么?
- 名称位于 StarCraf|地址=004ED000|类型=输入|名称=ADVAPI32.RegOpenKeyExA
- 读注册表干什么?嘿嘿,对头,先跟了再说。
- 来到77DA761B > 8BFF mov edi, edi
- 恩,就F2断在这里好了。
- F9运行,哈,断下来了。
- 看一下EDX:0012FC8C,到这个堆栈地址看一下:SOFTWARE\Blizzard Entertainment\Starcraft
- 继续不断F9,看看都读了哪些值,注意寄存器变化EDI:004FBD58(StarCD)!
- CD?这个值有什么用呢?如果没用为什么要读入?联想一下,该不会是光盘路径吧?
- 执行到返回,返回,返回。。。。
- 00468C05 |. 68 58BD4F00 push 004FBD58 ; ASCII "StarCD" //看到了吧
00468C0A |. 68 A4564F00 push 004F56A4 ; ASCII "Starcraft"
00468C0F |. E8 32500600 call <jmp.&Storm.#422>
00468C14 |. 85C0 test eax, eax //到了这里
00468C16 74 62 je short 00468C7A
//省略若干代码
- 00468C86 |. 52 push edx ; /Buffer
00468C87 |. 68 04010000 push 104 ; |BufSize = 104 (260.)
00468C8C |. FF15 ECD14E00 call dword ptr [<&KERNEL32.Get>; \GetLogicalDriveStringsA
- //
判断系统中存在哪些逻辑驱动器字母,要光驱验证了嘛!
- //省略若干代码
00468CDC |> 56 |push esi ; /RootPathName
00468CDD |. FF15 08D24E00 |call dword ptr [<&KERNEL32.Ge>; \GetDriveTypeA
- //
判断一个磁盘驱动器的类型
00468CE3 |. 83F8 05 |cmp eax, 5
00468CE6 |. 75 76 |jnz short 00468D5E
- //省略若干代码
00468D69 |> 85C0 test eax, eax
00468D6B |. A3 CC5E6500 mov dword ptr [655ECC], eax
00468D70 75 21 jnz short 00468D93 //关键跳在这里啦!
- 中间一些不重要的代码删除了以后,整个过程就清楚了,程序首先读入注册表值HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\Starcraft[StarCD],然后遍历所有磁盘,最后读取光盘的内容,默认为光盘路径为StarCD的值(我的为E:\Hhacker Team\download\starcraft),哈,只要把StarCD的值改为星际安装目录就可以了。
- 那直接修改00468D70这里可不可以呢?可以运行,但程序在读取光盘文件(压根就没光盘)时会出错,所以不可以哦!
- 又可以玩星际了,闪人先!