Activity Feed
Replied to thread : LOOKING FOR DEVELOPER WHO CAN MAKE A DLL AND CODE IN C++ **PAYING**
100% unc and sunc for 30$? and add a keysystem? thanks, nobody will take that
Created a new thread : Help with pasting a new injection methods
So hyperion v4.4.1 released and WinVerifyTrust injection doesn't work anymore... CreateRemoteThread is blocked, allocated memory is watched... any free methods for the skids?... I just don't wanna start making an external executor based on drivers and more things..
Created a new thread : Need help with recreating lua_pushvalue/setobj2s
So, my code crashes. I have decided I won't use shuffles (nihon did this back in the day).
I have recreated index2addr, I have luaO_nilobject & pseudo2addr addresses correct.
inline TValue* index2addr(lua_State* L, int idx)
{
StkId top = gettop(L); // L->top
StkId base = getbase(L); // L->base
if (idx > 0)
{
TValue* o = base + (idx - 1);
if (o > top)
return *reinterpret_cast<TValue**>(base + offsets::lua_nilobject);
else
return o;
}
else if (idx > LUA_REGISTRYINDEX)
{
return top + idx;
}
else
{
return pseudo2addr(L, idx);
}
}
This is index2addr.
inline void r_setobj2s(TValue* obj1, TValue* obj2) // thanks to immune
{
TValue* o1 = (TValue*)obj1, * o2 = (TValue*)obj2;
o1->tt = o2->tt;
o1->value = o2->value;
}
This is setobj2s.
inline void lua_pushvalue(lua_State* L, int idx)
{
TValue* o = index2addr(L, idx);
r_setobj2s(*reinterpret_cast<TValue**>(L + offsets::top), o);
*reinterpret_cast<uintptr_t*>(L + offsets::top) += 0x10;
}
And this is pushvalue.
Idk why, but setobj2s crashes... Any guesses?
Created a new thread : need help with lua vm shuffles
First, a better explanation (since I think that roblox 2016 source shuffles are very outdated)
Second, how do I even implement them into my lua so i can use basic functions such as lua_pushstring
Replied to thread : Help with creating an internal executor
For someone who wants to help:
I have got a new error (crash). My decrypt state function just crashes.
v37 = sub_D35D80(v36 + 0x118, &v301, &v312); //GLOBAL STATE
v38 = sub_AEEE8F0(v37 + 0x88); //DECRYPT STATE
As you can see, i think i have valid offsets and everything.
But this code (decrypt state) errors.
const uint32_t identity = 0;
const uintptr_t script = 0;
/*
v37 = sub_1135D80(v36 + 0x118, &v301, &v312); GLOBAL STATE
v38 = sub_EEE8F0(v37 + 0x88); DECRYPT STATE
*/
uintptr_t state = getGlobalState(scriptContext+0x118, &identity, &script);
r_print(1, std::format("Global state: {:#x}", state).c_str());
lua_State* rL = decryptState(state+0x88);
r_print(1, std::format("Lua state: {:#x}", reinterpret_cast<uintptr_t>(rL)).c_str());
(offsets are shifted since i rebased it, i have them normal)
I'd like to have some help on that.
Commented to thread : Help with creating an internal executor
Bad thing that PETools, my beloved, doesn't work (the github version) with x64.
I think I have some community-built dumpers so I can get roblox dumped and check it around. Thanks for giving me plenty more of dumpers and information.
Replied to thread : Help with creating an internal executor
thanks, I'm starting to learn more reverse engineering (on C++) from Roblox
then, I'll have to ge tthe offsets myself, using IDA Pro & dumpers for exe's
Created a new thread : Help with creating an internal executor
I can't get the Task Scheduler since the function itself (getTashScheduler with UPDATED offsets crashes itself?)
typedef uintptr_t(__cdecl* rbx_gettaskscheduler)();
uint64_t getTaskSchedulerAddress = startAddress + offsets::getTaskScheduler;
rbx_gettaskscheduler getTaskScheduler = reinterpret_cast<rbx_gettaskscheduler>(getTaskSchedulerAddress);
inline uintptr_t getTaskScheduler = 0x2d91d65;
like why?
uintptr_t get_job(const char* job_name) noexcept {
auto scheduler = getTaskScheduler();
auto jobs_start = *reinterpret_cast<uintptr_t*>(scheduler + 0x198);
const auto jobs_end = *reinterpret_cast<uintptr_t*>(scheduler + 0x1a0);
auto result = uintptr_t();
for (; jobs_start < jobs_end; jobs_start += 8u) {
const auto job = *reinterpret_cast<uintptr_t*>(jobs_start);
r_print(0, std::to_string(job).c_str());
if (*reinterpret_cast<std::string*>(job + 0x90) == job_name)
result = job;
}
return result;
}
i mean, it just crashes
i need some help since all of people that could've helped are retarded and they wont help me