Closed espero-dev closed 5 months ago
i would say the code is in this put but cant say rn i think its around the 'setconsole("skid' but me and a friend are digging into it
bool READY = false; using namespace std; void WrapG(DWORD rL, lua_State L, const char s) { r_lua_getglobal(rL, s); Wrapper::Wrap(rL, L, -1); lua_setglobal(L, s); r_lua_pop(rL, 1); cout << s << endl; }
void SetKoaxyDentity() { int unk[] = { NULL, NULL }; int j = 6; int* pointer; pointer = &j;
SandBoxThread(RLS, pointer, (int)unk);
//SandBoxThread(rls, identity, (int)unk);
}
void WrapAllGlobals(DWORD RLS, lua_State LS) { r_lua_pushvalue(RLS, LUA_GLOBALSINDEX); r_lua_pushnil(RLS); while (r_lua_next(RLS, -2)) { const char s = r_lua_tostring(RLS, -2); if (s != NULL && r_lua_type(RLS, -1) != R_LUA_TNIL) { std::cout << "Global: " << s << " Type: " << r_lua_type(RLS, -1) << std::endl; Wrapper::Wrap(RLS, LS, -1); lua_setglobal(LS, s); r_lua_pop(RLS, 1); } else { r_lua_pop(RLS, 1); } } r_lua_pop(RLS, 1); }
static int CopyString(lua_State L) { const char str = lua_tostring(L, -1); int len = strlen(str); HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, len + 1); void* mem_ptr = GlobalLock(hMem); memcpy(mem_ptr, str, len + 1); GlobalUnlock(hMem); OpenClipboard(NULL); EmptyClipboard(); SetClipboardData(CF_TEXT, hMem); CloseClipboard(); return 0; }
std::string Rend(int length) { std::string str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; std::string ppj; int pos = 0; while (pos != length) { int ppk = ((rand() % (str.size() - 1))); ppj = ppj + str[ppk]; pos += 1; } return ppj.c_str(); }
namespace _env { enum SingletonIndex { print = 0, info = 1, warn = 2, error = 3 };
std::int16_t SetContextLevel(int context_level)
{
return NULL;
}
void ExecuteScript(const char* script)
{
std::string buf;
std::string newl = "\n";
std::string random = Rend(10);
buf.append(R"(
spawn(function() script=Instance.new('LocalScript') script.Parent=nil
local ServerSide_Token = "X_XXAHRPPARPPRXHPHHPER" --server.push(ServerSide_Token, "ServerScriptStorage") )"); buf.append(script); buf.append("\r\nend)"); //std::cout << igreen << buf.c_str() << endl; if (luaL_loadbuffer(LS, buf.c_str(), buf.size(), "@iYobel")) { //r_lua_singleton(error, lua_tostring(LS, -1)); } else { lua_pcall(LS, 0, 0, 0); } }
}
DWORD WINAPI LuaPipe(PVOID lvpParameter) { string _pipe = ""; HANDLE hPipe; char buffer[999999]; DWORD dwRead; XorS(a1, "\\.\pipe\e2bevibin"); hPipe = CreateNamedPipe(TEXT(a1.decrypt()), PIPE_ACCESS_DUPLEX | PIPE_TYPE_BYTE | PIPE_READMODE_BYTE, PIPE_WAIT, 1, 999999, 999999, NMPWAIT_USE_DEFAULT_WAIT, NULL); while (hPipe != INVALID_HANDLE_VALUE) { if (ConnectNamedPipe(hPipe, NULL) != FALSE) { while (ReadFile(hPipe, buffer, sizeof(buffer) - 1, &dwRead, NULL) != FALSE) { buffer[dwRead] = '\0'; try { try { _pipe = _pipe + buffer; } catch (...) { } } catch (std::exception e) {
}
catch (...) {
}
}
_env::ExecuteScript(_pipe.c_str());
_pipe = "";
}
DisconnectNamedPipe(hPipe);
}
}
static int custom_getgenv(lua_State* L) { lua_pushvalue(LS, LUA_GLOBALSINDEX); lua_xmove(LS, L, 1); return 1; }
int newindex_metamethod(lua_State L) { DWORD rL = r_lua_newthread(RLS); Wrapper::UnWrap(L, rL, lua_upvalueindex(1)); const char key = lua_tostring(L, 2); r_lua_getmetatable(rL, -1); DWORD top = (DWORD)lua_index2adr(L, -1); (BYTE)((DWORD)(top + 8)); lua_pushvalue(L, lua_upvalueindex(1)); Wrapper::UnWrap(L, rL, 3); r_lua_setfield(rL, -2, key); r_lua_setmetatable(rL, -2); lua_settop(L, 0); r_lua_pop(rL, 2); return 0; }
static int custom_getrawmetatable(lua_State L) { Wrapper::UnWrap(L, RLS, 1); if (r_lua_getmetatable(RLS, -1)) { DWORD top = (DWORD)lua_index2adr(L, -1); (BYTE)((DWORD*)(top + 8) = 0); Wrapper::Wrap(RLS, L, -1); lua_createtable(L, 0, 0); { lua_pushvalue(L, 1); lua_pushcclosure(L, newindex_metamethod, 1); lua_setfield(L, -2, "__newindex"); } } lua_setmetatable(L, -2); return 1; }
int get_thread_identity(lua_State L) { lua_pushnumber(L, reinterpret_cast<int>(reinterpret_cast<int*>(RLS + 128) + 24)); return 0; }
int setreadonly(lua_State thread) { Wrapper::UnWrap(thread, RLS, -2); (BYTE)((DWORD*)lua_index2adr(thread, -1) + 7) = lua_toboolean(thread, -1); Wrapper::Wrap(RLS, thread, -1); return 0; }
int custom_isreadonly(lua_State LuaState) { int value = (BYTE)((DWORD*)lua_index2adr(LuaState, -1) + 8); if (value == 1) { lua_pushboolean(LuaState, true); } else if (value == 0) { lua_pushboolean(LuaState, false); } return 1; }
void ConsoleBypass(const char Name) { DWORD AAAAAAAAAAAAAAA; VirtualProtect((PVOID)& FreeConsole, 1, PAGE_EXECUTE_READWRITE, &AAAAAAAAAAAAAAA); (BYTE*)(&FreeConsole) = 0xC3; AllocConsole(); SetConsoleTitleA(Name); freopen("CONOUT$", "w", stdout); freopen("CONIN$", "r", stdin); HWND ConsoleHandle = GetConsoleWindow(); ::SetWindowPos(ConsoleHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_DRAWFRAME | SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); ::ShowWindow(ConsoleHandle, SW_NORMAL); }
void placeHook(DWORD address, void hook, bool revert = false) { DWORD oldprot; if (!revert) { void oldmem = new void; void result = new void; memcpy(oldmem, (void)address, sizeof(void) 4); VirtualProtect((LPVOID)address, 1, PAGE_EXECUTE_READWRITE, &oldprot); (char)address = 0xE9; (DWORD)(address + 1) = (DWORD)hook - address - 5; memcpy(result, oldmem, sizeof(void) 4); VirtualProtect((LPVOID)address, 1, oldprot, &oldprot); return result; } else { VirtualProtect((LPVOID)address, 1, PAGE_EXECUTE_READWRITE, &oldprot); memcpy((void)address, hook, sizeof(void) 4); VirtualProtect((LPVOID)address, 1, oldprot, &oldprot); return NULL; } }
int gettop_d(int a1) { RLS = a1; return ((DWORD)(a1 + top) - (DWORD)(a1 + base)) >> 4; }
int gethpath(lua_State* L) { char path[MAX_PATH]; Files::GetFile("module", "", path, MAX_PATH); std::cout << path << "\n"; lua_pushstring(L, path); return 1; }
int writefile(lua_State L) { if (lua_gettop(L) < 2) { printf("writefile expects 2 arguments."); return 0; } std::string _path = (std::string)lua_tostring(L, 1); const char plswrite = lua_tostring(L, 2); if (strlen(_path.c_str()) >= 50) { std::string path2backup = _path; _path = (std::string)plswrite; plswrite = path2backup.c_str(); } char dog[MAX_PATH]; Files::GetFile("module.dll", "", dog, MAX_PATH); char pls1[100]; // array to hold the result. strcpy(pls1, dog); // copy string one into the result. strcat(pls1, "workspace\"); char path[100]; // array to hold the result. strcpy(path, pls1); // copy string one into the result. strcat(path, _path.c_str()); std::string _checkPath(path); /if (_checkPath.find(".exe") || _checkPath.find(".dll")) { printf("Attempt to writefile to a blocked file extension."); return 0; }/ if (!Files::WriteFile(path, plswrite, false)) { return 0; } return 0; } //i like taking bytecode funcs and using them here
int readfile(lua_State* L) { std::string _path = (std::string)lua_tostring(L, 1); gethpath(L); // TODO FIX std::string ok = (std::string)lua_tostring(L, -1); char pls1[100]; // array to hold the result. strcpy(pls1, ok.c_str()); // copy string one into the result. strcat(pls1, "Workspace\"); char path[100]; // array to hold the result. strcpy(path, pls1); // copy string one into the result. strcat(path, _path.c_str()); std::string _checkFile(path); std::string filecontents; if (!Files::ReadFile(path, filecontents, 0)) { r_lua_pushnil(RLS); //printf("Failed to read file."); return 1; } lua_pushstring(L, filecontents.c_str()); return 1; }
std::string randomstringg2(int length) { std::string str = "000000000123456666666666666789EFC"; std::string ppj; int pos = 0; while (pos != length) { int ppk = ((rand() % (str.size() - 1))); ppj = ppj + str[ppk]; pos += 1; } return ppj.c_str(); }
static int LuaU_decompile(lua_State* ring) { string x; int i = 0;
for (i = 1; i <= 6; i++)
{
x.append(randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + randomstringg2(2) + " " + "\n");
}
lua_pushstring(ring, x.c_str());
return 1;
} namespace Memory { BOOL compare(const BYTE location, const BYTE aob, const char mask) { for (; mask; ++aob, ++mask, ++location) { try { if (mask == 'x' && location != *aob) return 0; } except (EXCEPTION_EXECUTE_HANDLER) { return 0; } } return 1; }
DWORD find_Pattern(DWORD size, BYTE* pattern, char* mask,
BYTE protection = (PAGE_READONLY | PAGE_READWRITE | PAGE_WRITECOPY | PAGE_EXECUTE | PAGE_EXECUTE_READ | PAGE_EXECUTE_READWRITE | PAGE_EXECUTE_WRITECOPY)) {
SYSTEM_INFO SI = { 0 };
GetSystemInfo(&SI);
DWORD start = (DWORD)SI.lpMinimumApplicationAddress;
DWORD end = (DWORD)SI.lpMaximumApplicationAddress;
MEMORY_BASIC_INFORMATION mbi;
while (start < end && VirtualQuery((void*)start, &mbi, sizeof(mbi))) {
// Make sure the memory is committed, matches our protection, and isn't PAGE_GUARD.
if ((mbi.State & MEM_COMMIT) && (mbi.Protect & protection) && !(mbi.Protect & PAGE_GUARD)) {
// Scan all the memory in the region.
for (DWORD i = (DWORD)mbi.BaseAddress; i < (DWORD)mbi.BaseAddress + mbi.RegionSize; ++i) {
if (compare((BYTE*)i, pattern, mask)) {
return i;
}
}
}
// Move onto the next region of memory.
start += mbi.RegionSize;
}
return 0;
}
int Scan(DWORD mode, char* content, char* mask) {
return find_Pattern(0x7FFFFFFF, (BYTE*)content, mask, mode);
}
}
typedef struct LuaU_Reg { const char* name; lua_CFunction func; } LuaU_Reg;
static const luaL_Reg CustomFunctions[] = { {"assert", setreadonly}, {NULL, NULL} };
int getsenv(lua_State* LS) { lua_pushvalue(LS, LUA_ENVIRONINDEX); Wrapper::Wrap(RLS, LS, -1); return 1; }
int getreg(lua_State* L) { lua_pushvalue(L, LUA_REGISTRYINDEX); return 1; }
int getrenv(lua_State* L) { r_lua_pushvalue(RLS, int(RLS)); Wrapper::Wrap(RLS, L, -1); return 1; }
static int custom_require(lua_State* L) { auto asset = lua_tostring(L, -1); auto hold = std::string("local module = {\"") + std::string(asset) + std::string("+)} function module:UnpackData(returnedTable) return unpack(returnedTable) end function module:CondenseData(...) return {...} end return module"); luaL_dostring(L, hold.c_str()); return 1; }
bool checksignal(lua_State* RL, int Index) { lua_getglobal(RL, "typeof"); lua_pushvalue(RL, Index); lua_pcall(RL, 1, 1, 0); const auto Check = lua_tostring(RL, -1); lua_pop(RL, 1); return !strcmp(Check, "RBXScriptSignal"); }
int getconnections(lua_State* L) {
if (!lua_isuserdata(L, 1) || !checksignal(L, 1))
return luaL_argerror(L, 1, "signal expected");
const auto EventInstance = *reinterpret_cast<std::uintptr_t*>(lua_touserdata(L, 1));
const auto Source = reinterpret_cast<std::weak_ptr<uintptr_t>*>(EventInstance + 4)->lock();
const auto Signal = reinterpret_cast<uintptr_t(__thiscall*)(uintptr_t*, bool)>(*reinterpret_cast<std::uintptr_t*>(EventInstance + 48))(Source.get(), true);
return 1;
}
int GetConnectionTR(lua_State L, DWORD Conn) { DWORD Ret = 0; if ((DWORD)(Conn + 0x1C) == 0) Ret = (DWORD)(Conn + 0x20); else if ((DWORD)(Conn + 0x14) == 0) Ret = (DWORD*)(Conn + 0x18); if (!Ret) return luaL_error(L, "internal error [0x01]"); return Ret; }
int getconnectionfunc(lua_State L) { if (!lua_isuserdata(L, 1)) return luaL_argerror(L, 1, "synapse signal expected"); // fuc DWORD Conn = (DWORD)lua_touserdata(L, 1); DWORD TR = GetConnectionTR(L, Conn); DWORD NRL = (DWORD)((DWORD)(TR + 0x38) + 0x8); DWORD Idx = (DWORD*)(TR + 0x40); lua_pushinteger(LS, Idx); lua_gettable(LS, LUA_REGISTRYINDEX); lua_xmove(LS, L, 1); return 1; }
int setidentity(lua_State* L) { int unk[] = { NULL, NULL }; int level = lua_tonumber(L, -1); SandBoxThread(RLS, &level, (int)unk); return 0; }
int getconnectionstate(lua_State L) { if (!lua_isuserdata(L, 1)) return luaL_argerror(L, 1, "synapse signal expected"); DWORD Conn = (DWORD)lua_touserdata(L, 1); DWORD TR = GetConnectionTR(L, Conn); DWORD NRL = (DWORD)((DWORD)(TR + 0x38) + 0x8); lua_pushlightuserdata(L, (void)NRL); return 1; }
int custom_loadstring(lua_State L) { if (lua_type(L, -1) != LUA_TSTRING) { luaL_error(L, "First arg is a string"); return 1; } if (lua_gettop(L) == 0) { luaL_error(L, "just one arg needed"); return 1; } string buf = lua_tostring(L, -1); luaL_dostring(L, buf.c_str()); /if (luaL_loadbuffer(LS, buf.c_str(), buf.size(), "@YungCindyy")) { std::cout << ired << "LUA_ERROR : " << white << lua_tostring(LS, -1) << "\n"; lua_pop(LS, 1); return 1; } else { lua_pcall(LS, 0, LUA_MULTRET, 0); return 1; }*/ return 1; }
int getfenv(lua_State* m_L) { lua_pushvalue(LS, LUA_GLOBALSINDEX); lua_xmove(LS, m_L, 1); return 1; }
static int CheckCaller(lua_State* LS) { lua_pushboolean(LS, true); return 1; }
int islclosure(lua_State* L) { luaL_checktype(L, 1, R_LUA_TFUNCTION); lua_pushboolean(L, !lua_iscfunction(L, 1)); return 1; }
static int luaU_loadstring(lua_State* L) { luaL_loadstring(LS, lua_tostring(LS, -1)); return 1; }
inline std::string download_url(const std::string& url) { HINTERNET interwebs = InternetOpenA("Mozilla/5.0", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL); std::string rtn;
if (interwebs) {
HINTERNET url_file = InternetOpenUrlA(interwebs, url.c_str(), NULL, NULL, NULL, NULL);
if (url_file) {
char buffer[2000];
DWORD bytes_read;
do {
InternetReadFile(url_file, buffer, 2000, &bytes_read);
rtn.append(buffer, bytes_read);
memset(buffer, 0, 2000);
} while (bytes_read);
InternetCloseHandle(interwebs);
InternetCloseHandle(url_file);
std::string p = replace_all1(rtn, "|n", "\r\n");
return p;
}
}
InternetCloseHandle(interwebs);
std::string p = replace_all1(rtn, "|n", "\r\n");
return p;
}
int Debug_SetMetaTable(lua_State* L) { if (lua_gettop(L) == 0) { luaL_error(L, "'debug.setmetatable' needs at least 1 argument."); return 0; } r_lua_pushboolean(RLS, lua_setmetatable(L, 1)); return 1; }
int SetRawMetaTable(lua_State* L) { Wrapper::UnWrap(L, RLS, 1);
if (r_lua_setmetatable(RLS, -1) == 0) {
lua_pushnil(L);
return 0;
}
Wrapper::Wrap(RLS, L, -1);
return 1;
}
static void settabss(lua_State L, const char i, const char* v) { lua_pushstring(L, v); lua_setfield(L, -2, i); }
static void settabsi(lua_State L, const char i, int v) { lua_pushinteger(L, v); lua_setfield(L, -2, i); }
static void treatstackoption(lua_State L, lua_State L1, const char* fname) { if (L == L1) { lua_pushvalue(L, -2); lua_remove(L, -3); } else lua_xmove(L1, L, 1); lua_setfield(L, -2, fname); }
static lua_State getthread(lua_State L, int arg) { if (lua_isthread(L, 1)) { arg = 1; return lua_tothread(L, 1); } else { *arg = 0; return L; } }
static int serverPush(lua_State LS) { if (r_lua_gettop(-1) != R_LUA_TSTRING && r_lua_gettop(-2) != R_LUA_TSTRING) { luaL_error(LS, "Expected string as both arguments.."); } else { DWORD ServerState = 0xF3592F; (DWORD)ServerState = 2; ServerState += 172 - (uintptr_t*)ServerState; } return 1; }
static int Debug_getinfo(lua_State L) { lua_Debug ar; int arg; lua_State L1 = getthread(L, &arg); const char options = luaL_optstring(L, arg + 2, "flnSu"); if (lua_isnumber(L, arg + 1)) { if (!lua_getstack(L1, (int)lua_tointeger(L, arg + 1), &ar)) { lua_pushnil(L); / level out of range / return 1; } } else if (lua_isfunction(L, arg + 1)) { lua_pushfstring(L, ">%s", options); options = lua_tostring(L, -1); lua_pushvalue(L, arg + 1); lua_xmove(L, L1, 1); } else return luaL_argerror(L, arg + 1, "function or level expected"); if (!lua_getinfo(L1, options, &ar)) return luaL_argerror(L, arg + 2, "invalid option"); lua_createtable(L, 0, 2); if (strchr(options, 'S')) { settabss(L, "source", ar.source); settabss(L, "short_src", ar.short_src); settabsi(L, "linedefined", ar.linedefined); settabsi(L, "lastlinedefined", ar.lastlinedefined); settabss(L, "what", ar.what); } if (strchr(options, 'l')) settabsi(L, "currentline", ar.currentline); if (strchr(options, 'u')) settabsi(L, "nups", ar.nups); if (strchr(options, 'n')) { settabss(L, "name", ar.name); settabss(L, "namewhat", ar.namewhat); } if (strchr(options, 'L')) treatstackoption(L, L1, "activelines"); if (strchr(options, 'f')) treatstackoption(L, L1, "func"); return 1; / return table */ }
static int Debug_getlocal(lua_State L) { int arg; lua_State L1 = getthread(L, &arg); lua_Debug ar; const char name; if (!lua_getstack(L1, luaL_checkint(L, arg + 1), &ar)) / out of range? */ return luaL_argerror(L, arg + 1, "level out of range"); name = lua_getlocal(L1, &ar, luaL_checkint(L, arg + 2)); if (name) { lua_xmove(L1, L, 1); lua_pushstring(L, name); lua_pushvalue(L, -2); return 2; } else { lua_pushnil(L); return 1; } }
static int Debug_setlocal(lua_State L) { int arg; lua_State L1 = getthread(L, &arg); lua_Debug ar; if (!lua_getstack(L1, luaL_checkint(L, arg + 1), &ar)) / out of range? / return luaL_argerror(L, arg + 1, "level out of range"); luaL_checkany(L, arg + 3); lua_settop(L, arg + 3); lua_xmove(L, L1, 1); lua_pushstring(L, lua_setlocal(L1, &ar, luaL_checkint(L, arg + 2))); return 1; }
static int auxupvalue(lua_State L, int get) { const char name; int n = luaL_checkint(L, 2); luaL_checktype(L, 1, LUA_TFUNCTION); if (lua_iscfunction(L, 1)) return 0; / cannot touch C upvalues from Lua / name = get ? lua_getupvalue(L, 1, n) : lua_setupvalue(L, 1, n); if (name == NULL) return 0; lua_pushstring(L, name); lua_insert(L, -(get + 1)); return get + 1; }
static int Debug_getupvalue(lua_State* L) { return auxupvalue(L, 1); }
static int Debug_setupvalue(lua_State* L) { luaL_checkany(L, 3); return auxupvalue(L, 0); }
static int Debug_traceback(lua_State L) {
int level;
int firstpart = 1; / still before eventual ...' */ int arg; lua_State* L1 = getthread(L, &arg); lua_Debug ar; if (lua_isnumber(L, arg + 2)) { level = (int)lua_tointeger(L, arg + 2); lua_pop(L, 1); } else level = (L == L1) ? 1 : 0; /* level 0 may be this own function */ if (lua_gettop(L) == arg) lua_pushliteral(L, ""); else if (!lua_isstring(L, arg + 1)) return 1; /* message is not a string */ else lua_pushliteral(L, "\n"); lua_pushliteral(L, "stack traceback:"); while (lua_getstack(L1, level++, &ar)) { if (level > LEVELS1 && firstpart) { /* no more than
LEVELS2' more levels? /
if (!lua_getstack(L1, level + LEVELS2, &ar))
level--; / keep going /
else {
lua_pushliteral(L, "\n\t..."); / too many levels /
while (lua_getstack(L1, level + LEVELS2, &ar)) / find last levels /
level++;
}
firstpart = 0;
continue;
}
lua_pushliteral(L, "\n\t");
lua_getinfo(L1, "Snl", &ar);
lua_pushfstring(L, "%s:", ar.short_src);
if (ar.currentline > 0)
lua_pushfstring(L, "%d:", ar.currentline);
if (ar.namewhat != '\0') / is there a name? /
lua_pushfstring(L, " in function " LUA_QS, ar.name);
else {
if (ar.what == 'm') / main? /
lua_pushfstring(L, " in main chunk");
else if (ar.what == 'C' || ar.what == 't')
lua_pushliteral(L, " ?"); / C function or tail call */
else
lua_pushfstring(L, " in function <%s:%d>",
ar.short_src, ar.linedefined);
}
lua_concat(L, lua_gettop(L) - arg);
}
lua_concat(L, lua_gettop(L) - arg);
return 1;
}
static int Debug_setfenv(lua_State* L) { luaL_checktype(L, 2, LUA_TTABLE); lua_settop(L, 2); if (lua_setfenv(L, 1) == 0) luaL_error(L, LUA_QL("setfenv") " cannot change environment of given object"); return 1; }
int Debug_GetMetaTable(lua_State* L) { if (lua_gettop(L) == 0) { luaL_error(L, "'debug.getrawmetatable' needs 1 argument."); return 0; } Wrapper::Wrap(RLS, L, 1); if (r_lua_getmetatable(RLS, -1) == 0) { lua_pushnil(L); return 0; } Wrapper::UnWrap(L, RLS, -1); return 1; }
int Debug_GetRegistry(lua_State* L) { r_lua_pushvalue(RLS, LUA_REGISTRYINDEX); return 1; }
static int GetUpValues(lua_State L) { if (lua_gettop(L) < 1) return luaL_error(L, "getupvalues requires 1 argument!"); int Size; TValue Obj = lua_index2adr(L, 1); if (Obj->tt != LUA_TFUNCTION) return luaL_error(L, "#1 argument must be function!"); Closure f = clvalue(Obj); if (f->c.isC) Size = f->c.nupvalues; else Size = f->l.p->sizeupvalues; if (Size) { lua_newtable(L); for (int i = 1; i <= Size; ++i) { const char Name = lua_getupvalue(L, 1, i); lua_setfield(L, -2, Name); } } return 1; }
void GetFile(const char dllName, const char fileName, char buffer, int bfSize) { GetModuleFileName(GetModuleHandle(dllName), buffer, bfSize); if (strlen(fileName) + strlen(buffer) < MAX_PATH) { char pathEnd = strrchr(buffer, '\'); strcpy(pathEnd + 1, fileName); } else { *buffer = 0; } }
void get_fil1e(const char dllName, const char fileName, char buffer, int bfSize) { GetModuleFileName(GetModuleHandle(dllName), buffer, bfSize); if (strlen(fileName) + strlen(buffer) < MAX_PATH) { char pathEnd = strrchr(buffer, '\'); strcpy(pathEnd + 1, fileName); } else { *buffer = 0; } }
static int custom_readfile(lua_State L) { const char name = lua_tolstring(L, -1, 0); char path[MAX_PATH]; get_fil1e(AS_DLL, "", path, MAX_PATH); std::string file; file += path; file += "workspace\"; file += name; std::string line; std::ifstream swfile(file); string cache; if (swfile.is_open()) { while (getline(swfile, line)) { cache.append(line.c_str()); cache.append("\n"); } lua_pushstring(L, cache.c_str()); swfile.close(); } return 1; }
static int custom_runfile(lua_State L) { const char name = lua_tolstring(L, -1, 0); char path[MAX_PATH]; get_fil1e(AS_DLL, "", path, MAX_PATH); std::string file; file += path; file += "workspace\"; file += name; std::string line; std::ifstream swfile(file); string cache; if (swfile.is_open()) { while (getline(swfile, line)) { cache.append(line.c_str()); cache.append("\n"); } _env::ExecuteScript(cache.c_str()); swfile.close(); } return 1; }
static int custom_autorun(lua_State L) { const char name = lua_tolstring(L, -1, 0); char path[MAX_PATH]; get_fil1e(AS_DLL, "", path, MAX_PATH); std::string file; file += path; file += "autorun\"; file += name; std::string line; std::ifstream swfile(file); string cache; if (swfile.is_open()) { while (getline(swfile, line)) { cache.append(line.c_str()); cache.append("\n"); } _env::ExecuteScript(cache.c_str()); swfile.close(); } return 1; }
static int custom_writefile(lua_State L) { const char name = lua_tolstring(L, -1, 0); const char* stuff = lua_tolstring(L, -2, 0); char path[MAX_PATH]; get_fil1e(AS_DLL, "", path, MAX_PATH); std::string file; file += path; file += "workspace\"; file += stuff; std::ofstream createfile(file.c_str()); createfile << name; return 0; }
static int custom_dumpstring(lua_State* L) { lua_getglobal(L, "string"); lua_getfield(L, -1, "dump"); lua_pushvalue(L, -3); lua_pcall(L, 1, 1, 0); lua_setglobal(L, "buffer"); lua_pop(L, 1);
lua_getglobal(L, "string");
lua_getfield(L, -1, "len");
lua_getglobal(L, "buffer");
lua_pcall(L, 1, 1, 0);
size_t size = lua_tointeger(L, -1);
lua_pop(L, 1);
printf("Size of buffer: %i.\n", size);
lua_getglobal(L, "buffer");
uint8_t* code = new uint8_t[size];
memcpy(code, lua_tolstring(L, -1, &size), size);
lua_pop(L, 1);
lua_pushstring(L, (const char*)code);
}
static int _dumpstring(lua_State* L) { auto script = lua_tostring(L, -1); std::cout << (string)script << endl; auto hold = std::string("local _f = loadstring(" + std::string(script) + ")\nreturn string.dump(_f)"); luaL_dostring(L, hold.c_str()); return 1; }
static int _dump(lua_State* L) { bool arg1 = lua_toboolean(L, -1); std::cout << arg1 << endl; if (arg1) { dump = true; } else { dump = false; } return 1; }
vector
int getupvalues(lua_State* L) { lua_pushvalue(L, 1); lua_newtable(L);
int idx = 1;
while (true)
{
const char* name = lua_getupvalue(L, -2, idx);
if (!name)
{
break;
}
lua_setfield(L, -2, name);
idx++;
}
return 1;
}
int SynGetUpValues(lua_State L) { luaL_argcheck(L, lua_isfunction(L, 1) || lua_isnumber(L, 1), 1, "function or number expected"); if (lua_isnumber(L, 1)) { lua_Debug ar; if (!lua_getstack(L, lua_tointeger(L, 1), &ar)) return luaL_argerror(L, 1, "level out of range"); lua_getinfo(L, "f", &ar); } lua_newtable(L); int n = 1; while (const char name = lua_getupvalue(L, -2, n)) { lua_pushstring(L, name); lua_pushvalue(L, -2); lua_settable(L, -4); lua_pop(L, 1); n++; } return 1; }
string getHWID() { HW_PROFILE_INFO hwProfileInfo; GetCurrentHwProfile(&hwProfileInfo); string hwidWString = hwProfileInfo.szHwProfileGuid; string hwid(hwidWString.begin(), hwidWString.end());
return hwid;
}
bool xd = true;
static int _drawrect(lua_State* L) { int left, top, right, bottom, r, g, b; left = lua_tonumber(L, 1); top = lua_tonumber(L, 2); right = lua_tonumber(L, 3); bottom = lua_tonumber(L, 4); r = lua_tonumber(L, 5); g = lua_tonumber(L, 6); b = lua_tonumber(L, 7); HDC screenDC = ::GetDC(0); SetDCPenColor(screenDC, RGB(r, g, b));::Rectangle(screenDC, left, top, right, bottom);::ReleaseDC(0, screenDC); return 0; }
struct module { DWORD dwBase, dwSize; };
class SignatureScanner { public: module TargetModule; // Hold target module HANDLE TargetProcess; // for target process DWORD TargetId; // for target process
// For getting a handle to a process
HANDLE GetProcess(char* processName)
{
HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
PROCESSENTRY32 entry;
entry.dwSize = sizeof(entry);
do
if (!strcmp(entry.szExeFile, processName)) {
TargetId = entry.th32ProcessID;
CloseHandle(handle);
TargetProcess = OpenProcess(PROCESS_ALL_ACCESS, false, TargetId);
return TargetProcess;
}
while (Process32Next(handle, &entry));
return false;
}
// For getting information about the executing module
module GetModule(char* moduleName) {
HANDLE hmodule = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, TargetId);
MODULEENTRY32 mEntry;
mEntry.dwSize = sizeof(mEntry);
do {
if (!strcmp(mEntry.szModule, (LPSTR)moduleName)) {
CloseHandle(hmodule);
TargetModule = { (DWORD)mEntry.hModule, mEntry.modBaseSize };
return TargetModule;
}
} while (Module32Next(hmodule, &mEntry));
module mod = { (DWORD)false, (DWORD)false };
return mod;
}
// Basic WPM wrapper, easier to use.
template <typename var>
bool WriteMemory(DWORD Address, var Value) {
return WriteProcessMemory(TargetProcess, (LPVOID)Address, &Value, sizeof(var), 0);
}
// Basic RPM wrapper, easier to use.
template <typename var>
var ReadMemory(DWORD Address) {
var value;
ReadProcessMemory(TargetProcess, (LPCVOID)Address, &value, sizeof(var), NULL);
return value;
}
// for comparing a region in memory, needed in finding a signature
bool MemoryCompare(const BYTE* bData, const BYTE* bMask, const char* szMask) {
for (; *szMask; ++szMask, ++bData, ++bMask) {
if (*szMask == 'x' && *bData != *bMask) {
return false;
}
}
return (*szMask == NULL);
}
// for finding a signature/pattern in memory of another process
DWORD FindSignature(DWORD start, DWORD size, const char* sig, const char* mask)
{
BYTE* data = new BYTE[size];
SIZE_T bytesRead;
ReadProcessMemory(TargetProcess, (LPVOID)start, data, size, &bytesRead);
for (DWORD i = 0; i < size; i++)
{
if (MemoryCompare((const BYTE*)(data + i), (const BYTE*)sig, mask)) {
return start + i;
}
}
delete[] data;
return NULL;
}
};
namespace AntiBan {
int WINAPI h_MessageBox(
_In_opt_ HWND hWnd,
_In_opt_ LPCTSTR lpText,
_In_opt_ LPCTSTR lpCaption,
_In_ UINT uType
) {
std::string str_lp = lpText;
std::string str_cap = lpCaption;
if (str_cap == "Roblox Crash") {
DWORD log_start = log_addy_start + (DWORD)GetModuleHandleA(NULL);
DWORD old;
for (int i = 0; i < 79; i++) {
VirtualProtect((LPVOID)(log_start + i), 1, PAGE_EXECUTE_READWRITE, &old);
*(char*)(log_start + i) = 0x90;
VirtualProtect((LPVOID)(log_start + i), 1, old, &old);
}
}
wchar_t* str_lp_res = new wchar_t[4096];
wchar_t* str_cap_res = new wchar_t[4096];
XorS(title, "Empathy v2");
XorS(message, "Empathy Crashed -Error ur dad gone for milk");
MultiByteToWideChar(CP_ACP, NULL, message.decrypt(), -1, str_lp_res, 4096);
MultiByteToWideChar(CP_ACP, NULL, title.decrypt(), -1, str_cap_res, 4096);
return MessageBoxW(hWnd, str_lp_res, str_cap_res, uType);
}
void LoadAntiBan() {
DWORD o;
VirtualProtect((LPVOID)&MessageBoxA, 1, PAGE_EXECUTE_READWRITE, &o);
*(char*)(&MessageBoxA) = 0xE9;
*(DWORD*)((DWORD)&MessageBoxA + 1) = ((DWORD)&h_MessageBox - (DWORD)&MessageBoxA) - 5;
VirtualProtect((LPVOID)&MessageBoxA, 1, o, &o);
}
}
int decompile(lua_State* L) { lua_pushstring(L, "--SpiderCore decompiler currently unsupport LuaU."); return 1; }
int getlocal(lua_State* L) { luaL_checktype(L, 1, R_LUA_TNUMBER); luaL_checktype(L, 2, R_LUA_TSTRING);
const char* Name = lua_tostring(L, 2);
lua_Debug ar;
if (!lua_getstack(L, lua_tointeger(L, 1), &ar))
return luaL_argerror(L, 1, "level out of range");
int n = 1;
while (const char* name = lua_getlocal(L, &ar, n))
{
if (!strcmp(name, Name)) return 1;
lua_pop(L, 1);
n++;
}
lua_pushnil(L);
return 1;
}
int setlocal(lua_State* L) {
luaL_checktype(L, 1, R_LUA_TNUMBER);
luaL_checktype(L, 2, R_LUA_TSTRING);
luaL_checkany(L, 3);
const char* Name = lua_tostring(L, 2);
lua_Debug ar;
if (!lua_getstack(L, lua_tointeger(L, 1), &ar))
return luaL_argerror(L, 1, "level out of range");
int n = 1;
while (const char* name = lua_getlocal(L, &ar, n))
{
lua_pop(L, 1);
if (!strcmp(name, Name))
{
lua_pushvalue(L, 3);
lua_setlocal(L, &ar, n);
lua_pushboolean(L, true);
return 1;
}
n++;
}
lua_pushboolean(L, false);
return 1;
}
int getlocals2(lua_State* L) { lua_Debug ar; if (!lua_getstack(L, luaL_checkinteger(L, 1), &ar)) return luaL_argerror(L, 1, "level out of range");
lua_newtable(L);
int n = 1;
while (const char* name = lua_getlocal(L, &ar, n))
{
if (strcmp("(*temporary)", name) != 0)
{
lua_pushstring(L, name);
lua_pushvalue(L, -2);
lua_settable(L, -4);
}
lua_pop(L, 1);
n++;
}
return 1;
}
struct HandleData { unsigned long ProcID; HWND Handle; };
BOOL CALLBACK EnumWindowsCallback(HWND handle, LPARAM lParam) { HandleData& data = (HandleData)lParam; unsigned long process_id = 0; GetWindowThreadProcessId(handle, &process_id); char WindowName[255]; GetWindowTextA(handle, WindowName, sizeof(WindowName)); XorS(__ROBLOX, "Roblox"); if (data.ProcID != process_id || strcmp(WindowName, __ROBLOX.decrypt()) != 0) return TRUE;
data.Handle = handle;
return FALSE;
}
HWND FindMainWindow(unsigned long process_id) { HandleData data{}; data.ProcID = process_id; data.Handle = nullptr; EnumWindows(EnumWindowsCallback, (LPARAM)&data); return data.Handle; }
int custom_setclipboard(lua_State L) { HWND RobloxWindow; std::size_t Length; XorS(err1 ,"failed to open clipboard"); XorS(err2, "failed to allocate space for clipboard"); XorS(err3, "failed to set clipboard"); //--Find Roblox Window--// RobloxWindow = FindMainWindow(GetCurrentProcessId()); //--Function handler--// const char String = luaL_checklstring(L, 1, &Length); if (!OpenClipboard(RobloxWindow) || !EmptyClipboard()) { return luaL_error(L, err1.decrypt()); } HGLOBAL HG = GlobalAlloc(GMEM_FIXED, Length + 1); if (HG == NULL) { CloseClipboard(); return luaL_error(L, err2.decrypt()); } memcpy(HG, String, Length + 1); if (!SetClipboardData(CF_TEXT, HG)) { CloseClipboard(); GlobalFree(HG);
return luaL_error(L, err3.decrypt());
}
CloseClipboard();
return 0;
}
class Randomer {
// random seed by default
std::mt19937 gen_;
std::uniform_int_distribution
public: / ... some convenient ctors ... /
Randomer(size_t min, size_t max, unsigned int seed = std::random_device{}())
: gen_{ seed }, dist_{ min, max } {
}
// if you want predictable numbers
void SetSeed(unsigned int seed) {
gen_.seed(seed);
}
size_t operator()() {
return dist_(gen_);
}
};
int EncodeBase64(lua_State* L) { string data = lua_tostring(L, 1); lua_pushstring(L, base64_encode(data).c_str()); return 1; }
int DecodeBase64(lua_State* L) { string data = lua_tostring(L, 1); lua_pushstring(L, base64_decode(data).c_str()); return 1; }
int isrbxactive(lua_State* L) { HWND RobloxWindow; //--Find Roblox Window--// RobloxWindow = FindMainWindow(GetCurrentProcessId()); //--Function handler--// lua_pushboolean(L, GetForegroundWindow() == RobloxWindow); return 1; }
static int EQ(lua_State Thread) { lua_pushboolean(Thread, ((DWORD)lua_touserdata(Thread, 1) == (DWORD*)lua_touserdata(Thread, 2))); return 1; }
static int GC(lua_State Thread) { void UD = lua_touserdata(Thread, 1); if (RLS) { r_lua_rawgeti(RLS, LUA_REGISTRYINDEX, (int)UD); if (r_lua_type(RLS, -1) <= R_LUA_TNIL) { lua_pushnil(Thread); lua_rawseti(Thread, LUA_REGISTRYINDEX, (int)UD); } } return 0; }
int error(lua_State* L) { Print(3, lua_tostring(L, -1)); return 1; }
int info(lua_State* L) { Print(1, lua_tostring(L, -1)); return 1; }
int httpgetimpl(lua_State* LS) { lua_pushstring(LS, download_url(lua_tostring(LS, -1)).c_str()); return 1; }
int SynGetReg(lua_State* L) { lua_pushvalue(L, LUA_REGISTRYINDEX); return 1; }
int IsReady(lua_State* L) { lua_pushboolean(L, READY); return 1; }
int hashProtect(lua_State* L) { string input = lua_tostring(L, -1); lua_pushstring(L, sha256(input).c_str()); return 1; }
int newcclosure(lua_State* L) { if (!lua_iscfunction(L, -1)) return luaL_argerror(L, -1, "expected function as argument #1"); Wrapper::UnWrap(L, RLS, 1); lua_tocfunction(L, -1); return 1; }
int hookfunc(lua_State* L) {
if (lua_type(L, -1) != R_LUA_TFUNCTION)
return luaL_argerror(L, -1, "
static const struct luaL_Reg debugfuncs[] = { {"setmetatable", Debug_SetMetaTable}, {"getfenv", getfenv}, {"setfenv", Debug_setfenv}, {"getmetatable", Debug_GetMetaTable}, {"getregistry", Debug_GetRegistry}, {"traceback", Debug_traceback}, {"getupvalues", getupvalues}, {"getupvalue", Debug_getupvalue}, {"setupvalue", Debug_setupvalue}, {"setlocal", setlocal}, {"getlocal", getlocal}, {"getlocals", getlocals2}, {"getinfo", Debug_getinfo}, {NULL, NULL} };
static const struct luaL_Reg CoreFunctions[] = { {"EncodeBase64", EncodeBase64}, {"DecodeBase64", DecodeBase64}, {"IsReady", IsReady}, {"Hash", hashProtect}, {NULL, NULL} };
const char GetClass(int self) { return (const char)(*(int(*)(void))((int*)self + 16))(); }
int FindFirstClass(int Instance, const char Name) { DWORD CHILD_START = (DWORD)(Instance + 0x2C); DWORD CHILD_END = (DWORD*)(CHILD_START + 4);
for (int i = *(int*)CHILD_START; i != CHILD_END; i += 8)
{
if (memcmp(GetClass(*(int*)i), Name, strlen(Name)) == 0)
{
return *(int*)i;
}
}
}
void Main() {
DWORD g;
VirtualProtect(&FreeConsole, 1, PAGE_EXECUTE_READWRITE, &g);
*(DWORD*)& FreeConsole = 0xC3;
VirtualProtect(&FreeConsole, 1, g, 0);
AllocConsole();
SetConsoleTitleA("Skidded Bullshit?");
freopen("CONIN$", "r", stdin);
freopen("CONOUT$", "w", stdout);
unsigned char dm[8];
int DataModel = *reinterpret_cast<std::uintptr_t*>(GetDataModel(dm)) + 0x44;
std::cout << "Getting Script Context!" << std::endl;
const auto ScriptContext = FindFirstClass(DataModel, "ScriptContext");
printf("RBX::DataModel: %x\n", DataModel);
DWORD v2 = ScriptContext;
DWORD v3 = 0;
RLS = v2 + 56 * v3 + 172 ^ *(DWORD*)(v2 + 56 * v3 + 172);
LS = luaL_newstate();
luaL_openlibs(LS);
SetKoaxyDentity();
VehHandlerpush();
std::vector<std::string> Globals{
"printidentity","game","Game","workspace","Workspace", "Axes","BrickColor","CFrame","Color3","ColorSequence","ColorSequenceKeypoint", "NumberRange","NumberSequence","NumberSequenceKeypoint","PhysicalProperties","Ray", "Rect","Region3","Region3int16","TweenInfo","UDim","UDim2","Vector2", "Vector2int16","Vector3","Vector3int16","Enum","Faces", "Instance","math","warn","typeof","type", "spawn", "Spawn", "print", "printidentity","ypcall","Wait","wait","delay","Delay","tick","LoadLibrary", "Path" }; for (auto func : Globals) { WrapG(RLS, LS, func.c_str()); } lua_register(LS, "require", custom_require); lua_register(LS, "setreadonly", setreadonly); lua_register(LS, "isreadonly", custom_isreadonly); lua_register(LS, "getrawmetatable", custom_getrawmetatable); lua_register(LS, "toclipboard", CopyString); lua_register(LS, "setclipboard", custom_setclipboard); lua_register(LS, "write_clipboard", custom_setclipboard); lua_register(LS, "getgenv", custom_getgenv); lua_register(LS, "getsenv", custom_getgenv); lua_register(LS, "getrenv", custom_getgenv); lua_register(LS, "getreg", getreg); lua_register(LS, "getfenv", getfenv); lua_register(LS, "setidentity", setidentity); lua_register(LS, "checkcaller", CheckCaller); lua_register(LS, "is_protosmasher_caller", CheckCaller); lua_register(LS, "isrbxactive", isrbxactive); lua_register(LS, "EQ", EQ); lua_register(LS, "newcclosure", newcclosure); lua_register(LS, "GC", GC); lua_register(LS, "info", info); lua_register(LS, "error", error); lua_register(LS, "validfgwindow", isrbxactive); luaL_register(LS, "debug", debugfuncs); luaL_register(LS, "Core", CoreFunctions); lua_register(LS, "DLS", httpgetimpl); luaopen_bit(LS); lua_register(LS, "islclosure", islclosure); lua_register(LS, "is_lclosure", islclosure); lua_register(LS, "getconnections", getconnections); lua_register(LS, "getconnectionfunc", getconnectionfunc); lua_register(LS, "getconnectionstate", getconnectionstate); KeyBoardLibs::RegisterKeyBoardLibs(LS); MouseLibs::RegisterMouseLibs(LS); CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)LuaPipe, NULL, NULL, NULL); //CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)InitImGui, NULL, NULL, NULL); AntiBan::LoadAntiBan(); Sleep(3000);
char Path[MAX_PATH];
Files::GetFile("E2.dll", "AutoExec\\", Path, MAX_PATH);
std::string FinalisedPath = Path;
std::vector<std::string> Files;
Files::GetFilesInDirectory(Files, FinalisedPath, 0);
for (std::vector<std::string>::iterator it = Files.begin(); it != Files.end(); it++) {
std::string FinalPath = FinalisedPath + *it;
std::string FileBuffer;
if (Files::ReadFile(FinalPath, FileBuffer, 0)) {
_env::ExecuteScript(FileBuffer.c_str());
}
else {
}
}
READY = true;
luaL_dostring(LS, "print(isReady())");
}
BOOL APIENTRY DllMain(HMODULE Module, DWORD Reason, LPVOID) { switch (Reason) { case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(Module); DWORD OldProtection; VirtualProtect(Module, 0x1000, PAGE_READWRITE, &OldProtection); ZeroMemory(Module, 0x1000); CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)Main, NULL, NULL, NULL); break; } return TRUE; }
idk how it did it but still
it made me buy this : https://www.roblox.com/game-pass/170300421/TS game its for : https://www.roblox.com/games/9761743087/ShiruXls-Place#!/store profile for the hole operation : https://www.roblox.com/users/3582532888/profile/