我想通過引入新的內置方法和函數來使用套接字與遊戲進行通信來破解遊戲(而不是爲了作弊)。這裏是什麼,我想完成一個小的「僞碼」的例子:黑客Lua - 注入新的函數到內置的Lua中
裏面的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
等功能必須靜態可用,對吧?如果這是正確的,那麼它應該是「足夠」,以找出其中這個代碼是爲了將我的代碼走私到遊戲中,讓我可以在Lua腳本中調用my_hack()
。
應該有兩個選擇:第一個是Lua內置嵌入在可執行文件中,並且是完全靜態的,第二個是所有Lua代碼都是從DLL動態加載的。
這個問題對任何有絲毫線索的人來說都是我應該繼續尋找內置函數的地方。我已經用Cheat Engine試了一些東西,但我並不太成功。我能夠作弊^^,但這不是我正在尋找的。
我不太清楚,如果我理解,但這聽起來有點不可能。遊戲開發者當時編譯了他們自己的Lua版本並將其打包到遊戲中。聽起來相當沉重,試圖用編譯後的遊戲替換他們的Lua虛擬機。 – displayname