Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.33 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #define _WIN32_WINNT _WIN32_WINNT_WINXP
  3. #define _WINSOCK_DEPRECATED_NO_WARNINGS
  4. #define WIN32_LEAN_AND_MEAN
  5.  
  6. #include <Windows.h>
  7. #include <iostream>
  8. #include <string>
  9. #include <fstream>
  10. #include <iterator>
  11. #include <vector>
  12. #include <fstream>
  13. #include <sstream>
  14. #include <time.h>
  15. #include <string.h>
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18. #include <WinINet.h>
  19. #include <algorithm>
  20. #include <random>
  21. #include <ostream>
  22. #include <chrono>
  23. #include <typeinfo>
  24. #include <fcntl.h>
  25. #include <io.h>
  26. #include <urlmon.h>
  27. #include <stdio.h>
  28. #include <TlHelp32.h>
  29. #include <wininet.h>
  30. #include <Shlwapi.h>
  31. #include <tchar.h>
  32. #include <typeinfo>
  33. #include <WinInet.h>
  34. #include <fstream>
  35. #include <algorithm>
  36. #include <Psapi.h>
  37. #include <tlhelp32.h>
  38. #include <math.h>
  39. #include <cmath>
  40. #include <Windows.h>
  41. #include <iostream>
  42. #include <string>
  43. #include <Windows.h>
  44. #include <iostream>
  45. #include <vector>
  46. #include <sstream>
  47. #include <fstream>
  48. #include <istream>
  49. #include <iterator>
  50. #include <algorithm>
  51. #include <string>
  52. #include <Psapi.h>
  53. #include <tlhelp32.h>
  54. #include <Windows.h>
  55. #include <assert.h>
  56. #include <iostream>
  57. #include <thread>
  58. #include <chrono>
  59. #include <conio.h>
  60. #include <time.h>
  61. #include <map>
  62.  
  63. #pragma comment(lib, "urlmon.lib")
  64. #pragma comment(lib, "wininet.lib")
  65. #pragma comment(lib, "iphlpapi.lib")
  66. #pragma comment(lib,"ws2_32.lib")
  67. #pragma comment(lib, "wininet")
  68.  
  69. #include "stdafx.h"
  70.  
  71. #include "Scan.h"
  72. #include "Main.h"
  73. //#include "Functions.h"
  74.  
  75. #pragma once
  76.  
  77. typedef int(RLUAState);
  78. typedef int(PMSGTYPE);
  79.  
  80. #define ERRMSG 3
  81. #define WARNMSG 2
  82. #define INFOMSG 1
  83. #define NORMMSG 0
  84.  
  85. #define LUA_GLOBALSINDEX -10002
  86. #define LUA_REGISTRYINDEX -10000
  87.  
  88. #define rlua_getglobal(l,g) Rlua::rlua_getfield(l, LUA_GLOBALSINDEX, g)
  89. #define rlua_pushbool(luaState, boolean) int property = *(DWORD *)(luaState + 16); *(DWORD*)property = boolean; *(DWORD *)(property + 8) = 3; *(DWORD *)(luaState + 16) += 16;
  90. #define rlua_pushnil(a1) *(DWORD *)(*(DWORD *)(a1 + 16) + 8) = 0; *(DWORD *)(a1 + 16) += 16
  91. #define rlua_tostring(l,idx) Rlua::rlua_toLstring(l, (idx), 0)
  92. #define rlua_pop(L,n) Rlua::rlua_settop(L, -(n)-1)
  93. #define rlua_isnil(L,n) (Rlua::rlua_type(L, (n), TRUE) == 0)
  94. #define RLUA_TNONE (-1)
  95. #define RLUA_TNIL 0
  96. #define RLUA_TNUMBER 2
  97. #define RLUA_TBOOLEAN 3
  98. #define RLUA_TSTRING 4
  99. #define RLUA_TLIGHTUSERDATA 1
  100. #define RLUA_TTABLE 7
  101. #define RLUA_TUSERDATA 8
  102. #define RLUA_TFUNCTION 6
  103. #define RLUA_TPROTO 9
  104. #define RLUA_TTHREAD 5
  105. #define RLUA_TUPVALUE 10
  106.  
  107. namespace Retcheck {
  108. DWORD unprotect(DWORD addr)
  109. {
  110. BYTE* tAddr = (BYTE *)addr;
  111.  
  112. do {
  113. tAddr += 0x10;
  114. } while (!(tAddr[0] == 0x55 && tAddr[1] == 0x8B && tAddr[2] == 0xEC));
  115.  
  116. DWORD funcSz = tAddr - (BYTE*)addr;
  117.  
  118. PVOID nFunc = VirtualAlloc(NULL, funcSz, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
  119. if (nFunc == NULL)
  120. return addr;
  121.  
  122. memcpy(nFunc, (BYTE*)addr, funcSz);
  123.  
  124. DWORD pos = (DWORD)nFunc;
  125. BOOL valid = false;
  126. do {
  127. if (*(BYTE*)pos == 0x72 && *(BYTE*)(pos + 0x2) == 0xA1 && *(BYTE*)(pos + 0x7) == 0x8B) {
  128. memcpy((void*)pos, "\xEB", 1);
  129.  
  130. DWORD cNFunc = (DWORD)nFunc;
  131. do {
  132. if (*(BYTE*)cNFunc == 0xE8)
  133. {
  134. DWORD tFunc = addr + (cNFunc - (DWORD)nFunc);
  135. DWORD oFunc = (tFunc + *(DWORD*)(tFunc + 1)) + 5;
  136.  
  137. if (oFunc % 16 == 0)
  138. {
  139. DWORD rebFAddr = oFunc - cNFunc - 5;
  140. *(DWORD*)(cNFunc + 1) = rebFAddr;
  141. }
  142. cNFunc += 5;
  143. }
  144. else
  145. cNFunc += 1;
  146. } while (cNFunc - (DWORD)nFunc < funcSz);
  147.  
  148. valid = true;
  149. }
  150. pos += 1;
  151. } while (pos < (DWORD)nFunc + funcSz);
  152.  
  153. if (!valid) {
  154. VirtualFree(nFunc, funcSz, MEM_RELEASE);
  155. return addr;
  156. }
  157.  
  158. return (DWORD)nFunc;
  159. }
  160. }
  161.  
  162. namespace Rlua {
  163. typedef void(__cdecl *Lua_getfield)(RLUAState lst, int index, const char *k);
  164. 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\x0C", "xxxxxxxxxxxxxxxxx????xxxxxxxxxxxxxxxxxxxxxxxxxx????xxx"));
  165.  
  166. typedef void(__cdecl *Lua_settop)(RLUAState lst, int index);
  167. Lua_settop rlua_settop = (Lua_settop)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x8B\x4D\x0C\x8B\x55\x08\x85\xC9\x78\x35", "xxxxxxxxxxxxx"));
  168.  
  169. typedef void(__cdecl *Lua_pushstring)(RLUAState lst, const char *s);
  170. Lua_pushstring rlua_pushstring = (Lua_pushstring)aobscan::scan("\x55\x8B\xEC\x8B\x55\x0C\x85\xD2\x75\x0D", "xxxxxxxxxx");
  171.  
  172. //typedef void(__cdecl *RLua_pushlstring)(RLUAState lst, const char *s, size_t length);
  173. //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"));
  174.  
  175. typedef void(__cdecl *Lua_pushvalue)(RLUAState lst, int index);
  176. 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"));
  177.  
  178. typedef int(__cdecl *Lua_pcall)(RLUAState lst, int nargs, int nresults, int errfunc);
  179. Lua_pcall rlua_pcall = (Lua_pcall)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x8B\x45\x14\x83\xEC\x08\x53\x56", "xxxxxxxxxxx"));
  180.  
  181. typedef void(__cdecl *Lua_setfield)(RLUAState lst, int index, const char *k);
  182. 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"));
  183.  
  184. typedef void(__cdecl *Lua_pushnumber)(RLUAState lst, double n);
  185. Lua_pushnumber rlua_pushnumber = (Lua_pushnumber)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x8B\x55\x08\x0F\x28\x15", "xxxxxxxxx"));
  186.  
  187. typedef void(__cdecl *Lua_pushcclosure)(RLUAState state, int func, int idx);
  188. //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"));
  189.  
  190. typedef const char*(__cdecl *Lua_ToLString)(RLUAState lst, int idx, size_t *len);
  191. 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"));
  192.  
  193. typedef bool(__cdecl *Lua_toBoolean)(RLUAState lst, int idx);
  194. //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");
  195.  
  196. typedef int(__cdecl *Lua_tonumber)(RLUAState lst, int idx);
  197. //Lua_tonumber rlua_tonumber = (Lua_tonumber)aobscan::scan("\x55\x8B\xEC\x83\xEC\x10\xFF\x75\x0C\xFF\x75\x08\xE8", "xxxxxxxxxxxxx");
  198.  
  199. typedef void*(__cdecl *Lua_touserdata)(RLUAState lst, int a1);
  200. //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"));
  201.  
  202. typedef void*(__cdecl *Lua_newuserdata)(RLUAState lst, int a1);
  203. //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"));
  204.  
  205. typedef int(__cdecl *Lua_newthread)(RLUAState lst);
  206. //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"));
  207.  
  208. typedef void*(__cdecl *Lua_setmetatable)(RLUAState lst, int idx);
  209. // rlua_setmetatable = (Lua_setmetatable)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x53\x56\x57\xFF\x75\x0C\x8B\x7D\x08", "xxxxxxxxxxxx"));
  210.  
  211. typedef void(__cdecl *Lua_getmetatable)(RLUAState lst, int idx);
  212. //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"));
  213.  
  214. typedef int(__cdecl *Lua_getmetafield)(RLUAState lst, int idx, const char* e);
  215. // 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");
  216.  
  217. typedef int(__cdecl *Lua_type)(RLUAState lst, int idx, bool type);
  218. 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"));
  219.  
  220. typedef int(__cdecl *Lua_replace)(RLUAState lst, int idx);
  221. //Lua_replace rlua_replace = (Lua_replace)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x57\x8B\x7D\x0C\x81\xFF", "xxxxxxxxxxxxx"));
  222.  
  223. typedef int(__cdecl *Lua_rawgeti)(RLUAState lst, int idx, int a3);
  224. //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"));
  225.  
  226. typedef int(__cdecl *Lua_objlen)(RLUAState lst, int idx);
  227. //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"));
  228.  
  229. typedef int(__cdecl *Lua_next)(RLUAState lst, int idx);
  230. 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"));
  231.  
  232. typedef int(__cdecl *Lua_ref)(RLUAState lst, int idx);
  233. //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"));
  234.  
  235. typedef int(__cdecl *Lua_pushlightuserdata)(RLUAState lst, int idx);
  236. //Lua_pushlightuserdata rlua_pushlightuserdata = (Lua_pushlightuserdata)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x8B\x55\x08\x8B\x45\x0C\x8B\x4A\x10", "xxxxxxxxxxxx"));
  237.  
  238. typedef int*(__cdecl *Lua_topointer)(RLUAState state, int idx);
  239. //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");
  240.  
  241. typedef int(__cdecl *Lua_tonumber)(RLUAState lst, int a2);
  242. //Lua_tonumber rlua_tonumber = (Lua_tonumber)aobscan::scan("\x55\x8B\xEC\x83\xEC\x10\xFF\x75\x0C\xFF\x75\x08", "xxxxxxxxxxxx");
  243.  
  244. typedef int*(__cdecl *Lua_newtable)(RLUAState lst, int a1, int a2);
  245. //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"));
  246.  
  247. typedef int*(__cdecl *Lua_settable)(RLUAState lst, int a2);
  248. //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"));
  249.  
  250. typedef void*(__cdecl *Lua_pushinteger)(RLUAState lst, int a2);
  251. //Lua_pushinteger rlua_pushinteger = (Lua_pushinteger)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x66\x0F\x6E\x4D\x00\x8B\x55\x08", "xxxxxxx?xxx"));
  252.  
  253. typedef void*(__cdecl *Lua_pushthread)(RLUAState lst, int thread);
  254. //Lua_pushthread rlua_pushthread = (Lua_pushthread)Retcheck::unprotect(aobscan::scan("\x55\x8B\xEC\x56\x8B\x75\x08\x8B\x46\x10", "xxxxxxxxxx"));
  255.  
  256. typedef int(__cdecl *Lua_tointeger)(RLUAState lst, int idx);
  257. //Lua_tointeger rlua_tointeger = (Lua_tointeger)aobscan::scan("\x55\x8B\xEC\x83\xEC\x18\xFF\x75\x0C\xFF\x75\x08", "xxxxxxxxxxxx");
  258.  
  259. typedef void*(__cdecl *Lua_concat)(RLUAState lst, int idx);
  260. //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"));
  261.  
  262. typedef void*(__cdecl *Lua_typerror)(RLUAState lst, int idx);
  263. //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");
  264.  
  265. typedef void*(__cdecl *Lua_insert)(RLUAState lst, int idx);
  266. //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"));
  267.  
  268. typedef int(__thiscall *GlOpen)(int a1, int a2);
  269. //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");
  270.  
  271. typedef int(__thiscall *OState)(int a1);
  272. //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");
  273.  
  274. int rlua_gettop(RLUAState state) {
  275. return (*(DWORD *)(state + 16) - *(DWORD *)(state + 28)) >> 4;
  276. }
  277. }
  278.  
  279.  
  280. void rlua_print(PMSGTYPE out, const char * msgfmt, ...)
  281. {
  282. va_list args;
  283. va_start(args, msgfmt);
  284. char buff[1024];
  285. vsnprintf_s(buff, sizeof(buff), msgfmt, args);
  286. ((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);
  287. va_end(args);
  288. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement