<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://orc.lunarix.pw/index.php?action=history&amp;feed=atom&amp;title=2008LOffsetDictionary</id>
	<title>2008LOffsetDictionary - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://orc.lunarix.pw/index.php?action=history&amp;feed=atom&amp;title=2008LOffsetDictionary"/>
	<link rel="alternate" type="text/html" href="https://orc.lunarix.pw/index.php?title=2008LOffsetDictionary&amp;action=history"/>
	<updated>2026-10-28T20:25:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://orc.lunarix.pw/index.php?title=2008LOffsetDictionary&amp;diff=761&amp;oldid=prev</id>
		<title>Cheaseman2092: Created page with &quot;== Tips == Sometimes certain classes contain child classes, and in order to access them you can access them via pointer math, example:&lt;syntaxhighlight lang=&quot;cpp&quot;&gt; void* ScriptContext = 0x31D6928; void* RunService = (DWORD*)ScriptContext + 0x148; &lt;/syntaxhighlight&gt;File:Ptrmath.png As you can see when we view the ScriptContext class in [https://github.com/ergrelet/resym resym] we can see that there&#039;s a shared pointer of RunService 148 bytes ahead of the class itself  S...&quot;</title>
		<link rel="alternate" type="text/html" href="https://orc.lunarix.pw/index.php?title=2008LOffsetDictionary&amp;diff=761&amp;oldid=prev"/>
		<updated>2026-10-24T01:52:30Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Tips == Sometimes certain classes contain child classes, and in order to access them you can access them via pointer math, example:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; void* ScriptContext = 0x31D6928; void* RunService = (DWORD*)ScriptContext + 0x148; &amp;lt;/syntaxhighlight&amp;gt;&lt;a href=&quot;/index.php?title=File:Ptrmath.png&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;File:Ptrmath.png (page does not exist)&quot;&gt;File:Ptrmath.png&lt;/a&gt; As you can see when we view the ScriptContext class in [https://github.com/ergrelet/resym resym] we can see that there&amp;#039;s a shared pointer of RunService 148 bytes ahead of the class itself  S...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Tips ==&lt;br /&gt;
Sometimes certain classes contain child classes, and in order to access them you can access them via pointer math, example:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void* ScriptContext = 0x31D6928;&lt;br /&gt;
void* RunService = (DWORD*)ScriptContext + 0x148;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Ptrmath.png]]&lt;br /&gt;
As you can see when we view the ScriptContext class in [https://github.com/ergrelet/resym resym] we can see that there&amp;#039;s a shared pointer of RunService 148 bytes ahead of the class itself&lt;br /&gt;
&lt;br /&gt;
So we can do some quick math by adding the bytes to the original class pointer to get a child class or any variable that is, and you can go from class to class with this math as well&lt;br /&gt;
&lt;br /&gt;
== Lua ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void __cdecl lua_setfield(lua_State*, int, const char*) // 0x675E50&lt;br /&gt;
&lt;br /&gt;
void __cdecl lua_pushcclosure(lua_State*, void, int) // 0x675AF0&lt;br /&gt;
&lt;br /&gt;
char* __cdecl getS(lua_State *param_1,void *param_2,uint *param_3) //0x677080&lt;br /&gt;
&lt;br /&gt;
int __cdecl luaL_loadbuffer(void*, const char*, unsigned int, const char*) // 0x6770A0&lt;br /&gt;
&lt;br /&gt;
Proto* __cdecl luaU_undump(lua_State*, Zio*, Mbuffer*, char *) // 0x6AF1D0 &lt;br /&gt;
&lt;br /&gt;
void __cdecl LoadHeader(LoadState*) //006AF110 &lt;br /&gt;
&lt;br /&gt;
void __cdecl lua_settable(lua_State *L, int idx) //0x675E20&lt;br /&gt;
&lt;br /&gt;
void __cdecl lua_pushstring(lua_State *L, const char *s) //0x675A20&lt;br /&gt;
&lt;br /&gt;
void __cdecl luaL_error(lua_State *L, const char* fmt, ...) // 0x676880&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RBX::ArrowTool ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
MouseCommand * __thiscall RBX::ArrowTool::isSticky(ArrowTool *this) //0x5DB810&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RBX::ArrowToolBase ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
basic_string&amp;lt;&amp;gt; * __thiscall RBX::ArrowToolBase::getCursorName(ArrowToolBase *this,basic_string&amp;lt;&amp;gt; *__return_storage_ptr__) //0x6723A0&lt;br /&gt;
&lt;br /&gt;
void __thiscall RBX::ArrowToolBase::onMouseIdle(ArrowToolBase *this,UIEvent *) //0x672380&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RBX::Backpack ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;bool __thiscall  RBX::Backpack::scriptShouldRun(Backpack* this,Script* pScript) //0x61BD50&lt;br /&gt;
&lt;br /&gt;
void __thiscall  RBX::Backpack::Backpack(Backpack* this) //0x61BCA0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RBX::Ball ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void __thiscall RBX::Ball::onSetSize(Ball *this) //0x691A10&lt;br /&gt;
&lt;br /&gt;
float __thiscall RBX::Ball::getRadius(Ball *this) //0x6285E0&lt;br /&gt;
&lt;br /&gt;
float __thiscall RBX::Ball::getGridVolume(Ball *this) //0x6919F0 &lt;br /&gt;
&lt;br /&gt;
Vector3 * __thiscall RBX::Ball::getCenterToCorner(Ball *this,Vector3 *param_1) //0x6285F0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RBX::Block ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void __thiscall RBX::Block::onSetSize(Block *this) //0x691940&lt;br /&gt;
&lt;br /&gt;
float __thiscall RBX::Block::getRadius(Block *this) //0x4F5D00&lt;br /&gt;
&lt;br /&gt;
Vector3 * __thiscall RBX::Block::getCenterToCorner(Block *this,Vector3* __return_storage_ptr__, Matrix3*) //0x690A00&lt;br /&gt;
&lt;br /&gt;
Matrix3 * __thiscall RBX::Block::getMoment(Block *this, Matrix3 * __return_storage_ptr__,float) //0x6285A0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RBX::Instance ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Instance* __thiscall RBX::Instance::getParent(Instance*) // 0x6D4750&lt;br /&gt;
&lt;br /&gt;
Instance* __thiscall RBX::Instance::Instance(Instance*) // 0x593C10&lt;br /&gt;
&lt;br /&gt;
void __thiscall RBX::Instance::setName(Instance*, const std::string*) // 0x592AC0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RBX::Geometry ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void __thiscall RBX::Geometry::setGridSize(Geometry *this,Vector3*) //0x6284A0&lt;br /&gt;
&lt;br /&gt;
float __thiscall RBX::Geometry::getRadius(Geometry *this) //0x6284C0&lt;br /&gt;
&lt;br /&gt;
Matrix3 * __thiscall RBX::Geometry::getMoment(Geometry *this, Matrix3 *__return_storage_ptr__) //0x6284D0&lt;br /&gt;
&lt;br /&gt;
Vector3 * __thiscall RBX::Geometry::getCenterToCorner(Geometry *this,Vector3 *__return_storage_ptr__) //0x628A90&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RBX::MouseCommand ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void __thiscall RBX::MouseCommand::~MouseCommand(MouseCommand *this) //0x6719C0&lt;br /&gt;
&lt;br /&gt;
MouseCommand * __thiscall RBX::MouseCommand::onMouseDown(MouseCommand *this) //0x5DB020&lt;br /&gt;
&lt;br /&gt;
void __thiscall RBX::MouseCommand::capture(MouseCommand *this) //0x671A20&lt;br /&gt;
&lt;br /&gt;
MouseCommand * __thiscall RBX::MouseCommand::onMouseUp(MouseCommand *this) //0x5DB030&lt;br /&gt;
&lt;br /&gt;
void __thiscall RBX::MouseCommand::releaseCapture(MouseCommand *this) //0x5DB040&lt;br /&gt;
&lt;br /&gt;
void __thiscall RBX::MouseCommand::cancel(MouseCommand *this) //0x5DB770&lt;br /&gt;
&lt;br /&gt;
MouseCommand * __thiscall RBX::MouseCommand::MouseCommand(MouseCommand *this,Workspace *param_1) //0x671BF0&lt;br /&gt;
&lt;br /&gt;
basic_string&amp;lt;&amp;gt; * __thiscall RBX::MouseCommand::getCursorName(MouseCommand *this,basic_string&amp;lt;&amp;gt;* __return_storage_ptr__) //0x5DBDA0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RBX::ScriptContext ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int __cdecl RBX::ScriptContext::print(lua_State*) // 0x5E4620&lt;br /&gt;
&lt;br /&gt;
ScriptContext* __cdecl RBX::ScriptContext::getContext(lua_State*) // 0x5E3710&lt;br /&gt;
&lt;br /&gt;
int __cdecl  RBX::ScriptContext::version(lua_State*) // 0x5E3750&lt;br /&gt;
&lt;br /&gt;
int __cdecl  RBX::ScriptContext::tick(lua_State*) // 0x5E3780&lt;br /&gt;
&lt;br /&gt;
void __cdecl RBX::ScriptContext::openState(lua_State*) // 0x5EA880&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RBX::StandardOut ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;boost::shared_ptr&amp;lt;RBX::StandardOut&amp;gt; __cdecl RBX::StandardOut::singleton(boost::shared_ptr&amp;lt;RBX::StandardOut&amp;gt;* result) // 0x5A14C0&lt;br /&gt;
&lt;br /&gt;
void __cdecl RBX::StandardOut::print(RBX::StandardOut* this, RBX::MessageType type, const char* format, ...) // 0x5A10B0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:ReverseEngineering]]&lt;/div&gt;</summary>
		<author><name>Cheaseman2092</name></author>
	</entry>
</feed>