记一次小白的手游脚本破解过程及难题

article/2025/9/23 8:06:52

最近因为一直有玩一个网游,发现一款直接内置进手游lua脚本的辅助。
于是来了兴趣,开始研究。

 
这是那款辅助的安装包,
 
里面的文件是这样的,妈呀连个后缀都没有我要怎么弄,因为我也是个半懂不懂的小白,于是开始各种查文件头啊什么的。

后来发现某些文件并没有加密,直接txt就可以打开于是乎,看到了这些代码,但是我不懂这是什么语言写的。但是通过一些代码的txt文本输出,结合辅助的界面,发现这些并为加密的文件只是一个界面的输出。然后我那股兴奋又开始蛋疼了。
 
接下来对里面一些加密的文件进行分析,
 
看到这些我也不懂是什么啊。各种百度啊什么的。发现这是自定义的一些加密压缩。那可咋整啊
后来翻看手游本身的一些文件跟这个安装文件一样没有后缀的资源文件。发现加密方式一样。都是这个文件头。那解密就要从手游本身入手了。可能这个辅助脚本直接调用的手游本身的加密方式吧。

先看看手游的资源目录

┌─HashRes

┊        ├─00

┊               ├─000000

┊               ├─     ┊

┊               ├─FFFFFF

┊        ├─01

┊        ├─┊

┊        ├─FF

HashRes中的文件夹名称和子文件名组合成了一个4字节的Hash名,如下图反编译so文件后看到的寻找资源的Hash路径




先分析文件怎样加载的,在IDA中反汇编中定位到 cocos2d::LuaStack::luaLoadBuffer()这个方法

首先注意的是strncmp ( const char * str1, const char * str2, size_t n )的返回值:若str1与str2的前n个字符相同,则返回0

lrc4这个类就是解密lua的

根据上面的分析后,因为学C#的 我就用C#写了个提取工具

解密文件代码片段


最终得到的lua资源文件为lua编译过的二进制文件
 
至于为什么不是luac后缀。这个我存储的时候特意区分的。
 
并不是lua源码,想得到源码就得反编译luaq文件。
其实我也就是个小白。到这我不知道改怎么弄了,就各种百度找资料反编译啊。
各种求助。有人告诉我用 unluac。我也不懂什么就去下载。
 
就是这个东西。幸亏有编程基础。一眼就看出来了这是一个java文件呀。
可是多年没用java电脑并没有装。
然后各种折腾安装控制台。
泥煤啊。后来发现这个只需要一个java环境直接可以运行了。
 
就是这样就可以反编译出来加密的lua脚本了。
当我满怀兴奋的去开始折腾。结果呢。出来的是乱码。
我就奇怪了。结果各种求助啊。
就发现泥煤的lua脚本加密方式也是自定义的。
说什么自定义lua 虚拟机 Opcode。
没听过啊。什么鬼。
这就要求助大神了。
一翻折腾
在IDA中定位lua_load然后一直跟到f_parser进入luaU_undump→LoadFunction→luaG_checkcode→symbexec,在symbexec中有个switch的循环里面有部分的opcode,通过和源码中的逻辑比对找出对应的opcode
这是大神完成的。我也不懂。
找到了 Opcode之后就是修改反编译工具里面的 Opcode为你找到的 Opcode。
发现还是要用到java工作台
unluac.jar 直接修改OpcodeMap里的map,改成对应游戏修改后的Opcode即可
然后继续尝试反编译
 
 
我想这应该是lua的源码的 。因为没有学过这个语言不大了解。
我查看这些源码的时候发现这个语言他为什么写法都用字符串拼起来的。
对了。上面的源码就是辅助的lua脚本源码了。因为他真的用的是手游的加密方式。我不知道他怎么做到的。
这个作者也够拼的吧。

好了拿到源码了。开始 破解 了。我想当然的以为找到他的登陆提示就改他的判断就可以了吧。
但是我找遍所有代码没发现有登陆提示的文字啊。没有一句中文。这是咋回事呢。
那就找平常编程用的方法的定义名称吧。
尝试admin login等
结果login就找到了。不知道是不是登陆验证。放上代码。
 
找到这个login的调用
 
通过login调用找到这个方法。
有没大神看下这个是不是验证。因为我还没破解成功呢。

然后我把所有的false 改成true 。然后我也没加密回流。直接删掉后缀改成他原来的名称(我也不知道没有回流可以不可以的。有大神告诉下嘛,如果需要回流lua脚本怎么通过他定义的 Opcode编译呢

修改完后我直接把这个文件放回安装包。然后放进手游进行安装。

结果发现不行。没作用。提示还是原来的登陆失败。

我就找原因。发现他还有访问服务器。会重新下载安装包
   
就是这个文件夹。下载在手游目录。然后立马又删除了。我手速快。复制出来的。原谅我的笨方法。
然后我看了下这个不就是安装包的内容吗。那为什么还需要一个安装包呢。
然后这个安装包的文件不是我修改过登陆验证的。
那他这个重新下载马上删除。我应该怎么替换他的文件呢。
 
我又看代码,找到他安装会请求服务器的文件什么的。
我彻底蒙圈了。不知道怎么搞了。目前到这一步了。不知道怎么继续破解了


反编译工具 unluac 源码: 

https://sourceforge.net/projects/unluac/?source=typ_redirect 

https://github.com/viruscamp/unluac

反编译工具 luadec  源码: 

https://github.com/sztupy/luadec51

参考:

IDA深度解析修改so文件和ARM汇编视频教程

IDA+OD双剑合璧=逆向无敌


转载地址: https://www.52pojie.cn/thread-545655-1-1.html


http://chatgpt.dhexx.cn/article/TlimFmkU.shtml

相关文章

问道手游服务器维护,问道手游公测服务器版本更新维护公告

小编给大家带来了问道手游公测服务器版本更新维护公告,想了解更多问道手游攻略,敬请关注18183问道手游专区。 各位亲爱的道友: 为保证服务器的运行稳定和服务质量,《问道》手游所有公测服务器(内测专区除外)将于2017年03月02日04:…

问道手游服务器维护,问道手游停服维护公告

问道手游停服维护公告,问道手游是一款大型Q版MMORPG回合制手游,问道手游将在11月24日上午8点进行一次停服维护,期间将对之前测试时出现的一些问题进行修复,预计维护时间为一个小时,请玩家们注意开服时间。 问道手游海报…

手游自动挂机脚本开发历程

事件起因 国庆节期间,因为工作相对闲暇,自己鬼使神差地下载了一个梦幻西游手游玩了几天,结果一周就这么过去了,一玩起游戏来,那就是白驹过隙啊。节日过后,游戏自然是没时间再玩了,毕竟有一大堆…

问道手游服务器修改密码,问道手游账号安全设置及找回密码教程 玩转问道

问道手游账号安全设置及找回密码教程,小编教你畅玩问道!问道手游是一款非常受大家欢迎的回合制游戏,但是很多小伙伴们还不知道自己的雷霆账号怎么安全设置和找回密码,下面小编给大家带来的就是这方面的教程,希望能够帮助到大家。 运行游戏后在登录界面会显示雷霆游戏的SDK,在登…

《问道》手游职业选择攻略

问道手游道友们!是时候显示你的身手啦,在这激动人心的时刻,新手玩家们心中是不是在犹豫选择哪个职业比较好呢?就让迷糊给大家带来有关新手职业选择的推荐吧,希望能够帮大家!《问道》手游新人职业选择攻略 金职业 外形炫酷,一身正义,也是众…

问道手游服务器修改,分享一下自己架设问道手游经验和教程【图文篇】

1.分享一下自己搭建问道的经验(以图文的形式来说下),如有写的不对的地方希望指正下。 2.搭建时所需要的东西。注意本帖都不提供资源下载,需要自己在论坛找 a.服务器一台 b.搭建环境 c.资源包(包括前端,启动端,游戏客户端) 3.服务器设置(本帖以腾讯云服务器windows service2…

问道手游服务器配置文件,问道手游脚本视频教程

问道手游脚本视频教程 [2021-02-15 06:06:16] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐:《PHP视频教 系统运维 在数据…

问道手游-0基础架设教程

前言 本次教程使用的是问道魔改版的一个服务端、问道传奇、里面地图玩法基本与传奇类似 准备工具 1、Windows系统服务器一台 2、问道传奇服务端 开始架设 1、把准备好的问道传奇服务端解压到服务器D盘根目录记住必须得是根目录 不在根目录会导致快捷方式失效(服务器…

问道手游加点模拟器 一个可用的在线版问道加点模拟器

问道手游加点模拟器 一个可用的在线版问道加点模拟器 问道手游是一款自由加点的游戏所以角色的加点就是玩家非常关注的。今天,虐游网专门为此制作了问道手游角色加点模拟器 ,用来帮助玩家更好的对自己的角色进行加点,一起来看下吧。 欢迎各位…

Python做手游自动刷图脚本,问道手游目前很火,此脚本应用泛滥!

效果: 叙述: 所有玩刷副本类游戏的朋友都会觉得很枯燥,一次又一次的重复性工作甚至让许多朋友放弃了那款游戏。最近问道手游很火,网络上出现了许多自动刷道的脚本,但是这款例外,因为它是由脚本之王Python实现。 说明: 脚本:避免重复动作,模拟鼠标和键盘的操作 外挂…

5.IP地址介绍及VLSM

一、IPv4编址方案 IP(v4)地址由32位二进制数组成,这些位被划分为4个字节,中间用“.”号隔开,每组8位,以十进制数形式表示。分为网络地址和主机地址两个部分。 IP地址:192.168.1.1 子网掩码:255.255.255.0…

【计算机网络】基础概念总结7-VLSM可变长子网掩码

7 VLSM概念 上节说到我们使用无类域间路由(Classless Inter-Domain Routing,CIDR)可以将路由集中起来,在路由表中更灵活地定义地址。 它不区分 A 类、B 类、C 类地址,而是使用 CIDR 前缀的值指定地址中作为网络 ID 的…

计算机网络:pka实验——设计和实施VLSM划分

大学实验 实验九 设计和实施VLSM编制方案 实验目标: 掌握VLSM编址方法为设备规划与分配IP地址并检验连接 实验场景(背景): 在本练习中,您需要在一个真实的网络中规划IP地址,使用 /24 网络地址设计 VLSM …

8.2.1.4 -设计和实施 VLSM 编址方案

没有废话,直接上过程 接下来根据要求,对网络进行子网划分 接下来根据划分,进行子网的配置: 1 此处是对路由器building1进行配置 对子网1进行分配 同样对子网2进行分配: 注意此处要根据实验要求进行分配: 此处要…

子网划分(VLSM)和子网汇总(CIDR)

IP地址的组成 IP地址由两部分组成:网络地址 主机地址 IP地址分为IPV4和IPV6地址 IPV4地址由32位的0和1组成,现在IPV4地址全球已经枯竭 IPV6地址由128位的0和1组成,IPV6的发明,让地球的每一粒沙子都有一个IP地址 IPv4地址&#xf…

计算机网络VLSM题型解题思路及过程

1.定义 VLSM:可变长度子网掩码 2.解题依据 (1)哪个子网需要的IP数量多,优先给谁分配。 (2)分配时,应该遵循从小到大依次分配原则。 3.举例说明 本人学习过程中使用的课本教材是谢希仁 编著…

VLSM(可变长子网掩码)

vlsm 百科名片 vlsm子网设计 VLSM(可变长子网掩码) 是为了有效的使用无类别域间路由(CIDR)和路由汇总来控制路由表的大小,网络管理员使用先进的IP寻址技术,VLSM就是其中的常用方式,可以对子网进行层次化编址&#xff0…

实验 – 使用 VLSM 设计和实施 IPv4 编址

实验 – 使用 VLSM 设计和实施 IPv4 编址 拓扑目标背景/场景所需资源 第 1 部分:分析网络要求第 2 部分:设计 VLSM 地址方案第 3 部分:连接并配置 IPv4 网络 拓扑 目标 第 1 部分:检查网络要求 第 2 部分:设计 VLSM 地址方案 第 3 部分:布线…

IP、IPV4、IPV6、VLSM

IP IP是英文InternetProtocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应…

第四讲:使用VLSM方式划分子网实例

一、分析网络地址需求 从拓扑图得知,教学楼局域网各子网总共拥有的主机数量和分组如下表所示。 设备 学生LAN 教师LAN 管理员LAN 路由器间的链路 计算机 460 64 20 2个 路由器(LAN网关) 1 1 1 交换机(管理&#…