看雪论坛
发新帖
1

[讨论]关于在cocos2d游戏中调用其内部lua函数

qinxijp 2015-1-12 15:49 9895
关于lua多线程的问题,现在大部分的手游都是 cocos2d 或者unity的,
对于cocos2d 其内部逻辑控制是lua来实现的,也就是可以解密他的luac或者是拿到他的ua脚本(未加密的情况下),来进行lua的修改来实现游戏逻辑行的修改,比如等级判断, 金钱,钻石。

在我研究一款XX传奇的时候,lua是已经加密成了luac, 并且op也做了替换,在正确解密的情况下,大部分.abc文件可解,小部分会有几个error:语法错误,估计是luadec解析引擎的问题,在我重新根据解密表 加密回去的时候,游戏直接卡在主界面不动(解密带有error的luac时候), 换了另外一种思路。

通过hook so,直接调用他的lua函数,因为lua的源码已经被解密出来,内部函数我们也可以看到,尝试直接在so内调用其lua函数,在我的so里启动了一个线程,首先拿到了全局的lua_states,然后获取lua函数名,直接lua_call调用其lua函数 ,发现会出现返回值会出现运行时错误的,使用lua_type来判断获取的函数是时候,有的时候是table 或是其他的数据(考虑到是多线程问题,lua_state被不动的调用).

有没有研究这方面的, 希望来交流一下~
本主题帖已收到 0 次赞赏,累计¥0.00
最新回复 (11)
guxing罗 2015-1-12 15:55
2
不懂,,,帮顶了。。。。。。
樊辉 2015-1-12 16:19
3
lua在多线程中运行, 必定出错。

你可以试试找到他的luaL_loadbuffer,通过这个call来加载你的lua脚本(加载时不需要编译成二进制),假如你的函数名和它的一样,就会覆盖它的函数。
1
qinxijp 2015-1-12 16:30
4
我现在是想 调用的他的函数, 他的lua源码已经解出来了, luaL_loadbuffer 我也已经hook掉,可以实现任意加载文件,但是有一个时机问题,在什么时候可以调用他的方法才能成功, 现在他有几个线程再不停的调用pushvalue or  lua_pcall  lua_call ,  我自己起的线程,调用他的lua函数 直接pcall的返回值就是运行期错误.我现在就卡在这里。
1
qinxijp 2015-1-12 16:32
5
其实最简单的方法就是修改他的lua源码,我源码已经解出来, 但是因为luadec引擎的问题,有一些语法会解析会出现错误,导致 让他加载我解密后 重新打包的luac文件时候,就会出现卡屏的问题。
樊辉 2015-1-13 12:05
6
接管消息后,用他的主线程来执行lua脚本,就不会出错了。
SendMessage
1
qinxijp 2015-1-13 16:25
7
恩,最后发现了,太天真了,本来想直接调用他的lua函数, 没有了解到lua语法local的生命周期,蛋疼。。。。。。。.这个方法实现不了 就感觉废掉了~
herowuking 2015-1-14 16:58
8
请指教:wuying283@qq.com
1
daiweizhi 2016-1-25 18:06
9
我现在也遇上了LUAC安卓的如何进行解密回LUA求教
wxclover 2016-2-15 18:03
10
互相学习交流下 ,怎么和你联系
qq枫三少 2017-9-8 17:38
11
互相学习交流下  ,怎么和你联系
qq枫三少 6天前
12
55555555.还没有解出源码,楼主能教一教吗
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 微信公众号:ikanxue
Time: 0.013, SQL: 11 / 京ICP备10040895号-17