吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 32312|回复: 112
收起左侧

[原创] 放置类游戏《迷你金庸》的逆向过程(更新0.255版本逆向)

  [复制链接]
sfczz 发表于 2019-3-25 22:17
本帖最后由 sfczz 于 2019-5-28 21:03 编辑

详细内容看最下面分割线之后

2019-05-28更新0.255版本逆向
今天更新的程序把git的工程信息删除了。有两种方法可以继续获取代码。实际文件名仍需要通过监听程序行为的方式来获取。
1、把新版程序的acg文件夹里面的内容复制到旧版程序的project/objects里面。用原来的方法获取即可。
2、写个python用zlib库直接解压缩hash文件。直接zlib.decompress(open(file, 'rb').read())即可。保存后文件头部需要去掉blob字样的标识。

另外多说一句0.253版本,跟0.21方法一样,其实后面我跟贴说明了,放这里比较醒目吧……

——————————————————————分割线——————————————————————上周看到三大妈有推荐一款放置类游戏《迷你金庸》,下载之后玩了一下,发现进度实在是太慢,萌发修改的想法。
尝试变速齿轮,发现游戏有时间检测;修改本地时间的话,发现无用(后面分析后结论是获取了网络时间)。因为分为PC版和安卓版,所以下载了PC版,开始逆向。

1、弯路篇
主要记录走过的弯路,各位不喜欢看可以直接下拉到正路篇。
首先,解压缩游戏,有以下几个文件夹
1.png
build(游戏可执行文件被放在这里面)

经过一通浏览,发现res中有一些Lua脚本,所以基本判断游戏采用的是Lua脚本来进行游戏的执行。翻了一下脚本,发现没有什么重要的东西。所以怀疑是有编译或加密后的Lua脚本。
祭出OllyDbg,给所有的CreateFile下断点。发现CreateFile打开的文件包含了project\objects\xx\xxxxxxx的文件
2.png
一眼看上去,像是SHA1。(熟悉Git的人,应该已经知道该怎么做了,奈何我不用Git……绕了好大一圈弯路)
project/objects里面一共两千多个文件,茫茫多。所以打开MyMonitor,跑了一会可执行文件,分析一下行为。
在分析结果中发现,有形如下面的记录:
打开文件“xxxx\a.lua"失败

打开文件"xxxx\lua\a.lua"失败
打开文件”xxxx\lua\a\init.lua"失败
打开文件“project\objects\xx\xxxxxxx"成功
3.png
所以断定实际上project\objects\xx\xxxxxxx对应的其实就是a.lua
UE打开project\objects\xx\xxxxxxx后发现,文件头好像不是lua编译后的字节码头部啊……陷入僵局……

整理思绪,重新折回到Ollydbg,打算跟踪一下project\objects\xx\xxxxxxx详细的解码规则(这事儿在逆向游戏素材的时候干过),跟了一下还没发现什么的时候,无意中看了一下栈里的内容,发现栈底有git方面的API。
4.png
联想到svn和vss都会对于数据进行打包,所以感觉git也同理。也许是此时搜索关键字不对,没有找到如何解包。根据可执行文件里面的api名称,确定调用的是libgit2。
所以找来libgit2的库,自己写了一个控制台程序,准备按照可执行文件的调用API的顺序及参数,开始尝试还原数据。刚好某api获取到git_object之后,后面的api感觉接不上。故搜索git_object相关的东西。

2、正路篇
在git的一个貌似官方的文档中发现有一条指令 git cat-file -p hash。试了一下,竟然真就把内容还原出来了……还是源码,不是Luac(晴天霹雳……我前一天晚上干了些啥……
剩下的事情就好办了,写了个批处理,都还原了吧。
然后根据MyMonitor中的分析结果,把几个看上去可疑的Lua文件照着Hash打开,运气不错,没开几个就找到了游戏的主流程文件。
连代码都有了,那就可以直接进行相应的修改了,先把等待时间缩短,把秘籍残卷上限从99改成999。
主流程大概看了看,里面作者加了好多形如下面的注释:
5.png
这个是做数据核对的,估计是之前有人改过内存
6.png
进行本地时间合理性检测
代码中还有茫茫多数据合理性检测、存档校验、内存加密等等。
因为觉得作者以前弃坑(估计就是修改党给折腾的),后来又进行了复刻,也不容易,所以我就不把具体改了什么跟怎么让修改生效写出来了……请各位理解一下……

如果作者能看到这个帖子,我提点不成熟的建议,既然代码架构如此,已经用git文件结构来处理了。那就可以考虑把脚本源码编译成Luac,之后要么换opcode,要么直接上加密。加大逆向难度。

PS:吾爱破解是个好论坛,关注了好几年,好不容易趁着前几天开放注册,注册了一个帐号,但是发现必须保证活跃度,这一点让我这个有孩子的大龄码农很是头疼……平常几乎没有空余时间研究这些东西,都是周末晚上,孩子睡了,熬夜研究的,伤身体……为了保证活跃度,肚子里的东西慢点往外掏,后面打算整理下神魔至尊传和风云的图片素材逆向过程。隔一段时间发一个,免得没东西发之后,帐号被清理掉。

想练手的同学:
游戏挺大,PC版一百多MB,我就不附上了,版本v0.21,搜一下就有
Ollydbg基本上人手一份。我也不附上了。
git这玩意,官方好找。
MyMonitor超过1MB,我也放不上来……
用到的就这几个工具
新人第一个帖子,有不合规的地方,望大家包涵。

免费评分

参与人数 20威望 +1 吾爱币 +24 热心值 +19 收起 理由
as86172208 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
thepassion + 1 + 1 热心回复!
siuhoapdou + 1 + 1 用心讨论,共获提升!
91没有人 + 1 + 1 用心讨论,共获提升!
Hmily + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
canvoy01 + 1 + 1 我很赞同!
盛世玫瑰 + 1 热心回复!
wangch1 + 1 + 1 教程很细致,辛苦@Thanks!
my713533 + 1 + 1 用心讨论,共获提升!
jonsen_liu + 1 我很赞同!
乖乖隆地咚丨 + 1 + 1 感觉对我来说搞这些完全是从零开始😂😂
Kingsama + 1 + 1 用心讨论,共获提升!
wale + 1 + 1 热心回复!
mrgodxinlu + 1 + 1 用心讨论,共获提升!
tr113723 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
sysqjszg + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
chenmintian + 1 + 1 我很赞同!
693613898 + 2 + 1 我很赞同!
尅勛 + 1 谢谢@Thanks!
zhanjiawei + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| sfczz 发表于 2020-11-5 22:49
中毒的尼古丁 发表于 2020-11-3 15:03
大佬大佬,能不能发个修改后的替换文件,只要残卷999和减少等待时间就行,谢谢大佬!!

pan.baidu.com/s/1mridnM-SEW_UcnwzIzDmiA
qgza
三个文件放在md_miniyj\build\release\lua里面。
如果你想自己改,除p_init.lua以外不要有任何修改。那两个lua编码有问题,不能随便改了
julingf 发表于 2019-3-26 12:30
silinde 发表于 2019-3-26 13:28
 楼主| sfczz 发表于 2019-3-26 14:03 来自手机
silinde 发表于 2019-3-26 13:28
按你的搞了一般就出错,怎么回事?

你倒是说说出啥错啊。。。
deanming 发表于 2019-3-26 14:06
不错,虽然我不会修改。。哈哈哈
cat95f 发表于 2019-3-26 14:07
看着复杂
sandyleo 发表于 2019-3-26 15:07
不懂啊啊
mms2019 发表于 2019-3-26 15:20
纯支持,不改游戏
wapj2016pspndsq 发表于 2019-3-26 15:24
虽然我把您说的几个没上传的附件都百度一遍~ 但还是啥都没懂~ 哈哈 我还是安心做个伸手党吧
qichen 发表于 2019-3-26 15:26
期待神魔至尊传的资源解析
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 03:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表