xlua 怎么在无法注入 lua 明文情况下打印 G 表
本文最后更新于 645 天前,其中的信息可能已经有所发展或是发生改变。

今天遇到一个游戏,用的 lua5.4 ,基于xlua 开发的,我尝试了几个方向都不能正常的注入lua。

就不能通过 g 表来 注入篡改逻辑。

想着不能注入明文 lua ,不如我用 C 写一遍吧。代码在下面:


void print_table(lua_State* L, int index) { // 如果不是 table 类型,直接打印其值 if (!lua_istable(L, index)) { if (lua_isfunction(L, index)) { printf("function: %p", lua_topointer(L, index)); } else if (lua_isuserdata(L, index)) { printf("userdata: %p", lua_topointer(L, index)); } else { printf("%s", lua_tostring(L, index)); } return; } printf("{"); // 遍历 table,打印每个元素的 key 和 value lua_pushnil(L); while (lua_next(L, index) != 0) { // 打印 key if (lua_isstring(L, -2)) { printf("%s = ", lua_tostring(L, -2)); } else { printf("["); // 递归打印 key print_table(L, -2); printf("] = "); } // 打印 value if (lua_isnil(L, -1)) { printf("nil"); } else if (lua_isboolean(L, -1)) { printf("%s", lua_toboolean(L, -1) ? "true" : "false"); } else if (lua_isnumber(L, -1)) { printf("%g", lua_tonumber(L, -1)); } else if (lua_isstring(L, -1)) { printf("%s", lua_tostring(L, -1)); } else if (lua_istable(L, -1)) { print_table(L, lua_gettop(L)); } else if (lua_isfunction(L, -1)) { printf("function: %p", lua_topointer(L, -1)); } else if (lua_isuserdata(L, -1)) { printf("userdata: %p", lua_topointer(L, -1)); } else { printf("%s", lua_typename(L, lua_type(L, -1))); } // 如果不是最后一个元素,打印逗号 if (lua_next(L, index) != 0) { printf(", "); } // 弹出 value,保留 key 供下次循环使用 lua_pop(L, 1); } printf("}"); }

需要注意 这里用到的 lua 相关的函数,需要自己用 dobby 或者 xhook 通过符号去拿

这个问题也算事比较棘手的了,因为目前很多大厂的游戏都是不给明文注入的, lua 代码也是层层加密。如果可以直接打印 g 表的信息,那就简单很多了!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇