最近因为一直有玩一个网游,发现一款直接内置进手游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

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

  1. autojs 手游 脚本UI demo【仅供学习交流】

    autojs 问道手游 脚本[仅供学习交流] 此处提供简易版悬浮窗demo 详情实现私聊博主 importClass(android.view.View); var entries = "主 ...

  2. 单机 amp; 弱联网手游 防破解、金币改动 简单措施

    单机 & 弱联网手游 防破解.金币改动 简单措施 手游经常使用破解方法 对于一个弱联网或者单机游戏,能够从下面方面去破解: 1.找得到存档文件的,直接破解改动存档文件. 2.找不到存档文件,就 ...

  3. 2023全新苹果免越狱群控操作系统搭配巽风手游脚本运行

    据小编了解目前对于手游市场有一款手游爆火出圈,这款手游就是(巽风)真正意义上是可以白嫖茅台的,而且对于手游党来说,玩游戏的同时还能白嫖茅台 还是不错的选择,而手机太多的情况下,一个个去玩 那样太麻烦了 ...

  4. python写梦幻西游手游脚本_PyCharm2020.1 全新版本助力你的编程路

    人生苦短,我用python,可以说是Python程序员的口头禅了,而Pycharm便是Python编程最广泛使用的编程软件之一:因为其干净利落的界面,超方便的功能特性,许多老师在相关编程课上,也都会使 ...

  5. python 梦幻西游手游脚本_梦幻西游手游抢怪有什么技巧 梦幻西游抢怪技巧

    今天小编为大家带来了梦幻西游手游抢怪有什么技巧 梦幻西游抢怪技巧,感兴趣的朋友们可以跟着小编去下文了解一下哦! 游戏中的资源就在那里不多不少,你抢或不抢都随你,但是你能得多少就不能随你啦!在游戏中抢怪 ...

  6. python写梦幻西游手游脚本辅助_3 行 python 代码帮你轻松实现” 自动发送测试报告 “到指定邮箱...

    此文章来源于项目官方公众号:"AirtestProject" 版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 前言 大多数情况下,跑完用例脚本之后,我们需要把测 ...

  7. 弹弹堂手游语音服务器怎么连接,全程教学 《弹弹堂手游》战斗过程详解

    战斗是<弹弹堂手游>中的核心玩法,也是小伙伴们最热烈追捧的玩法之一.作为新手玩家的你,是否知道该如何进行一场充满意义的战斗呢?接下来,就让我们一起来回顾一下整个战斗的进行过程吧. [战斗准 ...

  8. python写梦幻西游手游脚本辅助_深入解析Lua脚本加密技术,给游戏代码加上“紧箍咒”...

    不少安全专家表示,在互联网上失去对代码的控制,就像把银行的设计图交给抢劫犯一样. Lua是一种被广泛用于游戏开发中的计算机语言,方便开发者定制自己所需的功能.其中,红遍全球的<愤怒的小鸟> ...

  9. 2018滴水LUA手游脚本制作实战视频教程

    1_脚本制作的环境搭建 2_Lua基本语法 3_Lua函数 4_脚本制作的常用函数-findcolor函数 5_脚本开发常用函数-触摸函数讲解 6_Lua运算符介绍 7_Lua流程控制讲解 8_Lua ...

  10. 安卓手游脚本开发!闭关在家37天“吃透”这份345页PDF,已开源

    开头 金九银十就快到了,很多有求职.跳槽打算的人最近都在完善更新自己的简历,打算趁此机会换到心仪的环境. 程序员相较其它工作岗位略有不同,最注重的就是技术.所以很多程序员会产生一个误区,觉得自己技术强 ...

最新文章

  1. AI 3.0》王飞跃教授推荐序——未来智能:人有人用,机有机用
  2. strncasecmp的使用
  3. 知乎的 Flink 数据集成平台建设实践
  4. 【Python】字典dict类型转换为列表list类型
  5. 关于MyBatis的缓存
  6. 【算法刷题3】二叉树的最大深度
  7. 高逼格!程序猿的表白也可以这么浪漫
  8. visio 2016安装教程
  9. 【传统编码技术对比】汉明码,RS,卷积码三种编码技术的对比
  10. idea设置java环境变量_idea的环境变量怎样设置
  11. AXure交互设计指南
  12. 华为云PBX_基于华为云客服平台打造的比特百灵鸟AI管家解决方案发布
  13. 精度、召回率、准确率、F-score
  14. 桥接模式、NAT模式和仅主机模式
  15. 电脑使用变慢七大原因全解析
  16. 触发器(Trigger)
  17. UVA 1616 Caravan Robbers 【二分+贪心+枚举分母】
  18. android模拟按键方法,Android随笔之——模拟按键操作的几种方式
  19. live2d_碧蓝航线:老婆们在外服都长啥样?她惊艳四座,Live2D独此一家
  20. Windows7 个人服务详解及优化

热门文章

  1. excel 一列的数据除以另一列
  2. 移动无线网络参数及速率
  3. 已解决ValueError: Worksheet named ‘Sheet‘ not found
  4. 猫和计算机连接网络,计算机路由器与猫的连接方法步骤
  5. Git使用小技巧【git reset和git revert, 你真的知道怎么用吗, 详细图解】
  6. 20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结
  7. 《时代》杂志评出的100部最佳英语小说(含下载)
  8. CAJ转WORD的方法(原创方法,仅用于学习记录,免费但是很麻烦)
  9. ffmpeg 转换flv压缩大小_[转]ffmpeg转换参数和对几种视频格式的转换分析
  10. Win7复制文件时出现:“您需要权限来执行操作!”(终极解决方法!)