精易论坛

标题: 取lua返回值问题能不能远程取 [打印本页]

作者: 痴迷的逍遥    时间: 3 天前
标题: 取lua返回值问题能不能远程取
看了很多帖子跟源码,取lua返回值都是把dll注入游戏后实现的,能不能远程取呢

作者: 啊森哥哥    时间: 3 天前
就像获取数据的方式很多种,  dll注入   hook   内存读地址 等等
哪种自己能实现则用哪种.
作者: 黄福寿    时间: 3 天前
就是取call的返回值而已
作者: 痴迷的逍遥    时间: 3 天前
黄福寿 发表于 2025-5-22 13:02
就是取call的返回值而已

好像不是那么简单,还有个lua栈的问题把
作者: 黄福寿    时间: 前天 00:18
痴迷的逍遥 发表于 2025-5-22 16:59
好像不是那么简单,还有个lua栈的问题把

就算这么简单,比如luaL_dostring,找到luaL_dostring函数地址,然后call,32位的话,eax就是返回值了,64位是rax
作者: 痴迷的逍遥    时间: 前天 18:43
黄福寿 发表于 2025-5-23 00:18
就算这么简单,比如luaL_dostring,找到luaL_dostring函数地址,然后call,32位的话,eax就是返回值了,6 ...

大哥没你说的这么简单,你说的返回值是在eax里 这个eax是lua_dostring这个函数的返回值,返回0代表执行成功。我想要的是执行的lua命令中的返回值,比如
function add(a,b)
return a+b;
end
add(1,2);
我想要的是这个结果3,能不能远程获取到。
作者: 痴迷的逍遥    时间: 昨天 17:30
已解决,把lua命令的返回值push到lua栈里,然后用gettop获取返回值索引,然后tostring取出就行
作者: 黄福寿    时间: 昨天 23:20
痴迷的逍遥 发表于 2025-5-23 18:43
大哥没你说的这么简单,你说的返回值是在eax里 这个eax是lua_dostring这个函数的返回值,返回0代表执行成 ...

结果压栈就可以了,lua本来就是通过栈和宿主语言通讯,压栈后再取栈内容




欢迎光临 精易论坛 (https://bbs.125.la/) Powered by Discuz! X3.4