目的:

  • 对游戏的美术资源的存储方式进行逆向,解析后可以提取各种美术资源或者替换游戏中的某些资源。
  • 基本都是出于兴趣和好奇性进行的工作。

研究细节:

  • 部落冲突(COC)美术资源破解

    • 把游戏文件从手机中导出后,很容易看出哪些文件是和美术资源有关的。
    • 不过这个资源是压缩格式的数据+一些文件头。对文件头进行一些修改后,可以使用普通的解压工具将文件转换成明文格式。
    • 提取图像信息
      • 美术资源中一定会存储颜色值。颜色值排列在一起的的规律还是挺明显的
      • 以4个为间隔,中间用FF相隔。或者是大段分布均匀的无00出现的数据段(不带alpha通道的格式)
      • 如果是用PNG和其他有损格式存放的花可以通过分析一些压缩文件头来寻在图片。
      • 不过COC就用最简单的带alpha通道的位图格式存储图像。所以基本靠肉眼就看出文件中哪些文职存储的图像。
      • 而且整个文件就只有一张大图片。应该是为了减少渲染的batch,所以把各种物件,特效用的图都拼成了一张大图。
      • 在颜色数据的边界上找到图像的尺寸等星系,很快就把这张大图提取出来了。
    • 提取图像的附带信息
      • 每个物件对应这张他图里面的哪个子区域应该也会存储在这个资源文件的某个地方
      • 基于游戏的配置表中的各种ID,以及其他规律找到了每个物件,特效的图片对应的区域,这样就能把一张大的图,按照物件切成各种小图。
    • 破解文件整体的格式
      • 整个资源文件有它统一的格式,比如资源类型,数据长度等。在破解了具体的几种资源后,大概能总结出统一的资源格式。再这个基础上又能逆向出更多的资源。比如:动画数据,特效参数等。
      • 最终发现整个文件的存储方式类似于flash的swf文件的格式。然后根据swf格式的原理,又逆向出更多的细节。
      • 剩下还有些特殊的数据,比如炮弹抛物线的公式。但因为数据位置的定位已经比较精确,使用直觉来猜测,最终连最细节的数据都逆向出来了。
      • 最终我们使用破解出来的资源,自己些游戏的逻辑,山寨了一个和COC一模一样的游戏。
      • 注意,上面的图都是我们替换成自己的美术资源后的结果,不是原版的美术资源(其实部分还是用的原始COC的)。但通过逆向,学习到成功游戏的图像架构。
      • 具体的格式细节可以看这里:http://www.zili-wang.com/decodecoc.html
  • 埃米尔物语美术资源破解
    • 埃米尔物语是3d的网络游戏,人物造型和可爱,所以我就非常痴迷了。
    • 3d美术资源其实比2d的简单。因为3d的资源的类型更加统一:顶点,顶点编号,法线等等。基本打开文件,依次把一些浮点数组成的位置渲染一下就能看出哪些是位置哪些是法线什么的。
    • 在获得某些资源(mesh,贴图)的逆向后,就推断文件的整体格式。然后就能获得材质,瓦块,动作,骨骼等信息。
  • 日文Galgame ToHeart2的汉化破解
    • 所谓汉化破解就是要把原游戏存储文字的地方找出来,换成中文。
    • 因为我加入到一个汉化组,本来只是想给学日语找些动力,但汉化组一直没有找到搞破解的人,所以某天我就自己尝试了下。
    • 当时发现把存文字的那个资源文件直接删除一部分,居然游戏还能正常进去,只是遇到被删除的文字就显示不正常了。这样找到一个定位游戏里面某个字在文件中的方法。
    • 然后直接二分法手动找出游戏里面某个字的位置。再多定位几个字后就找到规律了。
    • 后面发现其实存储的只是某个字的代号。而这个代号指向具体某个字符的图像。这样汉化破解的所有信息就齐全了。
    • 先把字库里面的图像全部换成中文,然后建立起每个中文汉字和代号的关系。然后在文字区填写汉字的代号就行了。

总结:

  • 读书的时候花了很多时间在这类和工作没啥关系的事情上。这些事情一般和找工作的业务也关系不大,面试的时候也很难让人知道。不过个人觉得是很好的训练了我的逻辑能力。
  • 后面也面试一些其他应聘者,我就很希望能看到应聘者也有一些这样的经历。因为会做这些事情的人,至少是一个爱研究的,不回避未知问题的,有主动性的人。因为对于一个不是很成熟的岗位,其实要找直接对口的人很难,所以更多的是看这些通用能力了。

游戏视觉内容逆向破解相关推荐

  1. [系统安全] 四.OllyDbg动态分析工具基础用法及Crakeme逆向破解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  2. Windows PC软件反编译逆向破解

    文章目录 一.OllyDbg工具简介 二.OllyDbg分析Crakeme示例1 三.OllyDbg分析Crakeme示例2 四.总结 作者的github资源: 系统安全:https://github ...

  3. Exp1 PC平台逆向破解(5)M

    Exp1 PC平台逆向破解(5)M 实践内容 实践对象是一个可执行文件pwn1 本程序的正常执行顺序应该是main函数调用foo函数,foo函数输出用户输入的字符串. 本程序还包含了另一个代码片段ge ...

  4. 2018-2019-2 20165234 《网络对抗技术》 Exp1 PC平台逆向破解

    实验一 PC平台逆向破解 实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另 ...

  5. 技术分享:逆向破解华为路由器第三部分

    技术分享:逆向破解华为路由器第三部分 引文 在前面两个部分(1,2)已经介绍了UART,BusyBox等部分的逆向调试,而这篇将会开始在流量分析方面下手,来逆向出更多的信息. 正文 请看下图,数据存储 ...

  6. 逆向破解思路和获取app的代码,脱壳操作(一)

    .我们的app首先是经过我们写代码.最后经过签名.打包最后生成.app文件,那么这个.app的文件在哪里呢,我用我自己的项目做个例子大致他的位置在这里: 他这个其实就是包含我们项目中的资源和我们写的代 ...

  7. 20155232《网络对抗》 Exp1 PC平台逆向破解(5)M

    20155232<网络对抗> Exp1 PC平台逆向破解(5)M 实验内容 (1).掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(1分) (2)掌握反汇编与十六进制编程 ...

  8. 20155220 吴思其 《网络攻防》 Exp1 PC平台逆向破解(5)M

    20155220 <网络攻防> Exp1 PC平台逆向破解(5)M 实践内容 通过对实践对象--20155220pwn1的linux可执行文件的修改或输入,完成以下三块: 手工修改可执行文 ...

  9. 20145330 《网络对抗》PC平台逆向破解:注入shellcode 和 Return-to-libc 攻击实验

    20145330 <网络对抗>PC平台逆向破解:注入shellcode 实验步骤 1.用于获取shellcode的C语言代码 2.设置环境 Bof攻击防御技术 需要手动设置环境使注入的sh ...

最新文章

  1. DeepMind-深度学习: AI革命及其前沿进展 (54页ppt报告)
  2. ledisDB底层实现——本质上就是用leveldb这样的底层存储,和ssdb一样,meta里存的是hash、list等的元数据...
  3. GetLastError返回值的意义----适用在eVC和VC++
  4. rxjs of操作符传入数组的单步执行
  5. 四种最令人讨厌的编程语言:Java、Javascript、C++和Perl
  6. 清华王兴再抛神论:为什么教育决定着中国餐饮业质量?
  7. python startswitch_使用python esl 实现FreeSWITCH自动外呼
  8. JAVA获得天气json数据的方法,获取从天气预报接口返回回来的json数据
  9. dynamic 找不到编译动态表达式所需的一种或多种类型。是否缺少引用?
  10. 为什么Windows的兼容性这么强大,到底用了什么技术?
  11. 日期和时间的正则表达式
  12. mysql primary重复_mysql:键'PRIMARY'和奇怪的ID行为重复条目'0'
  13. vue.js 带有正则选择的车牌控件组件
  14. 非华为电脑安装华为电脑管家11.1.1.101
  15. 卡尔曼滤波原理及matlab仿真
  16. Java调用阿里云对象存储OSS
  17. 完美解决浏览器主页被hao123劫持,打开浏览器时自动进入hao123主页怎么办
  18. nova7系列,nova的深耕之役
  19. EPOCH、INTERATION、BATCH_SIZE的区别
  20. 未明学院:从国企联通到金融科技随手记,学长告诉你国企和互联网私企差别有多大?

热门文章

  1. 小米路由 php,小米路由
  2. 江西赣州计算机应用中心,赣州计算机应用与维修专业学校
  3. 十大运动蓝牙耳机品牌排行榜,六款值得买的运动耳机推荐
  4. php 生成迅雷地址,php实现把url转换迅雷thunder资源下载地址的方法,_PHP教程
  5. 软件测试怎么测微信朋友圈,面试题:软件测试,如何测微信的朋友圈?
  6. 史上最污的技术解读,我竟然秒懂了(上)
  7. 制作自己的 Kindle 电子书
  8. 固态硬盘和传统硬盘的区别
  9. elementary OS 5 Juno (Pantheon) 安装后配置总结(干货很多)
  10. python web py入门(4)-从数据库读取数据显示到网页