解除或自动关闭幻想游戏捆绑的c8程序

c8程序的捆绑方法

"隔离幻想游戏的木马广告"介绍了c8程序的基本情况,不知道c8为何物的朋友可以参阅这篇文章。当时,我为了在使用金山毒霸的同时继续玩幻想游戏而写了一个补丁包,这个补丁包既帮助c8程序躲开毒霸的查杀,也限制它访问网络。

这两天,本来想翻译《仙女婆婆和童话王国》这个游戏给家里人玩,因此仔细看了看捆绑c8的游戏程序,发现c8程序的捆绑方法非常简单。设原始游戏的主程序名是game.exe,我下载的几个幻想游戏的捆绑方法都是这样的:

  1. 将game.exe加壳后更名为c8.dll
  2. 将c8程序的主程序更名为game.exe
  3. 用户在运行名为game.exe(实际是c8程序)时,c8程序获得执行权
  4. c8程序在执行监视功能的同时,装载运行c8.dll,这样就运行了原始游戏

我们在运行游戏后,可以在进程管理器中看到两个进程:游戏程序名(例如TileQuest.exe)和c8.dll。其中具有“游戏程序名”的进程其实是c8程序,c8.dll才是真正的游戏进程。这时我们只要结束具有“游戏程序名”的进程,就可以专心玩我们的游戏了。

解除幻想游戏捆绑的c8程序

根据上面的介绍,我们可以删除掉游戏目录中的主程序(例如TileQuest.exe)以及所有c8相关文件(包括Captive8目录),然后将c8.dll改名为主程序名(例如TileQuest.exe),这样就得到一个干净的游戏程序。我测试过我下载的几个程序,这样处理后都可以正常运行。

将c8.dll更名后得到的游戏程序和原始游戏程序的区别仅是加过壳。所谓加壳就是用壳程序包装原始程序,将原程序压缩、加密后作为壳程序的数据。运行时壳程序先执行相反操作得到原始代码,再执行原始代码。

我们可以将c8.dll脱壳,得到原始的游戏程序。例如《仙女婆婆和童话王国》的c8.dll是用Aspack2.12加壳,只要用工具AspackDie就可以直接脱壳,得到游戏程序。再将游戏中所有c8相关文件全部删除,将真正游戏程序的名字恢复到fgt_o.exe,就得到一个干净的游戏。

自动关闭c8程序

起初,我没有注意到将c8.dll直接改名就可以运行。为了自动关闭c8程序,我特意写了一个叫作kill_c8的小程序。使用kill_c8可以启动假冒游戏程序的c8程序,kill_c8在等待c8程序将真正的游戏程序解壳运行后,就立刻结束c8程序进程。我是这样使用kill_c8的:

  1. 将kill_c8.exe复制到游戏目录,例如“C:\Program Files\幻想游戏系列\仙境探秘”
  2. 看看游戏程序名是什么,例如“仙境探秘”的主程序是TileQuest.exe
  3. 将kill_c8.exe更名为kill_TileQuest.exe,即用"kill_游戏程序名"作为kill_c8程序的名字
  4. 上面这个步骤很重要,我用这个方式告诉kill_c8程序启动哪个进程
  5. 为kill_c8程序(例如kill_TileQuest.exe)建立桌面快捷方式
  6. 将桌面快捷方式的名字改为游戏名(例如“仙境探秘”)
  7. 将桌面快捷方式的图标改为原游戏图标(右键->属性->更改图标,选择游戏程序,例如TileQuest.exe)

有类似需求的朋友可以下载kill_c8,按上述方法使用:

下载kill_c8执行程序

熟悉编程的朋友可以下载这个程序的源代码。

下载kill_c8的源代码

如果将c8.dll直接改名就可以运行,那么kill_c8和"隔离幻想游戏的木马广告"中介绍的c8补丁包就都没有什么用了。不过,kill_c8程序对学习编程的朋友可能有一些参考价值,这个100多行的程序较好地演示了如何创建进程、枚举进程和终止进程。

后记

幻想改进了捆绑的方式,我写了一个解绑机。不熟悉电脑操作的朋友可以用解绑机执行解绑文件为游戏解绑;熟悉电脑操作的朋友可以自己制作解绑文件,并发布解绑文件与其他朋友共享。详见“c8解绑机使用说明”

你可能感兴趣的:(游戏,编程,金山)