lua502/lua/gm9_internal/main.cpp
2020-02-25 05:09:07 +02:00

45 lines
No EOL
1.2 KiB
C++

#include <Windows.h>
#include <stdlib.h>
#include "sigscan.h"
extern "C" {
#include "lua.h"
#include "lauxlib.h"
#include "lstate.h"
}
#define GETLUAINTERFACE_SIG "\xA1\x00\x00\x00\x00\xC3\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\x81\xEC\x00\x00\x00\x00"
#define GETLUAINTERFACE_MASK "x????xxxxxxxxxxxxx????"
class CLuaInterface
{
public:
lua_State* m_pL;
};
CLuaInterface* g_pLuaInterface;
DECLARE_SIGSCAN(g_pLuaInterface,"server.dll",GETLUAINTERFACE_SIG,GETLUAINTERFACE_MASK,1,SigScan::CSigScan::SIG_VARIABLE);
DWORD WINAPI StartThread(LPVOID lpArg)
{
SigScan::Scan();
const char* pLua = "Msg(string.format(\"Hello World\\n\"))";
lua_pushnumber(g_pLuaInterface->m_pL,sizeof(lua_State));
lua_setglobal(g_pLuaInterface->m_pL,"lua_State__sizeof");
if(luaL_loadbuffer(g_pLuaInterface->m_pL,pLua,strlen(pLua),"gm9_internal"))
{
const char* pErr = lua_tostring(g_pLuaInterface->m_pL,-1);
lua_pop(g_pLuaInterface->m_pL,1);
MessageBoxA(NULL,pErr,"Lua Error",MB_ICONHAND);
}
else lua_pcall(g_pLuaInterface->m_pL,0,0,0);
return 0;
}
BOOL APIENTRY DllMain(HINSTANCE hDll,DWORD fdwReason,LPVOID lpArg)
{
if(fdwReason==DLL_PROCESS_ATTACH)
CreateThread(0,0,StartThread,0,0,0);
return TRUE;
}