天下网吧 >> 网吧天地 >> 网吧技术 >> 网吧软件 >> 正文

偷天换日——光盘版游戏完美转换硬盘版

小提示
  API是程序调用系统功能的函数接口,比如程序要检测光盘,就必须使用GetDriveType函数来获得盘符的设备类型。因此找到GetDriveType函数在程序中的调用位置,就一定能在附近找到光盘检测代码。

  第三步:在W32DASM主界面的代码显示框中就以高亮方式选中了GetDriveType函数的调用位置,将代码框稍微往下拉一点就能看到光盘检测代码了(见图2)。代码框最左侧的蓝色数字是代码的位置,如本文中在zweipet.exe中找到GetDriveType的位置为0048843,而光盘检测代码的位置在004088BD处。以下是代码简要注释:


图2:提示“插入光盘”的光盘检测代码


:004088BD  mov eax,dword ptr[esp+14]
:004088C1  test eax, eax  //检查是否有光盘
:004088C3  jnz 004088DB  //有光盘则跳转到004088DB位置(即游戏开始位置),没有光盘则不跳转
:004088C5  push 00000000
:004088C7  push 00428934
:004088CC  push 00428919
:004088D1  push 00000000
:004088D3  call dword ptr[004233EC] //弹出一个提示窗口“请插入××物语的游戏光盘”
:004088D9  jmp 00408933  //程序转向代码结束部分,也就是强制退出游戏
(见图3)


图3:004088D3位置处的代码执行时会弹出此提示框


  第三步:可以看到在004088C3处决定了程序走向(是继续下一行代码还是跳转到004088DB处开始游戏),如果能让程序不加判断直接跳转到004088DB,就等于跳过了光盘检测。关闭W32DASM,打开刚才下载的RTA,选择菜单命令“File→Open File”(文件→打开文件),同样也是打开zweipet.exe。RTA界面立即显示出zweipet.exe的汇编程序代码。最左侧的红色数字为代码位置,边上蓝色十六进制数为该行代码的机器码,右侧黄色文字则为汇编代码。找到要修改的位置004088C3,可这句汇编代码为“JNZ SHORT 4088DB”,将其修改为“JMP SHORT 4088DB”(不含引号,机器码为EB16)。
(图4 修改前)


图4 修改前


图5 修改后


 

本文来源:《电脑爱好者》 作者:狂ρκ

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。文章是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 Email:support@txwb.com,系统开号,技术支持,服务联系微信:_WX_1_本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行