Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit db64043

Browse files
committed
sadge
1 parent 43d80d1 commit db64043

File tree

1 file changed

+22
-88
lines changed

1 file changed

+22
-88
lines changed

byond-extools/src/core/find_functions.cpp

Lines changed: 22 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -56,27 +56,7 @@ bool Core::find_functions()
5656
{
5757
bool failed = false;
5858
#ifdef _WIN32
59-
if (ByondBuild >= 1563) {
60-
FIND_OR_DIE(Suspend, "55 8B EC 53 56 57 8B 7D 08 57 E8 ?? ?? ?? ?? 8B 1F 8B F0 8A 4F 69 83 C4 04 8B 56 18 88 4A 69 8B 4B 20 89 4E 20 8B 43 24 89 46 24 8B 45 0C C6 47 69 00 C7 43 ?? ?? ?? ?? ?? C7 43 ?? ?? ?? ?? ?? 8B 4E 18 89 41 04 F6 43 04 10");
61-
FIND_OR_DIE(ProcCleanup, "55 8B EC 53 8B ?? ?? ?? ?? ?? 56 8B 75 08 57 8B 7E 44 85 FF 74 2A 8B 47 20 89 46 44 FF 77 08 FF 37 E8 ?? ?? ?? ?? 8D 47 10 50 E8 ?? ?? ?? ?? FF 37 FF D3 57 FF D3 8B 7E 44 83 C4 14 85 FF 75 D6 FF 76 50 FF 76 48 E8");
62-
FIND_OR_DIE(CreateContext, "55 8B EC 83 EC 64 56 57 8B 7D 08 8B 4F 18 85 C9 0F 84 ?? ?? ?? ?? A1 ?? ?? ?? ?? 89 41 04 8B 4F 18 89 ?? ?? ?? ?? ?? 80 79 6b 00");
63-
FIND_OR_DIE(GetTypeById, "55 8B EC 8B 45 08 3B 05 ?? ?? ?? ?? 72 04 33 C0 5D C3 6B C0 70 03 05 ?? ?? ?? ?? 5D C3");
64-
FIND_OR_DIE(TopicFloodCheck, "55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 83 EC 2C 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 ?? ?? ?? ?? ?? ?? FF 75 08 E8 ?? ?? ?? ?? FF 75 0C 89 45");
65-
FIND_OR_DIE(SendMaps, "55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 81 EC ?? ?? ?? ?? A1 ?? ?? ?? ?? 33 C5 89 45 F0 53 56 57 50 8D 45 F4 ?? ?? ?? ?? ?? ?? A0 ?? ?? ?? ?? 84 C0 74 28");
66-
FIND_OR_DIE(DelDatum, "55 8B EC 8B 4D 08 3B 0D ?? ?? ?? ?? 73 55 A1 ?? ?? ?? ?? 8B 04 88 85 C0 74 49 8B 50 18 81 FA 00 00 00 70");
67-
FIND_OR_DIE(ToString, "55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 83 EC 18 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 ?? 64 A3 ?? ?? ?? ?? 8B 4D ?? 0F B6 C1");
68-
}
69-
else
70-
{
71-
FIND_OR_DIE(Suspend, "55 8B EC 53 56 57 8B 7D 08 57 E8 ?? ?? ?? ?? 8B 1F 8B F0 8A 4F 63 83 C4 04 8B 56 18 88 4A 63 8B 4B 20 89 4E 20 8B 43 24 89 46 24 8B 45 0C C6 47 63 00 C7 43 ?? ?? ?? ?? ?? C7 43 ?? ?? ?? ?? ?? 8B 4E 18 89 41 04 F6 43 04 10");
72-
FIND_OR_DIE(ProcCleanup, "55 8B EC 53 8B ?? ?? ?? ?? ?? 56 8B 75 08 57 8B 7E 44 85 FF 74 2A 8B 47 1C 89 46 44 FF 77 08 FF 37 E8 ?? ?? ?? ?? 8D 47 10 50 E8 ?? ?? ?? ?? FF 37 FF D3 57 FF D3 8B 7E 44 83 C4 14 85 FF 75 D6 FF 76 50 FF 76 48 E8");
73-
FIND_OR_DIE(CreateContext, "55 8B EC 83 EC 64 56 57 8B 7D 08 8B 4F 18 85 C9 0F 84 ?? ?? ?? ?? A1 ?? ?? ?? ?? 89 41 04 8B 4F 18 89 ?? ?? ?? ?? ?? 80 79 69 00");
74-
FIND_OR_DIE(GetTypeById, "55 8B EC 8B 45 08 3B 05 ?? ?? ?? ?? 72 04 33 C0 5D C3 6B C0 64 03 05 ?? ?? ?? ?? 5D C3");
75-
FIND_OR_DIE(TopicFloodCheck, "55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 83 EC 2C 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 ?? ?? ?? ?? ?? ?? FF 75 08 E8 ?? ?? ?? ?? 83 C4 04 85 C0");
76-
FIND_OR_DIE(SendMaps, "55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 81 EC ?? ?? ?? ?? A1 ?? ?? ?? ?? 33 C5 89 45 F0 53 56 57 50 8D 45 F4 ?? ?? ?? ?? ?? ?? A0 ?? ?? ?? ?? 04 01 75 05 E8 ?? ?? ?? ?? E8");
77-
FIND_OR_DIE(DelDatum, "55 8b ec 8b 4d 08 3b 0d ?? ?? ?? ?? 73 55 a1 ?? ?? ?? ?? 8b 04 88 85 c0 74 49 8b 50 14 81 fa 00 00 00 70");
78-
FIND_OR_DIE(ToString, "55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 83 EC 1C 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 ?? ?? ?? ?? ?? ?? 8B F1 C7 45 F0 00 00 00 00 f3");
79-
}
59+
FIND_OR_DIE(Suspend, "55 8B EC 53 56 57 8B 7D 08 57 E8 ?? ?? ?? ?? 8B 1F 8B F0 8A 4F 69 83 C4 04 8B 56 18 88 4A 69 8B 4B 20 89 4E 20 8B 43 24 89 46 24 8B 45 0C C6 47 69 00 C7 43 ?? ?? ?? ?? ?? C7 43 ?? ?? ?? ?? ?? 8B 4E 18 89 41 04 F6 43 04 10");
8060
FIND_OR_DIE(StartTiming, "55 8B EC 56 8B 75 ?? 56 80 4E ?? ??");
8161
FIND_OR_DIE(SetVariable, "55 8B EC 8B 4D 08 0F B6 C1 48 57 8B 7D 10 83 F8 53 0F ?? ?? ?? ?? ?? 0F B6 80 ?? ?? ?? ?? FF 24 85 ?? ?? ?? ?? FF 75 18 FF 75 14 57 FF 75 0C E8 ?? ?? ?? ?? 83 C4 10 5F 5D C3");
8262
FIND_OR_DIE(GetProcArrayEntry, "55 8B EC 8B 45 08 3B 05 ?? ?? ?? ?? 72 04 33 C0 5D C3 8D 0C C0 A1 ?? ?? ?? ?? 8D 04 88 5D C3");
@@ -85,6 +65,9 @@ bool Core::find_functions()
8565
FIND_OR_DIE(CallGlobalProc, "55 8B EC 81 EC ?? ?? ?? ?? A1 ?? ?? ?? ?? 33 C5 89 45 ?? 8B 55 ?? 8B 45 ??");
8666
FIND_OR_DIE(CrashProc, "55 8B EC 6A ?? 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 A1 ?? ?? ?? ?? 33 C5 50 8D 45 ?? 64 A3 ?? ?? ?? ?? A1 ?? ?? ?? ?? A8 ?? 75 ?? 83 C8 ?? A3 ?? ?? ?? ?? B9 ?? ?? ?? ?? C7 45 ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 ?? C7 45 ?? ?? ?? ?? ?? B9 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8D 45 ??")
8767
FIND_OR_DIE(GetVariable, "55 8B EC 8B 4D ?? 0F B6 C1 48 83 F8 ?? 0F 87 ?? ?? ?? ?? 0F B6 80 ?? ?? ?? ?? FF 24 85 ?? ?? ?? ?? FF 75 ?? FF 75 ?? E8 ?? ?? ?? ??");
68+
FIND_OR_DIE(ProcCleanup, "55 8B EC 53 8B ?? ?? ?? ?? ?? 56 8B 75 08 57 8B 7E 44 85 FF 74 2A 8B 47 20 89 46 44 FF 77 08 FF 37 E8 ?? ?? ?? ?? 8D 47 10 50 E8 ?? ?? ?? ?? FF 37 FF D3 57 FF D3 8B 7E 44 83 C4 14 85 FF 75 D6 FF 76 50 FF 76 48 E8");
69+
FIND_OR_DIE(CreateContext, "55 8B EC 83 EC 64 56 57 8B 7D 08 8B 4F 18 85 C9 0F 84 ?? ?? ?? ?? A1 ?? ?? ?? ?? 89 41 04 8B 4F 18 89 ?? ?? ?? ?? ?? 80 79 6B 00");
70+
FIND_OR_DIE(GetTypeById, "55 8B EC 8B 45 08 3B 05 ?? ?? ?? ?? 72 04 33 C0 5D C3 6B C0 70 03 05 ?? ?? ?? ?? 5D C3");
8871
FIND_OR_DIE(MobTableIndexToGlobalTableIndex, "55 8B EC 8B 45 08 3B 05 ?? ?? ?? ?? 72 04 33 C0 5D C3 C1 E0 04 03 05 ?? ?? ?? ?? 5D C3");
8972
FIND_OR_DIE(Runtime, "55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 83 EC 40 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 ?? ?? ?? ?? ?? ?? 89 65 F0 A1");
9073
FIND_OR_DIE(GetTurf, "55 8B EC 8B 45 08 0F BF ?? ?? ?? ?? ?? 53 56 0F B7 F0 57 3B F2 7D 3A 8B 45 0C 0F BF ?? ?? ?? ?? ?? 0F B7 D8 3B DF 7D 29");
@@ -94,30 +77,24 @@ bool Core::find_functions()
9477
FIND_OR_DIE(SetAssocElement1, "55 8B EC 83 EC 14 8B 4D 08 C6 45 FF 00 80 F9 05 76 15 80 F9 21 74 14 80 F9 0D 74 0F 80 F9 0E 0F 85 ?? ?? ?? ?? EB 04 84 C9 74 7A 6A 00 8D 45 FF 50 FF 75 0C 51 6A 00 6A 7C");
9578
FIND_OR_DIE(CreateList, "55 8B EC 8B ?? ?? ?? ?? ?? 56 85 C9 74 1B A1 ?? ?? ?? ?? 49 89 ?? ?? ?? ?? ?? 8B 34 88 81 FE ?? ?? ?? ?? 0F 85 ?? ?? ?? ?? 8B ?? ?? ?? ?? ?? 8B F1 81 F9 ?? ?? ?? ?? 75 1B 51 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 0C B8 ?? ?? ?? ?? 5E 5D C3");
9679
FIND_OR_DIE(Length, "55 8B EC 8B 4D 08 83 EC 18 0F B6 C1 48 53 56 57 83 F8 53 0F 87 ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? FF 24 ?? ?? ?? ?? ?? FF 75 0C");
97-
if (ByondBuild <= 1506)
98-
{
99-
FIND_OR_DIE(IsInContainer, "55 8B EC 8B 45 10 83 EC 38 3C 0F 75 4D FF 75 14 E8 ?? ?? ?? ?? 83 C4 04 85 C0 74 3B 83 78 04 00 74 35 6A 0F FF 75 14 FF 75 10 E8");
100-
}
101-
else
102-
{
103-
FIND_OR_DIE(IsInContainer, "55 8B EC 8B 4D 10 83 EC 38 0F B6 C1 56 57 83 F8 53 0F 87 ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? FF 24 ?? ?? ?? ?? ?? 53 6A 0F FF 75 14 51 E8");
104-
}
80+
FIND_OR_DIE(IsInContainer, "55 8B EC 8B 4D 10 83 EC 38 0F B6 C1 56 57 83 F8 53 0F 87 ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? FF 24 ?? ?? ?? ?? ?? 53 6A 0F FF 75 14 51 E8");
81+
FIND_OR_DIE(ToString, "55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 83 EC 14 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 ?? 64 A3 ?? ?? ?? ?? 8B 4D ??");
82+
FIND_OR_DIE(TopicFloodCheck, "55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 83 EC 2C 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 ?? ?? ?? ?? ?? ?? FF 75 08 E8 ?? ?? ?? ?? 83 C4 04 85 C0");
10583
FIND_OR_DIE(PrintToDD, "55 8B EC 56 8B ?? ?? ?? ?? ?? 85 F6 74 30 8B 46 0C 8B 40 04 85 C0 74 1C 50 FF 75 08 FF 15");
10684
FIND_OR_DIE(DisconnectClient1, "55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 81 EC ?? ?? ?? ?? A1 ?? ?? ?? ?? 33 C5 89 45 F0 56 50 8D 45 F4 ?? ?? ?? ?? ?? ?? 6A 00 8D");
10785
FIND_OR_DIE(DisconnectClient2, "55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 51 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 ?? ?? ?? ?? ?? ?? 8B 5D 08 ?? ?? ?? ?? ?? ?? ?? 0F 83");
10886
FIND_OR_DIE(GetSocketHandleStruct, "55 8B EC FF 75 08 E8 ?? ?? ?? ?? 83 C4 04 85 C0 74 19 0F B7 40 02 8B ?? ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 85 C0 74 05 83 C0 74 5D C3 33 C0 5D C3");
10987
FIND_OR_DIE(CallProcByName, "55 8B EC 83 EC 0C 53 8B 5D 10 8D 45 FF 56 8B 75 14 57 6A 01 50 FF 75 1C C6 45 FF 00 FF 75 18 6A 00 56 53");
88+
FIND_OR_DIE(SendMaps, "55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 81 EC ?? ?? ?? ?? A1 ?? ?? ?? ?? 33 C5 89 45 F0 53 56 57 50 8D 45 F4 ?? ?? ?? ?? ?? ?? A0 ?? ?? ?? ?? 84 C0 74 09 0F ?? ?? ?? ?? C0");
11089
FIND_OR_DIE(GetGlobalByName, "55 8B EC 51 FF 35 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 04 85 C0 75 26 FF 75 08 E8 ?? ?? ?? ?? FF 30 68 ?? ?? ?? ?? E8");
111-
//FIND_OR_DIE(GetMemoryStats, "55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 83 EC 24 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 ?? ?? ?? ?? ?? ?? 8D 4D D0 C7 45 ?? ?? ?? ?? ?? E8");
90+
FIND_OR_DIE(DelDatum, "55 8b ec 8b 4d 08 3b 0d ?? ?? ?? ?? 73 55 a1 ?? ?? ?? ?? 8b 04 88 85 c0 74 49 8b 50 14 81 fa 00 00 00 70");
11291
FIND_OR_DIE(GetRBTreeMemoryUsage, "55 8B EC 56 8B 75 08 57 33 FF 85 F6 74 19 8B FF");
11392
FIND_OR_DIE(InitializeListFromContext, "55 8B EC 56 FF 75 08 E8 ?? ?? ?? ?? 8B F0 83 C4 04 85 F6 74 2A 8B ?? ?? ?? ?? ?? 0F B7 4E 0C 66 29 4A 42 8B 46 0C");
11493
FIND_OR_DIE(DestroyList, "55 8B EC A1 ?? ?? ?? ?? 56 57 8B 7D 08 8B 34 B8 85 F6 0F 84 ?? ?? ?? ?? 83 7E 10 00 74 1A 6A 0F 57");
11594
FIND_OR_DIE(DestroyDatum, "55 8B EC 8B 55 10 0F B6 C2 83 C0 FE 83 F8 1F 0F 87 ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? FF 24 ?? ?? ?? ?? ?? 8B 4D 14 3B ?? ?? ?? ?? ?? 0F 83 ?? ?? ?? ?? A1 ?? ?? ?? ?? 8B 04 88 85 C0 0F 84");
116-
if (ByondVersion > 513)
117-
{
118-
FIND_OR_DIE(GetStringTableIndexUTF8, "55 8B EC 8B 45 ?? 83 EC ?? 53 56 8B 35 ?? ?? ?? ??");
119-
}
120-
if (failed) return false;
95+
FIND_OR_DIE(GetStringTableIndexUTF8, "55 8B EC 8B 45 ?? 83 EC ?? 53 56 8B 35 ?? ?? ?? ??");
96+
if (failed)
97+
return false;
12198
int offset = *(int *)((char *)TopicFloodCheck + 0x2C);
12299
GetBSocket = (GetBSocketPtr)((char *)TopicFloodCheck + 0x2C + offset + 4); //done this way because pattern scanning would result in a different function
123100

@@ -132,45 +109,32 @@ bool Core::find_functions()
132109
x_ref_count_call = (char *)Pocket::Sigscan::FindPattern(BYONDCORE, "FF 75 10 E8 ?? ?? ?? ?? FF 75 0C 8B F8 FF 75 08 E8 ?? ?? ?? ?? 57", 17);
133110
IncRefCount = (IncRefCountPtr)(x_ref_count_call + *(int *)x_ref_count_call + 4);
134111

135-
char *datum_inc_function = (char *)Pocket::Sigscan::FindPattern(BYONDCORE, "55 8b ec 8b 4d 08 3b 0d ?? ?? ?? ?? 73 11 a1 ?? ?? ?? ?? 8b 04 88 85 c0 74 05 ff 40 10 5d c3 6a");
112+
char *datum_inc_function = (char *)Pocket::Sigscan::FindPattern(BYONDCORE, "55 8b ec 8b 4d 08 3b 0d ?? ?? ?? ?? 73 11 a1 ?? ?? ?? ?? 8b 04 88 85 c0 74 05 ff 40 14 5d c3 6a 21 51 e8 ?? ?? ?? ??");
136113
datum_pointer_table_length = *(unsigned int **)(datum_inc_function + 8);
137114
datum_pointer_table = *(RawDatum ****)(datum_inc_function + 15);
138115

139116
// the signature below is for a function that fetches a list via the real GetListPointerById and then checks if the list exists, runtiming otherwise
140117
char *get_list_ptr_ptr = (char *)Pocket::Sigscan::FindPattern(BYONDCORE, "55 8B EC FF 75 08 E8 ?? ?? ?? ?? 83 C4 04 85 C0 75 13 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 04 5D E9 ?? ?? ?? ?? 5D C3", 7);
141118
GetListPointerById = (GetListPointerByIdPtr)(get_list_ptr_ptr + *(int *)get_list_ptr_ptr + 4);
119+
142120
current_execution_context_ptr = *(ExecutionContext ***)Pocket::Sigscan::FindPattern(BYONDCORE, "A1 ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 83 C4 08 89 48 28 8D ?? ?? ?? ?? ?? 89 48 2C 83 3D ?? ?? ?? ?? ?? 74 25 8B 00 FF 30 E8 ?? ?? ?? ?? 83 C4 04 FF 30 E8 ?? ?? ?? ?? 83 C4 04 FF 30 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 08 66 ?? ?? ?? ?? ?? ?? A1 ?? ?? ?? ?? 75 28 A8 02 75 24 E8 ?? ?? ?? ?? 85 C0 75 09 50", 1);
143121
misc_entry_table = **(MiscEntry ****)Pocket::Sigscan::FindPattern(BYONDCORE, "A1 ?? ?? ?? ?? FF 34 B8 FF D6 47 83 C4 04 3B ?? ?? ?? ?? ?? 72 EA FF 35 ?? ?? ?? ?? FF D6 33 FF 83 C4 04 39 ?? ?? ?? ?? ?? 76 1E", 1);
144-
some_flags_including_profile = *(unsigned int **)Pocket::Sigscan::FindPattern(BYONDCORE, "F7 05 ?? ?? ?? ?? ?? ?? ?? ?? 74 34 8B 01 FF 30 E8 ?? ?? ?? ?? 83 C4 04 8B D8 E8 ?? ?? ?? ?? 8B F0 8B FA E8 ?? ?? ?? ?? 85 DB 74 02 FF 03 8B ?? ?? ?? ?? ?? 89 71 70 89 79 74 89 41 78 89 51 7C 83 3D ?? ?? ?? ?? ?? 5B 74 37", 2);
145-
global_var_table = **(Value ***)Pocket::Sigscan::FindPattern(BYONDCORE, "C3 8B ?? ?? ?? ?? ?? 8B 04 FA 8B 54 FA 04 5F 5E 5B 8B E5 5D C3", 3);
146-
obj_table = *(TableHolder2 **)Pocket::Sigscan::FindPattern(BYONDCORE, "A1 ?? ?? ?? ?? 33 FF C1 E0 02 89 06 89 7D 0C 39 ?? ?? ?? ?? ?? 0F 86 ?? ?? ?? ?? A1 ?? ?? ?? ?? 8B 3C B8 85 FF 74 6A FF 03 83 7F", 28);
147-
datum_table = *(TableHolder2 **)Pocket::Sigscan::FindPattern(BYONDCORE, "A1 ?? ?? ?? ?? 8B 04 88 85 C0 74 1E FF 03 83 78 04 00 74 09 0F B7 40 0A C1 E0 04 EB 02 33 C0", 1);
148-
list_table = *(TableHolder2 **)Pocket::Sigscan::FindPattern(BYONDCORE, "A1 ?? ?? ?? ?? 8B 04 B8 89 45 0C 85 C0 74 21 FF 03 FF 70 04", 1);
149-
mob_table = *(TableHolder2 **)Pocket::Sigscan::FindPattern(BYONDCORE, "A1 ?? ?? ?? ?? 8B 3C B8 85 FF 0F 84 ?? ?? ?? ?? FF 03 83 7F", 1);
150-
suspended_proc_list = *(SuspendedProcList **)Pocket::Sigscan::FindPattern(BYONDCORE, "8B 35 ?? ?? ?? ?? 8B 80 88 00 00 00 57 8B 3D ?? ?? ?? ?? 8B D7 89 45 FC A1 ?? ?? ?? ?? 8B D8 89 45 F8 89 75 F4 3B DA", 2);
151122
#else
152-
if( ByondBuild > 1563 ){
153-
FIND_OR_DIE(GetStringTableEntry, "55 89 E5 83 EC ?? 8B 45 ?? 39 05 ?? ?? ?? ?? ?? ?? 8B 15");
154-
}
155-
else
156-
{
157-
FIND_OR_DIE(GetStringTableEntry, "55 89 E5 83 EC ?? 8B 45 ?? 39 05 ?? ?? ?? ?? ?? ?? 8B 04");
158-
}
159123
FIND_OR_DIE(Suspend, "55 89 E5 57 31 FF 56 89 C6 53 83 EC ?? 89 F0"); //regparm3
160124
FIND_OR_DIE(CrashProc, "55 89 E5 53 83 EC ?? 80 3D ?? ?? ?? ?? ?? 75 ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? 85 C0 75 ?? C7 04 24 ?? ?? ?? ?? 8D 5D ?? E8 ?? ?? ?? ?? 8B 45 ?? 89 5C 24 ?? C7 04 24 ?? ?? ?? ?? 89 44 24 ?? E8 ?? ?? ?? ?? C7 04 24 ?? ?? ?? ??");
161125
FIND_OR_DIE(StartTiming, "55 89 E5 83 EC ?? 85 C0 89 5D ?? 89 C3 89 75 ?? 89 7D ?? 74 ?? 8B 50 ??"); //regparm3
162126
FIND_OR_DIE(GetVariable, "55 89 E5 81 EC ?? ?? ?? ?? 8B 55 ?? 89 5D ?? 8B 5D ?? 89 75 ?? 8B 75 ??");
163127
FIND_OR_DIE(GetProcArrayEntry, "55 31 C0 89 E5 8B 55 ?? 39 15 ?? ?? ?? ?? 76 ?? 8D 04 D2");
164-
128+
FIND_OR_DIE(GetStringTableEntry, "55 89 E5 83 EC ?? 8B 45 ?? 39 05 ?? ?? ?? ??");
165129
FIND_OR_DIE(GetProfileInfo, "55 31 C0 89 E5 53 83 EC ?? 8B 5D ?? 8B 15 ?? ?? ?? ??");
166130
FIND_OR_DIE(CallGlobalProc, "55 89 E5 81 EC ?? ?? ?? ?? 89 5D ?? 89 C3 0F B6 45");
167131
FIND_OR_DIE(ProcCleanup, "55 89 E5 56 89 C6 53 83 EC ?? 8B 58 ??");
168132
FIND_OR_DIE(CreateContext, "55 89 E5 57 56 89 C6 53 89 D3 83 EC ?? 80 3D ?? ?? ?? ?? ??");
169133
FIND_OR_DIE(Runtime, "55 89 E5 57 56 53 83 EC ?? A1 ?? ?? ?? ?? 85 C0 0F 84 ?? ?? ?? ?? 0F B6 48 ??");
170134
FIND_OR_DIE(DisconnectClient2, "55 89 E5 57 56 53 83 EC ?? 0F B7 7D ?? 66 3B 3D ?? ?? ?? ??");
171135
FIND_OR_DIE(CreateList, "55 89 E5 57 56 53 83 EC ?? A1 ?? ?? ?? ?? 8B 75 ?? 85 C0 0F 84 ?? ?? ?? ??");
172-
FIND_OR_DIE(SendMaps, "55 89 E5 57 56 53 81 EC ?? ?? ?? ?? 80 3D ?? ?? ?? ?? ?? 0F 85 ?? ?? ?? ?? 80");
173-
FIND_OR_DIE(ToString, "55 89 E5 83 EC ?? 89 5D ?? 8B 5D ?? 8B 45 ?? 89 75 ?? 8B 75 ?? 89 7D ??");
136+
FIND_OR_DIE(SendMaps, "55 89 E5 57 56 53 81 EC ?? ?? ?? ?? 80 3D ?? ?? ?? ?? ?? 0F 85 ?? ?? ?? ??");
137+
FIND_OR_DIE(ToString, "55 89 E5 83 EC 68 A1 ?? ?? ?? ?? 8B 15 ?? ?? ?? ?? 8B 0D ?? ?? ?? ?? 89 5D ??");
174138
FIND_OR_DIE(Length, "55 89 E5 57 56 53 83 EC ?? 8B 45 ?? 8B 5D ?? 3C ??");
175139
FIND_OR_DIE(PrintToDD, "55 89 E5 53 83 EC ?? 8B 1D ?? ?? ?? ?? 8B 55 ?? 85 DB");
176140
FIND_OR_DIE(TopicFloodCheck, "55 89 E5 57 56 53 83 EC ?? 0F B7 45 ?? 89 04 24 E8 ?? ?? ?? ?? BA ?? ?? ?? ??");
@@ -180,43 +144,14 @@ bool Core::find_functions()
180144
FIND_OR_DIE(AppendToContainer, "55 89 E5 83 EC ?? 3C ?? 89 5D ?? 8B 5D ?? 89 75 ?? 8B 75 ?? 89 7D ?? 76 ??");
181145
FIND_OR_DIE(DisconnectClient1, "55 89 E5 81 EC ?? ?? ?? ?? 89 75 ?? 8D B5 ?? ?? ?? ?? 89 5D ?? 89 D3");
182146
FIND_OR_DIE(GetListPointerById, "55 89 E5 83 EC ?? 89 04 24 E8 ?? ?? ?? ??");
183-
if (ByondBuild >= 1523)
184-
{
185-
FIND_OR_DIE(SetAssocElement2, "55 B9 ?? ?? ?? ?? 89 E5 83 EC ?? 89 7D ??");
186-
}
187-
else
188-
{
189-
FIND_OR_DIE(SetAssocElement1, "55 B9 ?? ?? ?? ?? 89 E5 83 EC ?? 89 75 ??");
190-
}
147+
FIND_OR_DIE(SetAssocElement2, "55 B9 ?? ?? ?? ?? 89 E5 83 EC ?? 89 7D ??");
191148
FIND_OR_DIE(CallProcByName, "55 89 E5 83 EC ?? 89 5D ?? 89 D3 8B 55 ?? 89 45 ?? 0F B6 45 ?? 89 75 ?? 89 CE 8B 4D ?? 89 7D ?? 89 14 24 8B 55 ?? 88 45 ?? 0F B6 F8 8D 45 ?? 89 44 24 ?? 89 F8 89 4C 24 ?? 31 C9 C6 45 ?? ?? C7 44 24 ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 80 7D ?? ?? 0F 84 ?? ?? ?? ?? 3D ?? ?? ?? ?? 74 ?? 8B 4D ?? 8B 55 ?? 89 44 24 ?? 8D 45 ?? C7 44 24 ?? ?? ?? ?? ?? 89 4C 24 ?? 8B 4D ?? 89 54 24 ?? 8B 55 ?? 89 3C 24 89 4C 24 ?? 89 F1 89 54 24 ?? 89 DA E8 ?? ?? ?? ?? 8B 45 ?? 8B 55 ?? 8B 4D ?? 89 01 89 51 ?? 8D B6 ?? ?? ?? ?? 8B 45 ?? 8B 5D ?? 8B 75 ?? 8B 7D ?? 89 EC 5D C3 F7 C7 ?? ?? ?? ?? 74 ?? 80 7D ?? ?? 0F 84 ?? ?? ?? ?? 8B 4D ?? C7 01 ?? ?? ?? ?? C7 41 ?? ?? ?? ?? ?? 8B 45 ?? 8B 55 ?? 89 44 24 ?? 89 14 24 E8 ?? ?? ?? ?? 80 7D ?? ?? 74 ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? C7 44 24 ?? ?? ?? ?? ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 ?? 8B 55 ?? C7 44 24 ?? ?? ?? ?? ?? C7 44 24 ?? ?? ?? ?? ?? 89 04 24 89 54 24 ?? E8 ?? ?? ?? ?? 8B 55 ?? 89 14 24 E8 ?? ?? ?? ?? 8B 18 C7 44 24 ?? ?? ?? ?? ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 5C 24 ?? 89 04 24 E8 ?? ?? ?? ?? C7 44 24 ?? ?? ?? ?? ?? 89 04 24 E8 ?? ?? ?? ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 89 04 24 E8 ?? ?? ?? ??"); // OH DEAR GOD
192-
FIND_OR_DIE(DelDatum, "55 89 E5 53 83 EC 44 8B 45 08 3B 05 ?? ?? ?? ?? 73 2C 8B 15 ?? ?? ?? ?? 8B 0C 82 85 C9 74 1F 8B 51 ??");
149+
FIND_OR_DIE(DelDatum, "55 89 E5 53 83 EC 44 8B 45 08 3B 05 ?? ?? ?? ?? 73 2C 8B 15 ?? ?? ?? ?? 8B 0C 82 85 C9 74 1F 8B 51 14 81 FA 00 00 00 70");
193150
FIND_OR_DIE(DecRefCount, "55 89 E5 83 EC ?? 8B 45 08 89 5D ?? 8B 5D 0C 89 75 ?? 3C 54");
194151
FIND_OR_DIE(IncRefCount, "55 89 E5 83 EC ?? 8B 55 08 8b 45 0C 80 FA 54 76 07 c9 c3 90");
195152
FIND_OR_DIE(GetAssocElement, "55 89 E5 83 EC ?? 89 4D C4 B9 7B 00 00 00 89 5D F4 89 D3 89 75 F8 89 C6 89 D0 8B 55 C4 89 7D FC C7 44 24 04 00 00 00 00 C7 04 24 00 00 00 00 E8 ?? ?? ?? ?? 3D FF FF 00 00"); // regparm3
196-
#warning TODO: IsInContainer
197-
#warning TODO: GetSocketHandleStruct
198-
#warning TODO: GetGlobalByName
199-
#warning TODO: global_var_table
200-
#warning TODO: GetTableHolderThingyById
201-
#warning TODO: GetBSocket
202-
#warning TODO: name_table
203-
switch (ByondVersion)
204-
{
205-
case 512:
206-
FIND_OR_DIE(SetVariable, "55 89 E5 81 EC ?? ?? ?? ?? 89 75 ?? 8B 55 ?? 8B 75 ??");
207-
FIND_OR_DIE(GetStringTableIndex, "55 89 E5 57 56 53 89 D3 83 EC ?? 85 C0"); // regparm3
208-
break;
209-
case 513:
210-
FIND_OR_DIE(SetVariable, "55 89 E5 81 EC ?? ?? ?? ?? 8B 55 ?? 8B 45 ??");
211-
FIND_OR_DIE(GetStringTableIndexUTF8, "55 89 E5 57 56 89 CE 53 89 D3 83 EC ?? 8B 55 ?? 85 C0"); // regparm3
212-
break;
213-
case 514:
214-
FIND_OR_DIE(SetVariable, "55 89 E5 81 EC ?? ?? ?? ?? 8B 55 ?? 89 5D ?? 8B 4D");
215-
FIND_OR_DIE(GetStringTableIndexUTF8, "55 89 E5 57 56 89 CE 53 89 D3 83 EC ?? 8B 55 ?? 85 C0");
216-
break;
217-
default:
218-
break;
219-
}
153+
FIND_OR_DIE(SetVariable, "55 89 E5 81 EC A8 00 00 00 8B 55 ?? 89 5D ?? 8B 4D ?? 89 7D ?? 8B 5D ??");
154+
FIND_OR_DIE(GetStringTableIndexUTF8, "55 89 E5 57 56 89 CE 53 89 D3 83 EC ?? 8B 55 ?? 85 C0") // regparm3
220155
if (failed)
221156
return false;
222157

@@ -225,7 +160,6 @@ bool Core::find_functions()
225160

226161
current_execution_context_ptr = *(ExecutionContext ***)Pocket::Sigscan::FindPattern(BYONDCORE, "A1 ?? ?? ?? ?? 8D 7D ?? 89 78 ??", 1);
227162
misc_entry_table = **(MiscEntry ****)Pocket::Sigscan::FindPattern(BYONDCORE, "A1 ?? ?? ?? ?? 8B 04 98 85 C0 74 ?? 89 04 24 E8 ?? ?? ?? ?? 8B 15 ?? ?? ?? ??", 1);
228-
some_flags_including_profile = *(unsigned int **)Pocket::Sigscan::FindPattern(BYONDCORE, "A1 ?? ?? ?? ?? A8 ?? 0F 85 ?? ?? ?? ??", 2);
229163
#endif
230164
return !failed;
231-
}
165+
}

0 commit comments

Comments
 (0)