Ezz7

Untitled

Sep 7th, 2017
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.71 KB | None | 0 0
  1. /*
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #define _WIN32_WINNT _WIN32_WINNT_WINXP
  4. #define _WINSOCK_DEPRECATED_NO_WARNINGS
  5. #define WIN32_LEAN_AND_MEAN
  6.  
  7. #include <Windows.h>
  8. #include <iostream>
  9. #include <string>
  10. #include <fstream>
  11. #include <iterator>
  12. #include <vector>
  13. #include <fstream>
  14. #include <sstream>
  15. #include <time.h>
  16. #include <string.h>
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <WinINet.h>
  20. #include <algorithm>
  21. #include <random>
  22. #include <ostream>
  23. #include <chrono>
  24. #include <typeinfo>
  25. #include <fcntl.h>
  26. #include <io.h>
  27. #include <urlmon.h>
  28. #include <stdio.h>
  29. #include <TlHelp32.h>
  30. #include <wininet.h>
  31. #include <Shlwapi.h>
  32. #include <tchar.h>
  33. #include <typeinfo>
  34. #include <WinInet.h>
  35. #include <fstream>
  36. #include <algorithm>
  37. #include <Psapi.h>
  38. #include <tlhelp32.h>
  39. #include <math.h>
  40. #include <cmath>
  41. #include <Windows.h>
  42. #include <iostream>
  43. #include <string>
  44. #include <Windows.h>
  45. #include <iostream>
  46. #include <vector>
  47. #include <sstream>
  48. #include <fstream>
  49. #include <istream>
  50. #include <iterator>
  51. #include <algorithm>
  52. #include <string>
  53. #include <Psapi.h>
  54. #include <tlhelp32.h>
  55. #include <Windows.h>
  56. #include <assert.h>
  57. #include <iostream>
  58. #include <thread>
  59. #include <chrono>
  60. #include <conio.h>
  61. #include <time.h>
  62. #include <map>
  63.  
  64. #pragma comment(lib, "urlmon.lib")
  65. #pragma comment(lib, "wininet.lib")
  66. #pragma comment(lib, "iphlpapi.lib")
  67. #pragma comment(lib,"ws2_32.lib")
  68. #pragma comment(lib, "wininet")
  69.  
  70. #include "stdafx.h"
  71.  
  72. #include "Scan.h"
  73. #include "Main.h"
  74. //#include "Functions.h"
  75.  
  76. #pragma once
  77.  
  78. typedef int(RLUAState);
  79. typedef int(PMSGTYPE);
  80.  
  81. #define ERRMSG 3
  82. #define WARNMSG 2
  83. #define INFOMSG 1
  84. #define NORMMSG 0
  85.  
  86. #define LUA_GLOBALSINDEX -10002
  87. #define LUA_REGISTRYINDEX -10000
  88.  
  89. #define rlua_getglobal(l,g) Rlua::rlua_getfield(l, LUA_GLOBALSINDEX, g)
  90. #define rlua_pushbool(luaState, boolean) int property = *(DWORD *)(luaState + 16); *(DWORD*)property = boolean; *(DWORD *)(property + 8) = 3; *(DWORD *)(luaState + 16) += 16;
  91. #define rlua_pushnil(a1) *(DWORD *)(*(DWORD *)(a1 + 16) + 8) = 0; *(DWORD *)(a1 + 16) += 16
  92. #define rlua_tostring(l,idx) Rlua::rlua_toLstring(l, (idx), 0)
  93. #define rlua_pop(L,n) Rlua::rlua_settop(L, -(n)-1)
  94. #define rlua_isnil(L,n) (Rlua::rlua_type(L, (n), TRUE) == 0)
  95. #define RLUA_TNONE (-1)
  96. #define RLUA_TNIL 0
  97. #define RLUA_TNUMBER 2
  98. #define RLUA_TBOOLEAN 3
  99. #define RLUA_TSTRING 4
  100. #define RLUA_TLIGHTUSERDATA 1
  101. #define RLUA_TTABLE 7
  102. #define RLUA_TUSERDATA 8
  103. #define RLUA_TFUNCTION 6
  104. #define RLUA_TPROTO 9
  105. #define RLUA_TTHREAD 5
  106. #define RLUA_TUPVALUE 10
  107.  
  108. namespace Retcheck {
  109. DWORD unprotect(DWORD addr)
  110. {
  111. BYTE* tAddr = (BYTE *)addr;
  112.  
  113. do {
  114. tAddr += 0x10;
  115. } while (!(tAddr[0] == 0x55 && tAddr[1] == 0x8B && tAddr[2] == 0xEC));
  116.  
  117. DWORD funcSz = tAddr - (BYTE*)addr;
  118.  
  119. PVOID nFunc = VirtualAlloc(NULL, funcSz, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
  120. if (nFunc == NULL)
  121. return addr;
  122.  
  123. memcpy(nFunc, (BYTE*)addr, funcSz);
  124.  
  125. DWORD pos = (DWORD)nFunc;
  126. BOOL valid = false;
  127. do {
  128. if (*(BYTE*)pos == 0x72 && *(BYTE*)(pos + 0x2) == 0xA1 && *(BYTE*)(pos + 0x7) == 0x8B) {
  129. memcpy((void*)pos, "\xEB", 1);
  130.  
  131. DWORD cNFunc = (DWORD)nFunc;
  132. do {
  133. if (*(BYTE*)cNFunc == 0xE8)
  134. {
  135. DWORD tFunc = addr + (cNFunc - (DWORD)nFunc);
  136. DWORD oFunc = (tFunc + *(DWORD*)(tFunc + 1)) + 5;
  137.  
  138. if (oFunc % 16 == 0)
  139. {
  140. DWORD rebFAddr = oFunc - cNFunc - 5;
  141. *(DWORD*)(cNFunc + 1) = rebFAddr;
  142. }
  143. cNFunc += 5;
  144. }
  145. else
  146. cNFunc += 1;
  147. } while (cNFunc - (DWORD)nFunc < funcSz);
  148.  
  149. valid = true;
  150. }
  151. pos += 1;
  152. } while (pos < (DWORD)nFunc + funcSz);
  153.  
  154. if (!valid) {
  155. VirtualFree(nFunc, funcSz, MEM_RELEASE);
  156. return addr;
  157. }
  158.  
  159. return (DWORD)nFunc;
  160. }
  161. }
  162.  
  163.  
  164. namespace Rlua {
  165.  
  166. // Use Setup Like
  167. // int ScriptContextVFTable = (int)GetModuleHandle(0) + 0x111B4B4;
  168. // int GlobalState = (int)GetModuleHandle(0) + 0x632420;
  169.  
  170. // You Can Replace This With Adresses But Will Take Longer To Update
  171. typedef void(__cdecl *Lua_getfield)(RLUAState lst, int index, const char *k);
  172. Lua_getfield rlua_getfield = (Lua_getfield)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x83\xEC\x10\x53\x56\x8B\x75\x08\x57\xFF\x75\x0C\x56\xE8\x00\x00\x00\x00\x8B\x55\x10\x83\xC4\x08\x8B\xCA\x8B\xF8\x8D\x59\x01\x8A\x01\x41\x84\xC0\x75\xF9\x2B\xCB\x51\x52\x56\xE8\x00\x00\x00\x00\xFF\x76\x10 xxxxxxxxxxxxxxxxx????xxxxxxxxxxxxxxxxxxxxxxxxxx????xxx"));
  173. // DONE ^
  174. // Example: int rlua_getfield = (int)GetModuleHandle(0) + 0x111B4B4; Instead Of ^
  175. // get Field
  176. typedef void(__cdecl *Lua_settop)(RLUAState lst, int index);
  177. Lua_settop rlua_settop = (Lua_settop)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x8B\x4D\x0C\x8B\x55\x08\x85\xC9\x78\x35", "xxxxxxxxxxxxx"));//done
  178. //settop
  179. typedef void(__cdecl *Lua_pushstring)(RLUAState lst, const char *s);
  180. Lua_pushstring rlua_pushstring = (Lua_pushstring)aobscan::scan("\x55\x8B\xEC\x8B\x55\x0C\x85\xD2\x75\x0D", "xxxxxxxxxx");
  181. //pushstring
  182.  
  183. // One here
  184. // typedef void(__cdecl *RLua_pushlstring)(RLUAState lst, const char *s, size_t length);
  185. // RLua_pushlstring rlua_pushlstring = (RLua_pushlstring)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x57\x8B\x7D\x08\x8B\x4F\x08\x8B\x44\x39\x60\x3B\x44\x39\x54\x72\x09\x57\xE8\x00\x00\x00\x00\x83\xC4\x04\x56\xFF\x75\x10\x8B\x77\x10\xFF\x75\x0C\x57\xE8\x00\x00\x00\x00\x89\x06\xC7\x46\x00\x00\x00\x00\x00\x83\x47\x10\x10\xA1\x00\x00\x00\x00\x8B\x4D\x04\x83\xC4\x0C\x2B\xC8\x5E\x3B\x0D\x00\x00\x00\x00\x72\x39\xA1\x00\x00\x00\x00\x8B\x4D\x04\x2B\xC8\x3B\x0D\x00\x00\x00\x00\x72\x27\xA1\x00\x00\x00\x00\x81\x0D\x00\x00\x00\x00\x00\x00\x00\x00\x57\xA3\x00\x00\x00\x00\xC7\x05\x00\x00\x00\x00\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x83\xC4\x04\x5F\x5D\xC3", "xxxxxxxxxxxxxxxxxxxxxx????xxxxxxxxxxxxxxx????xxxx?????xxxxx????xxxxxxxxxxx????xxx????xxxxxxx????xxx????xx????????xx????xx????????x????xxxxxx"));
  186. // One here
  187.  
  188.  
  189. typedef void(__cdecl *Lua_pushvalue)(RLUAState lst, int index);
  190. Lua_pushvalue rlua_pushvalue = (Lua_pushvalue)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\xFF\x75\x0C\x8B\x75\x08\x56\xE8\x00\x00\x00\x00\x8B\x56\x0C\x83\xC4\x08", "xxxxxxxxxxxx????xxxxxx"));
  191.  
  192. typedef int(__cdecl *Lua_pcall)(RLUAState lst, int nargs, int nresults, int errfunc);
  193. Lua_pcall rlua_pcall = (Lua_pcall)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x8B\x45\x14\x83\xEC\x08\x53\x56", "xxxxxxxxxxx"));
  194.  
  195. typedef void(__cdecl *Lua_setfield)(RLUAState lst, int index, const char *k);
  196. Lua_setfield rlua_setfield = (Lua_setfield)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x83\xEC\x10\x53\x56\x8B\x75\x08\x57\xFF\x75\x0C\x56\xE8\x00\x00\x00\x00\x8B\x55\x10\x83\xC4\x08\x8B\xCA\x8B\xF8\x8D\x59\x01\x8A\x01\x41\x84\xC0\x75\xF9\x2B\xCB\x51\x52\x56\xE8\x00\x00\x00\x00\x89\x45\xF0", "xxxxxxxxxxxxxxxxx????xxxxxxxxxxxxxxxxxxxxxxxxxx????xxx"));
  197.  
  198. typedef void(__cdecl *Lua_pushnumber)(RLUAState lst, double n);
  199. Lua_pushnumber rlua_pushnumber = (Lua_pushnumber)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x8B\x55\x08\x0F\x28\x15", "xxxxxxxxx"));
  200.  
  201. typedef void(__cdecl *Lua_pushcclosure)(RLUAState state, int func, int idx);
  202. // Lua_pushcclosure rlua_pushcclosure = (Lua_pushcclosure)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x8B\x4E\x08\x8B\x44\x0E\x60", "xxxxxxxxxxxxxx"));
  203. // One here
  204.  
  205. typedef const char*(__cdecl *Lua_ToLString)(RLUAState lst, int idx, size_t *len);
  206. Lua_ToLString rlua_toLstring = (Lua_ToLString)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x57\xFF\x75\x0C\x56\xE8\x00\x00\x00\x00\x8B\xF8", "xxxxxxxxxxxxx????xx"));
  207.  
  208. typedef bool(__cdecl *Lua_toBoolean)(RLUAState lst, int idx);
  209. // Lua_toBoolean rlua_toBool = (Lua_toBoolean)aobscan::scan("\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x64\x89\x25\x00\x00\x00\x00\x83\xEC\x38\x53\x56\x57\x8B\xD9\x89\x65\xF0\x89\x5D\xEC", "xxxxxx????xx????xxxx????xxxxxxxxxxxxxx");
  210. // One here
  211.  
  212. typedef int(__cdecl *Lua_tonumber)(RLUAState lst, int idx);
  213. // Lua_tonumber rlua_tonumber = (Lua_tonumber)aobscan::scan("\x55\x8B\xEC\x83\xEC\x10\xFF\x75\x0C\xFF\x75\x08\xE8", "xxxxxxxxxxxxx");
  214. // One here
  215.  
  216. typedef void*(__cdecl *Lua_touserdata)(RLUAState lst, int a1);
  217. // Lua_touserdata rlua_touserdata = (Lua_touserdata)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\xFF\x75\x0C\xFF\x75\x08\xE8\x00\x00\x00\x00\x8B\x48\x08\x83\xC4\x08\x49", "xxxxxxxxxx????xxxxxxx"));
  218. // One here
  219.  
  220. typedef void*(__cdecl *Lua_newuserdata)(RLUAState lst, int a1);
  221. // Lua_newuserdata rlua_newuserdata = (Lua_newuserdata)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x57\x8B\x4E\x08\x8B\x44\x31\x60\x3B\x44\x31\x54\x72\x09\x56\xE8\x00\x00\x00\x00\x83\xC4\x04\x8B\x46\x0C", "xxxxxxxxxxxxxxxxxxxxxxx????xxxxxx"));
  222. // One here
  223.  
  224. typedef int(__cdecl *Lua_newthread)(RLUAState lst);
  225. // Lua_newthread rlua_newthread = (Lua_newthread)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x64\x89\x25\x00\x00\x00\x00\x51\x56\x8B\x75\x08\x57\x8B\x4E\x08", "xxxxxx????xx????xxxx????xxxxxxxxx"));
  226. // One here
  227.  
  228. typedef void*(__cdecl *Lua_setmetatable)(RLUAState lst, int idx);
  229. //rlua_setmetatable = (Lua_setmetatable)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x53\x56\x57\xFF\x75\x0C\x8B\x7D\x08", "xxxxxxxxxxxx"));
  230. // One here
  231.  
  232. typedef void(__cdecl *Lua_getmetatable)(RLUAState lst, int idx);
  233. // Lua_getmetatable rlua_getmetatable = (Lua_getmetatable)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x57\xFF\x75\x0C\x8B\x7D\x08\x57\xE8\x00\x00\x00\x00\x83\xC4\x08", "xxxxxxxxxxxxx????xxx"));
  234. // One here
  235.  
  236. typedef int(__cdecl *Lua_getmetafield)(RLUAState lst, int idx, const char* e);
  237. // Lua_getmetafield rlua_getmetafield = (Lua_getmetafield)aobscan::scan("\x55\x8B\xEC\x56\xFF\x75\x0C\x8B\x75\x08\x56\xE8\x00\x00\x00\x00\x83\xC4\x08\x85\xC0\x74\x57", "xxxxxxxxxxxx????xxxxxxx");
  238. // One here
  239.  
  240. typedef int(__cdecl *Lua_type)(RLUAState lst, int idx, bool type);
  241. // Lua_type rlua_type = (Lua_type)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\xFF\x75\x0C\xFF\x75\x08\xE8\x00\x00\x00\x00\x83\xC4\x08\x3D\x00\x00\x00\x00\x75\x05", "xxxxxxxxxx????xxxx????xx"));
  242.  
  243. typedef int(__cdecl *Lua_replace)(RLUAState lst, int idx);
  244. // Lua_replace rlua_replace = (Lua_replace)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x57\x8B\x7D\x0C\x81\xFF", "xxxxxxxxxxxxx"));
  245. // One here
  246.  
  247. typedef int(__cdecl *Lua_rawgeti)(RLUAState lst, int idx, int a3);
  248. // Lua_rawgeti rlua_rawgeti = (Lua_rawgeti)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\xFF\x75\x0C\x8B\x75\x08\x56\xE8\x00\x00\x00\x00\xFF\x75\x10", "xxxxxxxxxxxx????xxx"));
  249. // One here
  250.  
  251. typedef int(__cdecl *Lua_objlen)(RLUAState lst, int idx);
  252. // Lua_objlen rlua_objlen = (Lua_objlen)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x57\xFF\x75\x0C\x8B\x7D\x08\x57\xE8\x00\x00\x00\x00\x8B\xF0", "xxxxxxxxxxxxx????xx"));
  253. // One here
  254.  
  255. typedef int(__cdecl *Lua_next)(RLUAState lst, int idx);
  256. Lua_next rlua_next = (Lua_next)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x83\xEC\x18\x56\x8B\x75\x08\x57\xFF\x75\x0C", "xxxxxxxxxxxxxx"));
  257.  
  258. typedef int(__cdecl *Lua_ref)(RLUAState lst, int idx);
  259. // Lua_ref rlua_ref = (Lua_ref)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x57\x8B\x7D\x0C\x8D\x87\x00\x00\x00\x00\x3D\x00\x00\x00\x00\x77\x0C\x8B\x46\x10\x2B\x46\x1C\x47\xC1\xF8\x04\x03\xF8\x8B\x46\x10", "xxxxxxxxxxxxx????x????xxxxxxxxxxxxxxxxx"));
  260. // One here
  261.  
  262. typedef int(__cdecl *Lua_pushlightuserdata)(RLUAState lst, int idx);
  263. // Lua_pushlightuserdata rlua_pushlightuserdata = (Lua_pushlightuserdata)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x8B\x55\x08\x8B\x45\x0C\x8B\x4A\x10", "xxxxxxxxxxxx"));
  264. // One here
  265.  
  266. typedef int*(__cdecl *Lua_topointer)(RLUAState state, int idx);
  267. // Lua_topointer rlua_topointer = (Lua_topointer)aobscan::scan("\x55\x8B\xEC\xFF\x75\x0C\xFF\x75\x08\xE8\x00\x00\x00\x00\x8B\x48\x08\x49", "xxxxxxxxxx????xxxx");
  268. // One here
  269.  
  270. typedef int(__cdecl *Lua_tonumber)(RLUAState lst, int a2);
  271. // Lua_tonumber rlua_tonumber = (Lua_tonumber)aobscan::scan("\x55\x8B\xEC\x83\xEC\x10\xFF\x75\x0C\xFF\x75\x08", "xxxxxxxxxxxx");
  272. // One here
  273.  
  274. typedef int*(__cdecl *Lua_newtable)(RLUAState lst, int a1, int a2);
  275. // Lua_newtable rlua_createtable = (Lua_newtable)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x57\x8B\x7D\x08\x8B\x4F\x08\x8B\x44\x39\x60\x3B\x44\x39\x54\x72\x09\x57\xE8\x00\x00\x00\x00\x83\xC4\x04\x56\xFF\x75\x10\x8B\x77\x10\xFF\x75\x0C\x57\xE8\x00\x00\x00\x00\x89\x06\xC7\x46\x00\x00\x00\x00\x00\x83\x47\x10\x10\xA1\x00\x00\x00\x00\x8B\x4D\x04\x83\xC4\x0C\x2B\xC8\x5E\x3B\x0D\x00\x00\x00\x00\x72\x39\xA1\x00\x00\x00\x00\x8B\x4D\x04\x2B\xC8\x3B\x0D\x00\x00\x00\x00\x72\x27\xA1\x00\x00\x00\x00\x81\x0D\x00\x00\x00\x00\x00\x00\x00\x00\x57\xA3\x00\x00\x00\x00\xC7\x05\x00\x00\x00\x00\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x83\xC4\x04\x5F\x5D\xC3", "xxxxxxxxxxxxxxxxxxxxxx????xxxxxxxxxxxxxxx????xxxx?????xxxxx????xxxxxxxxxxx????xxx????xxxxxxx????xxx????xx????????xx????xx????????x????xxxxxx"));
  276. // One here
  277.  
  278. typedef int*(__cdecl *Lua_settable)(RLUAState lst, int a2);
  279. // Lua_settable rlua_settable = (Lua_settable)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\xFF\x75\x0C\x8B\x75\x08\x56\xE8\x00\x00\x00\x00\x8B\x56\x10", "xxxxxxxxxxxx????xxx"));
  280. // One here
  281.  
  282. typedef void*(__cdecl *Lua_pushinteger)(RLUAState lst, int a2);
  283. // Lua_pushinteger rlua_pushinteger = (Lua_pushinteger)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x66\x0F\x6E\x4D\x00\x8B\x55\x08", "xxxxxxx?xxx"));
  284. // One here
  285.  
  286. typedef void*(__cdecl *Lua_pushthread)(RLUAState lst, int thread);
  287. //Lua_pushthread rlua_pushthread = (Lua_pushthread)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x8B\x46\x10", "xxxxxxxxxx"));
  288. // One here
  289.  
  290. typedef int(__cdecl *Lua_tointeger)(RLUAState lst, int idx);
  291. // Lua_tointeger rlua_tointeger = (Lua_tointeger)aobscan::scan("\x55\x8B\xEC\x83\xEC\x18\xFF\x75\x0C\xFF\x75\x08", "xxxxxxxxxxxx");
  292. // One here
  293.  
  294. typedef void*(__cdecl *Lua_concat)(RLUAState lst, int idx);
  295. // Lua_concat rlua_concat = (Lua_concat)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x0C\x57\x8B\x7D\x08\x83\xFE\x02", "xxxxxxxxxxxxxx"));
  296. // One here
  297.  
  298. typedef void*(__cdecl *Lua_typerror)(RLUAState lst, int idx);
  299. // Lua_typerror rlua_typerror = (Lua_typerror)aobscan::scan("\x55\x8B\xEC\x56\xFF\x75\x0C\x8B\x75\x08\x56\xE8\x00\x00\x00\x00\x50", "xxxxxxxxxxxx????x");
  300. // One here
  301.  
  302. typedef void*(__cdecl *Lua_insert)(RLUAState lst, int idx);
  303. // Lua_insert rlua_insert = (Lua_insert)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x57\xFF\x75\x0C\x8B\x7D\x08\x57\xE8\x00\x00\x00\x00\x8B\x57\x10", "xxxxxxxxxxxxx????xxx"));
  304. // One here
  305.  
  306. typedef int(__thiscall *GlOpen)(int a1, int a2);
  307. // GlOpen GlobalStateOpen = (GlOpen)aobscan::scan("\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x64\x89\x25\x00\x00\x00\x00\x83\xEC\x4C\x53\x56\x8B\xD9\x57\x89\x5D\xE0", "xxxxxx????xx????xxxx????xxxxxxxxxxx");
  308. // One here
  309.  
  310. typedef int(__thiscall *OState)(int a1);
  311. //OState OpenState = (OState)aobscan::scan("\x55\x8B\xEC\xA1\x00\x00\x00\x00\x85\xC0\x75\x05\xE8\x00\x00\x00\x00\xFF\x75\x08\x8B\xC8\xE8\x00\x00\x00\x00\x5D\xC3", "xxxx????xxxxx????xxxxxx????xx");
  312. // One here
  313.  
  314. // when i mean One Here It mean There is a // In The Line Above
  315. int rlua_gettop(RLUAState state) {
  316. return (*(DWORD *)(state + 16) - *(DWORD *)(state + 28)) >> 4;
  317. }
  318. }
  319.  
  320. void rlua_print(PMSGTYPE out, const char * msgfmt, ...)
  321. {
  322. va_list args;
  323. va_start(args, msgfmt);
  324. char buff[1024];
  325. vsnprintf_s(buff, sizeof(buff), msgfmt, args);
  326. ((int(*)(int, int, const char*, ...))aobscan::scan("\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x64\x89\x25\x00\x00\x00\x00\x83\xEC\x30\x8D\x45\x14", "xxxxxx????xx????xxxx????xxxxxx"))(((int(__cdecl*)())aobscan::scan("\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x64\x89\x25\x00\x00\x00\x00\x51\x64\xA1\x00\x00\x00\x00\x8B\x0D\x00\x00\x00\x00\x8B\x0C\x88\xA1\x00\x00\x00\x00\x3B\x81\x00\x00\x00\x00\x7E\x4F", "xxxxxx????xx????xxxx????xxx????xx????xxxx????xx????xx"))(), out, buff);
  327. va_end(args);
  328. }
  329. */
  330. #define _CRT_SECURE_NO_WARNINGS
  331. #define _WIN32_WINNT _WIN32_WINNT_WINXP
  332. #define _WINSOCK_DEPRECATED_NO_WARNINGS
  333. #define WIN32_LEAN_AND_MEAN
  334.  
  335. #include <Windows.h>
  336. #include <iostream>
  337. #include <string>
  338. #include <fstream>
  339. #include <iterator>
  340. #include <vector>
  341. #include <fstream>
  342. #include <sstream>
  343. #include <time.h>
  344. #include <string.h>
  345. #include <stdio.h>
  346. #include <stdlib.h>
  347. #include <WinINet.h>
  348. #include <algorithm>
  349. #include <random>
  350. #include <ostream>
  351. #include <chrono>
  352. #include <typeinfo>
  353. #include <fcntl.h>
  354. #include <io.h>
  355. #include <urlmon.h>
  356. #include <stdio.h>
  357. #include <TlHelp32.h>
  358. #include <wininet.h>
  359. #include <Shlwapi.h>
  360. #include <tchar.h>
  361. #include <typeinfo>
  362. #include <WinInet.h>
  363. #include <fstream>
  364. #include <algorithm>
  365. #include <Psapi.h>
  366. #include <tlhelp32.h>
  367. #include <math.h>
  368. #include <cmath>
  369. #include <Windows.h>
  370. #include <iostream>
  371. #include <string>
  372. #include <Windows.h>
  373. #include <iostream>
  374. #include <vector>
  375. #include <sstream>
  376. #include <fstream>
  377. #include <istream>
  378. #include <iterator>
  379. #include <algorithm>
  380. #include <string>
  381. #include <Psapi.h>
  382. #include <tlhelp32.h>
  383. #include <Windows.h>
  384. #include <assert.h>
  385. #include <iostream>
  386. #include <thread>
  387. #include <chrono>
  388. #include <conio.h>
  389. #include <time.h>
  390. #include <map>
  391.  
  392. #pragma comment(lib, "urlmon.lib")
  393. #pragma comment(lib, "wininet.lib")
  394. #pragma comment(lib, "iphlpapi.lib")
  395. #pragma comment(lib,"ws2_32.lib")
  396. #pragma comment(lib, "wininet")
  397.  
  398. #include "stdafx.h"
  399.  
  400. #include "Scan.h"
  401. #include "Main.h"
  402. //#include "Functions.h"
  403.  
  404. #pragma once
  405.  
  406. typedef int(RLUAState);
  407. typedef int(PMSGTYPE);
  408.  
  409. #define ERRMSG 3
  410. #define WARNMSG 2
  411. #define INFOMSG 1
  412. #define NORMMSG 0
  413.  
  414. #define LUA_GLOBALSINDEX -10002
  415. #define LUA_REGISTRYINDEX -10000
  416.  
  417. #define rlua_getglobal(l,g) Rlua::rlua_getfield(l, LUA_GLOBALSINDEX, g)
  418. #define rlua_pushbool(luaState, boolean) int property = *(DWORD *)(luaState + 16); *(DWORD*)property = boolean; *(DWORD *)(property + 8) = 3; *(DWORD *)(luaState + 16) += 16;
  419. #define rlua_pushnil(a1) *(DWORD *)(*(DWORD *)(a1 + 16) + 8) = 0; *(DWORD *)(a1 + 16) += 16
  420. #define rlua_tostring(l,idx) Rlua::rlua_toLstring(l, (idx), 0)
  421. #define rlua_pop(L,n) Rlua::rlua_settop(L, -(n)-1)
  422. #define rlua_isnil(L,n) (Rlua::rlua_type(L, (n), TRUE) == 0)
  423. #define RLUA_TNONE (-1)
  424. #define RLUA_TNIL 0
  425. #define RLUA_TNUMBER 2
  426. #define RLUA_TBOOLEAN 3
  427. #define RLUA_TSTRING 4
  428. #define RLUA_TLIGHTUSERDATA 1
  429. #define RLUA_TTABLE 7
  430. #define RLUA_TUSERDATA 8
  431. #define RLUA_TFUNCTION 6
  432. #define RLUA_TPROTO 9
  433. #define RLUA_TTHREAD 5
  434. #define RLUA_TUPVALUE 10
  435. /*
  436. namespace Retcheck {
  437. DWORD unprotect(DWORD addr)
  438. {
  439. BYTE* tAddr = (BYTE *)addr;
  440.  
  441. do {
  442. tAddr += 0x10;
  443. } while (!(tAddr[0] == 0x55 && tAddr[1] == 0x8B && tAddr[2] == 0xEC));
  444.  
  445. DWORD funcSz = tAddr - (BYTE*)addr;
  446.  
  447. PVOID nFunc = VirtualAlloc(NULL, funcSz, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
  448. if (nFunc == NULL)
  449. return addr;
  450.  
  451. memcpy(nFunc, (BYTE*)addr, funcSz);
  452.  
  453. DWORD pos = (DWORD)nFunc;
  454. BOOL valid = false;
  455. do {
  456. if (*(BYTE*)pos == 0x72 && *(BYTE*)(pos + 0x2) == 0xA1 && *(BYTE*)(pos + 0x7) == 0x8B) {
  457. memcpy((void*)pos, "\xEB", 1);
  458.  
  459. DWORD cNFunc = (DWORD)nFunc;
  460. do {
  461. if (*(BYTE*)cNFunc == 0xE8)
  462. {
  463. DWORD tFunc = addr + (cNFunc - (DWORD)nFunc);
  464. DWORD oFunc = (tFunc + *(DWORD*)(tFunc + 1)) + 5;
  465.  
  466. if (oFunc % 16 == 0)
  467. {
  468. DWORD rebFAddr = oFunc - cNFunc - 5;
  469. *(DWORD*)(cNFunc + 1) = rebFAddr;
  470. }
  471. cNFunc += 5;
  472. }
  473. else
  474. cNFunc += 1;
  475. } while (cNFunc - (DWORD)nFunc < funcSz);
  476.  
  477. valid = true;
  478. }
  479. pos += 1;
  480. } while (pos < (DWORD)nFunc + funcSz);
  481.  
  482. if (!valid) {
  483. VirtualFree(nFunc, funcSz, MEM_RELEASE);
  484. return addr;
  485. }
  486.  
  487. return (DWORD)nFunc;
  488. }
  489. }
  490. */
  491. namespace Retcheck {
  492. DWORD unprotect(DWORD addr)
  493. {
  494. BYTE* tAddr = (BYTE *)addr;
  495.  
  496. do {
  497. tAddr += 0x10;
  498. } while (!(tAddr[0] == 0x55 && tAddr[1] == 0x8B && tAddr[2] == 0xEC));
  499.  
  500. DWORD funcSz = tAddr - (BYTE*)addr;
  501.  
  502. PVOID nFunc = VirtualAlloc(NULL, funcSz, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
  503. if (nFunc == NULL)
  504. return addr;
  505.  
  506. memcpy(nFunc, (void*)addr, funcSz);
  507.  
  508. DWORD pos = (DWORD)nFunc;
  509. BOOL valid = false;
  510. do {
  511. if (*(BYTE*)pos == 0x72 && *(BYTE*)(pos + 0x2) == 0xA1 && (*(BYTE*)(pos + 0x7)) == 0x8B) {
  512. memcpy((void*)pos, "\xEB", 1);
  513.  
  514. DWORD cNFunc = (DWORD)nFunc;
  515. do {
  516. if (*(BYTE*)cNFunc == 0xE8)
  517. {
  518. DWORD tFunc = addr + (cNFunc - (DWORD)nFunc);
  519. DWORD oFunc = (tFunc + *(DWORD*)(tFunc + 1)) + 5;
  520.  
  521. if (oFunc % 16 == 0)
  522. {
  523. DWORD realCAddr = oFunc - cNFunc - 5;
  524. *(DWORD*)(cNFunc + 1) = realCAddr;
  525. }
  526. cNFunc += 5;
  527. }
  528. else
  529. cNFunc += 1;
  530. } while (cNFunc - (DWORD)nFunc < funcSz);
  531.  
  532. valid = true;
  533. }
  534. pos += 1;
  535. } while (pos < (DWORD)nFunc + funcSz);
  536.  
  537. if (!valid) {
  538. VirtualFree(nFunc, funcSz, MEM_RELEASE);
  539. return addr;
  540. }
  541.  
  542. return (DWORD)nFunc;
  543. }
  544. }
  545. namespace Rlua {
  546. typedef void(__cdecl *Lua_getfield)(RLUAState lst, int index, const char *k);
  547. //Lua_getfield rlua_getfield = (Lua_getfield)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x83\xEC\x10\x53\x56\x8B\x75\x08\x57\xFF\x75\x0C\x56\xE8\x00\x00\x00\x00\x8B\x55\x10\x83\xC4\x08\x8B\xCA\x8B\xF8\x8D\x59\x01\x8A\x01\x41\x84\xC0\x75\xF9\x2B\xCB\x51\x52\x56\xE8\x00\x00\x00\x00\xFF\x76\x10", "xxxxxxxxxxxxxxxxx????xxxxxxxxxxxxxxxxxxxxxxxxxx????xxx"));
  548. Lua_getfield rlua_getfield = (Lua_getfield)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x6A\x01\xFF\x75\x10", "xxxxxxxx"));
  549. // The One Above Is The Fixed One
  550. typedef void(__cdecl *Lua_settop)(RLUAState lst, int index);
  551. Lua_settop rlua_settop = (Lua_settop)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x8B\x55\x0C\x85\xD2\x78\x38", "xxxxxxxxxx"));//done
  552.  
  553. typedef void(__cdecl *Lua_pushstring)(RLUAState lst, const char *s);
  554. Lua_pushstring rlua_pushstring = (Lua_pushstring)aobscan::scan("\x55\x8B\xEC\x8B\x55\x0C\x85\xD2\x75\x0D", "xxxxxxxxxx");
  555.  
  556. //typedef void(__cdecl *RLua_pushlstring)(RLUAState lst, const char *s, size_t length);
  557. //RLua_pushlstring rlua_pushlstring = (RLua_pushlstring)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x57\x8B\x7D\x08\x8B\x4F\x08\x8B\x44\x39\x60\x3B\x44\x39\x54\x72\x09\x57\xE8\x00\x00\x00\x00\x83\xC4\x04\x56\xFF\x75\x10\x8B\x77\x10\xFF\x75\x0C\x57\xE8\x00\x00\x00\x00\x89\x06\xC7\x46\x00\x00\x00\x00\x00\x83\x47\x10\x10\xA1\x00\x00\x00\x00\x8B\x4D\x04\x83\xC4\x0C\x2B\xC8\x5E\x3B\x0D\x00\x00\x00\x00\x72\x39\xA1\x00\x00\x00\x00\x8B\x4D\x04\x2B\xC8\x3B\x0D\x00\x00\x00\x00\x72\x27\xA1\x00\x00\x00\x00\x81\x0D\x00\x00\x00\x00\x00\x00\x00\x00\x57\xA3\x00\x00\x00\x00\xC7\x05\x00\x00\x00\x00\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x83\xC4\x04\x5F\x5D\xC3", "xxxxxxxxxxxxxxxxxxxxxx????xxxxxxxxxxxxxxx????xxxx?????xxxxx????xxxxxxxxxxx????xxx????xxxxxxx????xxx????xx????????xx????xx????????x????xxxxxx"));
  558.  
  559. typedef void(__cdecl *Lua_pushvalue)(RLUAState lst, int index);
  560. Lua_pushvalue rlua_pushvalue = (Lua_pushvalue)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\xFF\x75\x0C\x8B\x75\x08\x56\xE8\x00\x00\x00\x00\x8B\x56\x10\x83\xC4\x08", "xxxxxxxxxxxx????xxxxxx"));
  561.  
  562. typedef int(__cdecl *Lua_pcall)(RLUAState lst, int nargs, int nresults, int errfunc);
  563. Lua_pcall rlua_pcall = (Lua_pcall)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x8B\x45\x14\x83\xEC\x08\x57", "xxxxxxxxxx"));
  564.  
  565. typedef void(__cdecl *Lua_setfield)(RLUAState lst, int index, const char *k);
  566. Lua_setfield rlua_setfield = (Lua_setfield)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x83\xEC\x10\x53\x56\x8B\x75\x08\x57\xFF\x75\x0C\x56\xE8\x00\x00\x00\x00\x8B\x55\x10\x83\xC4\x08\x8B\xCA\x8B\xF8\x8D\x59\x01\x8A\x01\x41\x84\xC0\x75\xF9\x2B\xCB\x51\x52\x56\xE8\x00\x00\x00\x00\x89\x45\xF0", "xxxxxxxxxxxxxxxxx????xxxxxxxxxxxxxxxxxxxxxxxxxx????xxx"));
  567.  
  568. typedef void(__cdecl *Lua_pushnumber)(RLUAState lst, double n);
  569. Lua_pushnumber rlua_pushnumber = (Lua_pushnumber)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x8B\x4D\x08\x0F\x28\x15", "xxxxxxxxx"));
  570.  
  571. typedef void(__cdecl *Lua_pushcclosure)(RLUAState state, int func, int idx);
  572. //Lua_pushcclosure rlua_pushcclosure = (Lua_pushcclosure)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x8B\x4E\x08\x8B\x44\x0E\x60", "xxxxxxxxxxxxxx"));
  573.  
  574. typedef const char*(__cdecl *Lua_ToLString)(RLUAState lst, int idx, size_t *len);
  575. Lua_ToLString rlua_toLstring = (Lua_ToLString)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\xB9\x00\x00\x00\x00\x66\xFF\x46\x34", "xxxxxxxx????xxxx"));
  576.  
  577. typedef bool(__cdecl *Lua_toBoolean)(RLUAState lst, int idx);
  578. //Lua_toBoolean rlua_toBool = (Lua_toBoolean)aobscan::scan("\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x64\x89\x25\x00\x00\x00\x00\x83\xEC\x38\x53\x56\x57\x8B\xD9\x89\x65\xF0\x89\x5D\xEC", "xxxxxx????xx????xxxx????xxxxxxxxxxxxxx");
  579.  
  580. typedef int(__cdecl *Lua_tonumber)(RLUAState lst, int idx);
  581. //Lua_tonumber rlua_tonumber = (Lua_tonumber)aobscan::scan("\x55\x8B\xEC\x83\xEC\x10\xFF\x75\x0C\xFF\x75\x08\xE8", "xxxxxxxxxxxxx");
  582.  
  583. typedef void*(__cdecl *Lua_touserdata)(RLUAState lst, int a1);
  584. //Lua_touserdata rlua_touserdata = (Lua_touserdata)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\xFF\x75\x0C\xFF\x75\x08\xE8\x00\x00\x00\x00\x8B\x48\x08\x83\xC4\x08\x49", "xxxxxxxxxx????xxxxxxx"));
  585.  
  586. typedef void*(__cdecl *Lua_newuserdata)(RLUAState lst, int a1);
  587. //Lua_newuserdata rlua_newuserdata = (Lua_newuserdata)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x57\x8B\x4E\x08\x8B\x44\x31\x60\x3B\x44\x31\x54\x72\x09\x56\xE8\x00\x00\x00\x00\x83\xC4\x04\x8B\x46\x0C", "xxxxxxxxxxxxxxxxxxxxxxx????xxxxxx"));
  588.  
  589. typedef int(__cdecl *Lua_newthread)(RLUAState lst);
  590. //Lua_newthread rlua_newthread = (Lua_newthread)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x64\x89\x25\x00\x00\x00\x00\x51\x56\x8B\x75\x08\x57\x8B\x4E\x08", "xxxxxx????xx????xxxx????xxxxxxxxx"));
  591.  
  592. typedef void*(__cdecl *Lua_setmetatable)(RLUAState lst, int idx);
  593. // rlua_setmetatable = (Lua_setmetatable)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x53\x56\x57\xFF\x75\x0C\x8B\x7D\x08", "xxxxxxxxxxxx"));
  594.  
  595. typedef void(__cdecl *Lua_getmetatable)(RLUAState lst, int idx);
  596. //Lua_getmetatable rlua_getmetatable = (Lua_getmetatable)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x57\xFF\x75\x0C\x8B\x7D\x08\x57\xE8\x00\x00\x00\x00\x83\xC4\x08", "xxxxxxxxxxxxx????xxx"));
  597.  
  598. typedef int(__cdecl *Lua_getmetafield)(RLUAState lst, int idx, const char* e);
  599. // Lua_getmetafield rlua_getmetafield = (Lua_getmetafield)aobscan::scan("\x55\x8B\xEC\x56\xFF\x75\x0C\x8B\x75\x08\x56\xE8\x00\x00\x00\x00\x83\xC4\x08\x85\xC0\x74\x57", "xxxxxxxxxxxx????xxxxxxx");
  600.  
  601. typedef int(__cdecl *Lua_type)(RLUAState lst, int idx, bool type);
  602. Lua_type rlua_type = (Lua_type)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\xFF\x75\x0C\xFF\x75\x08\xE8\x00\x00\x00\x00\x83\xC4\x08\x3D\x00\x00\x00\x00\x75\x05", "xxxxxxxxxx????xxxx????xx"));
  603.  
  604. typedef int(__cdecl *Lua_replace)(RLUAState lst, int idx);
  605. //Lua_replace rlua_replace = (Lua_replace)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x57\x8B\x7D\x0C\x81\xFF", "xxxxxxxxxxxxx"));
  606.  
  607. typedef int(__cdecl *Lua_rawgeti)(RLUAState lst, int idx, int a3);
  608. //Lua_rawgeti rlua_rawgeti = (Lua_rawgeti)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\xFF\x75\x0C\x8B\x75\x08\x56\xE8\x00\x00\x00\x00\xFF\x75\x10", "xxxxxxxxxxxx????xxx"));
  609.  
  610. typedef int(__cdecl *Lua_objlen)(RLUAState lst, int idx);
  611. //Lua_objlen rlua_objlen = (Lua_objlen)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x57\xFF\x75\x0C\x8B\x7D\x08\x57\xE8\x00\x00\x00\x00\x8B\xF0", "xxxxxxxxxxxxx????xx"));
  612.  
  613. typedef int(__cdecl *Lua_next)(RLUAState lst, int idx);
  614. Lua_next rlua_next = (Lua_next)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x83\xEC\x18\x56\x8B\x75\x08\x57\xFF\x75\x0C", "xxxxxxxxxxxxxx"));
  615.  
  616. typedef int(__cdecl *Lua_ref)(RLUAState lst, int idx);
  617. //Lua_ref rlua_ref = (Lua_ref)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x57\x8B\x7D\x0C\x8D\x87\x00\x00\x00\x00\x3D\x00\x00\x00\x00\x77\x0C\x8B\x46\x10\x2B\x46\x1C\x47\xC1\xF8\x04\x03\xF8\x8B\x46\x10", "xxxxxxxxxxxxx????x????xxxxxxxxxxxxxxxxx"));
  618.  
  619. typedef int(__cdecl *Lua_pushlightuserdata)(RLUAState lst, int idx);
  620. //Lua_pushlightuserdata rlua_pushlightuserdata = (Lua_pushlightuserdata)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x8B\x55\x08\x8B\x45\x0C\x8B\x4A\x10", "xxxxxxxxxxxx"));
  621.  
  622. typedef int*(__cdecl *Lua_topointer)(RLUAState state, int idx);
  623. //Lua_topointer rlua_topointer = (Lua_topointer)aobscan::scan("\x55\x8B\xEC\xFF\x75\x0C\xFF\x75\x08\xE8\x00\x00\x00\x00\x8B\x48\x08\x49", "xxxxxxxxxx????xxxx");
  624.  
  625. typedef int(__cdecl *Lua_tonumber)(RLUAState lst, int a2);
  626. //Lua_tonumber rlua_tonumber = (Lua_tonumber)aobscan::scan("\x55\x8B\xEC\x83\xEC\x10\xFF\x75\x0C\xFF\x75\x08", "xxxxxxxxxxxx");
  627.  
  628. typedef int*(__cdecl *Lua_newtable)(RLUAState lst, int a1, int a2);
  629. //Lua_newtable rlua_createtable = (Lua_newtable)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x57\x8B\x7D\x08\x8B\x4F\x08\x8B\x44\x39\x60\x3B\x44\x39\x54\x72\x09\x57\xE8\x00\x00\x00\x00\x83\xC4\x04\x56\xFF\x75\x10\x8B\x77\x10\xFF\x75\x0C\x57\xE8\x00\x00\x00\x00\x89\x06\xC7\x46\x00\x00\x00\x00\x00\x83\x47\x10\x10\xA1\x00\x00\x00\x00\x8B\x4D\x04\x83\xC4\x0C\x2B\xC8\x5E\x3B\x0D\x00\x00\x00\x00\x72\x39\xA1\x00\x00\x00\x00\x8B\x4D\x04\x2B\xC8\x3B\x0D\x00\x00\x00\x00\x72\x27\xA1\x00\x00\x00\x00\x81\x0D\x00\x00\x00\x00\x00\x00\x00\x00\x57\xA3\x00\x00\x00\x00\xC7\x05\x00\x00\x00\x00\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x83\xC4\x04\x5F\x5D\xC3", "xxxxxxxxxxxxxxxxxxxxxx????xxxxxxxxxxxxxxx????xxxx?????xxxxx????xxxxxxxxxxx????xxx????xxxxxxx????xxx????xx????????xx????xx????????x????xxxxxx"));
  630.  
  631. typedef int*(__cdecl *Lua_settable)(RLUAState lst, int a2);
  632. //Lua_settable rlua_settable = (Lua_settable)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\xFF\x75\x0C\x8B\x75\x08\x56\xE8\x00\x00\x00\x00\x8B\x56\x10", "xxxxxxxxxxxx????xxx"));
  633.  
  634. typedef void*(__cdecl *Lua_pushinteger)(RLUAState lst, int a2);
  635. //Lua_pushinteger rlua_pushinteger = (Lua_pushinteger)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x66\x0F\x6E\x4D\x00\x8B\x55\x08", "xxxxxxx?xxx"));
  636.  
  637. typedef void*(__cdecl *Lua_pushthread)(RLUAState lst, int thread);
  638. //Lua_pushthread rlua_pushthread = (Lua_pushthread)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x8B\x46\x10", "xxxxxxxxxx"));
  639.  
  640. typedef int(__cdecl *Lua_tointeger)(RLUAState lst, int idx);
  641. //Lua_tointeger rlua_tointeger = (Lua_tointeger)aobscan::scan("\x55\x8B\xEC\x83\xEC\x18\xFF\x75\x0C\xFF\x75\x08", "xxxxxxxxxxxx");
  642.  
  643. typedef void*(__cdecl *Lua_concat)(RLUAState lst, int idx);
  644. //Lua_concat rlua_concat = (Lua_concat)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x0C\x57\x8B\x7D\x08\x83\xFE\x02", "xxxxxxxxxxxxxx"));
  645.  
  646. typedef void*(__cdecl *Lua_typerror)(RLUAState lst, int idx);
  647. //Lua_typerror rlua_typerror = (Lua_typerror)aobscan::scan("\x55\x8B\xEC\x56\xFF\x75\x0C\x8B\x75\x08\x56\xE8\x00\x00\x00\x00\x50", "xxxxxxxxxxxx????x");
  648.  
  649. typedef void*(__cdecl *Lua_insert)(RLUAState lst, int idx);
  650. //Lua_insert rlua_insert = (Lua_insert)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x57\xFF\x75\x0C\x8B\x7D\x08\x57\xE8\x00\x00\x00\x00\x8B\x57\x10", "xxxxxxxxxxxxx????xxx"));
  651.  
  652. typedef int(__thiscall *GlOpen)(int a1, int a2);
  653. //GlOpen GlobalStateOpen = (GlOpen)aobscan::scan("\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x64\x89\x25\x00\x00\x00\x00\x83\xEC\x4C\x53\x56\x8B\xD9\x57\x89\x5D\xE0", "xxxxxx????xx????xxxx????xxxxxxxxxxx");
  654.  
  655. typedef int(__thiscall *OState)(int a1);
  656. //OState OpenState = (OState)aobscan::scan("\x55\x8B\xEC\xA1\x00\x00\x00\x00\x85\xC0\x75\x05\xE8\x00\x00\x00\x00\xFF\x75\x08\x8B\xC8\xE8\x00\x00\x00\x00\x5D\xC3", "xxxx????xxxxx????xxxxxx????xx");
  657.  
  658. int rlua_gettop(RLUAState state) {
  659. return (*(DWORD *)(state + 16) - *(DWORD *)(state + 28)) >> 4;
  660. }
  661. }
  662.  
  663. void rlua_print(PMSGTYPE out, const char * msgfmt, ...)
  664. {
  665. va_list args;
  666. va_start(args, msgfmt);
  667. char buff[1024];
  668. vsnprintf_s(buff, sizeof(buff), msgfmt, args);
  669. ((int(*)(int, int, const char*, ...))aobscan::scan("\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x64\x89\x25\x00\x00\x00\x00\x83\xEC\x30\x8D\x45\x14", "xxxxxx????xx????xxxx????xxxxxx"))(((int(__cdecl*)())aobscan::scan("\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x64\x89\x25\x00\x00\x00\x00\x51\x64\xA1\x00\x00\x00\x00\x8B\x0D\x00\x00\x00\x00\x8B\x0C\x88\xA1\x00\x00\x00\x00\x3B\x81\x00\x00\x00\x00\x7E\x4F", "xxxxxx????xx????xxxx????xxx????xx????xxxx????xx????xx"))(), out, buff);
  670. va_end(args);
  671. }
Advertisement
Add Comment
Please, Sign In to add comment