[发明专利]一种导出保护游戏中的Python字节码文件的方法及装置在审
申请号: | 201810608277.0 | 申请日: | 2018-06-13 |
公开(公告)号: | CN108985014A | 公开(公告)日: | 2018-12-11 |
发明(设计)人: | 刘青云;黎健钧;郭申;梁琪;彭元龙;王刚 | 申请(专利权)人: | 珠海金山网络游戏科技有限公司;珠海西山居互动娱乐科技有限公司 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/52 |
代理公司: | 广州嘉权专利商标事务所有限公司 44205 | 代理人: | 俞梁清 |
地址: | 519000 广东省珠海市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 字节码文件 导出 动态链接库 游戏 储存路径 偏移地址 句柄 可执行文件 静态分析 手机游戏 文件保存 文件内容 游戏进程 钩子 虚拟机 加载 破解 引擎 监测 记录 创建 | ||
一种导出保护游戏中的Python字节码文件的方法,包括以下步骤:A、通过对可执行文件进行静态分析,得到r_object函数的偏移地址;B、创建一动态链接库,该动态链接库包含对r_object函数的钩子句柄、记录字节定位句柄和字节码文件储存路径;C、在游戏加载Python模块之前,在游戏进程注入所述动态链接库,利用所述偏移地址,导出Python模块的给定字节部分的文件内容,并且以pyc或pyo格式的文件保存到指定的储存路径。本发明还提出一种导出保护游戏中的Python字节码文件的装置。本发明的有益效果为:提出通过监测Python虚拟机引擎,从而确认手机游戏是否被破解。
技术领域
本发明涉及到软件开发领域,尤其涉及一种导出保护游戏中的Python字节码文件的方法及装置。
背景技术
随着手机应用程序的开发技术日渐完善,市场上出现种类丰富、玩法多样的手机游戏激烈竞争。游戏开发公司为了尽早占领市场,常常希望尽量压缩手机游戏的开发周期和测试周期,从而让手机游戏提早上架应用商店。为此,基于实际开发环境的考虑,手机游戏常常会使用解释型的脚本语言来开发,以省略应用程序的编译过程。其中,Python由于其自身的高效特点,被许多游戏开发公司用作主要的开发语言。
然而,从手机应用程序自身的安全角度来看,这也可能成为一个潜在的隐患。因为作为解释型语言,手机游戏的Python字节码文件(.pyc或.pyo)是不能被加密的,这意味着发布手机应用程序同时,源代码也一并对外公布。事实上,现有大量的工具反编译Python字节码文件,例如开源网站GitHub上的Mysterie/uncompyle2工具,其可反编译版本号为2.5至2.7之间的Python字节码文件。因此,黑客理论上可以通过破解手机游戏而获取手机应用程序的源代码。通过对上述源代码进行分析,其可针对性地开发手机游戏的外挂,从而使得手机游戏的外挂横行,影响正常用户的用户体验。
发明内容
本发明提供一种导出保护游戏中的Python字节码文件的方法及装置,通过监测Python虚拟机引擎,从而确认手机游戏是否被破解的技术效果。
首先,本发明的技术方案第一方面为一种导出保护游戏中的Python字节码文件的方法,上述方法包括以下步骤:A、通过对可执行文件进行静态分析,得到r_object函数的偏移地址;B、创建一动态链接库,该动态链接库包含对r_object函数的钩子句柄、记录字节定位句柄和字节码文件储存路径;C、在游戏加载Python模块之前,在游戏进程注入上述动态链接库,利用上述偏移地址,导出Python模块的给定字节部分的文件内容,并且以pyc或pyo格式的文件保存到指定的储存路径。
在本发明的一个或多个方法实施例中,上述步骤A还包括以下子步骤:读取Python项目的源码中的r_object函数的定义文件,确定r_object函数的索引字段;通过交互式反汇编器(Interactive Disassembler,简称为IDA),预先打开游戏的可执行文件,在交互式反汇编器的当前字符串表中检索r_object函数的索引字段;记录r_object函数对应的偏移地址。
在本发明的一个或多个方法实施例中,上述步骤B还包括以下子步骤:在上述动态链接库中提供划分Python字节内容的字节位置的句柄,用于划分Python字节内容中的魔数部分、时间戳部分和字节码对象部分,其中使字节码对象部分作为输出内容保存为pyc或pyo格式的字节码文件。
在本发明的一个或多个方法实施例中,上述步骤C还包括以下子步骤:通过Windows的API函数SetWindowsHookEx将上述动态链接库注入到游戏进程,使得启动游戏时导出Python字节码文件。
在本发明的一个或多个方法实施例中,上述方法包括以下步骤:D、监控游戏的异常玩家客户端进程,如果监控到异常进程对Python模块的破解成功,则推送安全信息,以通告上位机根据Python字节码文件修改Python虚拟机引擎。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海金山网络游戏科技有限公司;珠海西山居互动娱乐科技有限公司,未经珠海金山网络游戏科技有限公司;珠海西山居互动娱乐科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810608277.0/2.html,转载请声明来源钻瓜专利网。