Game Res Hooking

2010-11-23 02:54 阅读(83)评论(0)

    游戏不是程序员一个人能干的活,还需要策划和美工的支持。

    策划的活,程序员可以勉强干一下,但美工可就不是每个程序员都能干的了的了(某些全才除外:)

    不过,我们是程序员,可以直接拿别人的资源为我们的游戏做测试(窃取别人的劳动成果是不合法的哦,下文仅供学习研究:)

    

    游戏资源归根到底也只是一堆由0和1组成的数据,由于某些原因,厂商发布的时候会将他们打成一个PAK包。解开这个PAK包也就获取了游戏的所有资源。

    (1)资源经过加密:由于游戏程序是实时性很高的应用,厂商不可能采用过于复杂的加密算法增加解密的时间,所以遇到像Popcap这样大牌的公司开发的游戏,直接用0xF7异或一下游戏资源,说不定就有收获了~_~

    (2)资源经过压缩,那就可以尝试着寻找常见压缩算法的特征值,如ZIP等,可以参考《揭秘数据解密的关键技术》

    (3)如果是一些知名游戏,可以在网上找一找有没有同好已经搞定了他们的资源的,或专门的资源解包器可以用,如大名鼎鼎的MultiEx Command(Quack,WOW,FF系列都有现成的解包器)

    (4)如果上面的方法都没有奏效,而你又对该游戏的PAK包及其感兴趣,还可以通过反汇编exe程序来找到解密的线索,现在一些高级反汇编工具都能很友好的将一些关键IO函数如fread,fwrite高亮表明,顺着这些函数,一条条指令跟下去,慢慢找线索吧。找到线索后,可以用高级语言重写解包模块或者干脆直接把解包的汇编代码内嵌到自己的程序中就可以解包了。

    (5)汇编程序每条都能看懂,可是一片汇编在一块就晕了,杯具的是程序居然加了壳……这样的话,可能就要费很多脑细胞了,我就属于这种人:)那试试Hook Render API的方法把,所谓Hook Render API,无非就是Hook DX或OpenGL的渲染API,将发送到显卡的渲染数据直接抓取出来,因为资源终归是要送去显卡渲染的,理论上这种方法可以破解所有游戏的资源,相应的工具有3D Ripper DX和GLXtractor,这里试了一下后者,分享如下:

    

    假设我有一个3D示例程序渲染结果如下:

    Game Res Hooking_第1张图片

   

    我希望获取他的资源,我在它的Log里发现了GLXX这样的痕迹,知道它使用了OpenGL的渲染API,那么,就可以使用GLXtractor这个软件Hook OpenGL的API了,细节这里不赘述,有兴趣的同学可以Google相关资料,这里拜一下作者:)

    软件使用截屏如下:

    Game Res Hooking_第2张图片

 

   

    红圈是你设置的截屏快捷键,这里的“屏”指的是显卡的Surface上面的数据,包括纹理,模型,Shader等等,随你设置的喜好。

    运行程序后按下设置的快捷键,资源就会被提取到相应文件夹下,我这里只提取了纹理和模型。

    Game Res Hooking_第3张图片

Game Res Hooking_第4张图片

 

   

    用Maya打开obj的文件,就能看到这个十字架模型了,是不是很酷……:)

    Game Res Hooking_第5张图片

 

   

    再重申一下,窃用他人的劳动成果是不道德的行为,各位请三思而后行……

   

    MultiEx Command在这里:http://download.csdn.net/source/2853677

    GLXtractor在这里:http://download.csdn.net/source/2852835

你可能感兴趣的:(Game Res Hooking)