我试图通过引入新的内置方法和功能来破解游戏(不是为了作弊),以便使用套接字与游戏进行通信。这是一个小的#34;伪代码"我想要完成的例子:
在Lua代码中,我调用my_hack()
并传递当前游戏状态:
GameState = {}
-- Game state object to be passed on
function GameState:new()
-- Data
end
local gameState = GameState:new()
-- Collect game state data and pass it to 'my_hack' ..
my_hack(gameState)
并且在my_hack
内,对象被送走了:
int my_hack(lua_State * l)
{
void* gameState= lua_topointer(l, 1);
// Send the game state:
socket->send_data(gameState);
return 0;
}
现在,最大的问题是如何将my_hack()
引入游戏?
我假设所有内置函数都必须保存在某种查找表中。由于所有Lua代码都被解释,import
等函数必须是静态可用的,对吧?如果这是正确的,那么它应该足够"找出此代码所在的 where ,以便将我的代码偷运到游戏中,这样我就可以在Lua脚本中调用my_hack()
。
应该有两个选项:第一个是构建的Lua嵌入在可执行文件中并且完全是静态的,第二个是所有Lua代码都是从DLL动态加载的。
这个问题适用于任何有关我应该在哪里以及如何继续寻找内置功能的线索的人。我已经尝试过使用Cheat Engine的一些东西,但我并不太成功。我能够作弊^ ^但这不是我想要的。
答案 0 :(得分:0)
很抱歉没有提供完整的答案,但是如果您可以提供自定义Lua VM并更改标准库,那么您应该能够更改Lua中的luaL_openlibs
方法source提供了一个包含my_hack()
的表格。
答案 1 :(得分:0)
由于Lua解释器通常被静态编译到主机可执行文件中,因此可能无法以某种方式修改解释器。
我认为你最好的办法是找到一些由主机调用的Lua代码,并从该文件中使用jQuery('.tp-caption').on('click', function(){
window.location.hash=jQuery(this).attr('href');
});
来运行你自己的代码。