Skip to content

Commit 7a1fc88

Browse files
committed
add back ltcg sig, update ci
1 parent bb955b0 commit 7a1fc88

3 files changed

Lines changed: 30 additions & 7 deletions

File tree

.github/workflows/ci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ jobs:
4343
name: rbxfpsunlocker (Release, x64)
4444
path: x64
4545
- name: Zip binaries
46-
run: zip -9 rbxfpsunlocker-x64.zip x64/rbxfpsunlocker.exe
46+
run: zip -9 ../rbxfpsunlocker-x64.zip rbxfpsunlocker.exe
47+
working-directory: ./x64
4748
- name: Release
4849
uses: softprops/action-gh-release@v1
4950
with:

Source/main.cpp

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ struct RobloxProcess
195195
{
196196
auto gts_fn = result + 14 + ProcUtil::Read<int32_t>(handle, result + 10);
197197

198-
printf("[%p] GetTaskScheduler (sig 0): %p\n", handle, gts_fn);
198+
printf("[%p] GetTaskScheduler (sig studio): %p\n", handle, gts_fn);
199199

200200
uint8_t buffer[0x100];
201201
if (ProcUtil::Read(handle, gts_fn, buffer, sizeof(buffer)))
@@ -209,13 +209,29 @@ struct RobloxProcess
209209
}
210210
} else
211211
{
212-
// old signature (LTCG): 55 8B EC 83 E4 F8 83 EC 08 E8 ?? ?? ?? ?? 8D 0C 24
212+
// 55 8B EC 83 E4 F8 83 EC 08 E8 ?? ?? ?? ?? 8D 0C 24
213+
if (auto result = (const uint8_t *)ProcUtil::ScanProcess(handle, "\x55\x8B\xEC\x83\xE4\xF8\x83\xEC\x08\xE8\xDE\xAD\xBE\xEF\x8D\x0C\x24", "xxxxxxxxxx????xxx", start, end))
214+
{
215+
auto gts_fn = result + 14 + ProcUtil::Read<int32_t>(handle, result + 10);
216+
217+
printf("[%p] GetTaskScheduler (sig ltcg): %p\n", handle, gts_fn);
218+
219+
uint8_t buffer[0x100];
220+
if (ProcUtil::Read(handle, gts_fn, buffer, sizeof(buffer)))
221+
{
222+
if (auto inst = sigscan::scan("\xA1\x00\x00\x00\x00\x8B\x4D\xF4", "x????xxx", (uintptr_t)buffer, (uintptr_t)buffer + 0x100)) // mov eax, <TaskSchedulerPtr>; mov ecx, [ebp-0Ch])
223+
{
224+
//printf("[%p] Inst: %p\n", process, gts_fn + (inst - buffer));
225+
return (const void *)(*(uint32_t *)(inst + 1));
226+
}
227+
}
228+
}
213229
// 55 8B EC 83 EC 10 56 E8 ?? ?? ?? ?? 8B F0 8D 45 F0
214-
if (auto result = (const uint8_t *)ProcUtil::ScanProcess(handle, "\x55\x8B\xEC\x83\xEC\x10\x56\xE8\x00\x00\x00\x00\x8B\xF0\x8D\x45\xF0", "xxxxxxxx????xxxxx", start, end))
230+
else if (auto result = (const uint8_t *)ProcUtil::ScanProcess(handle, "\x55\x8B\xEC\x83\xEC\x10\x56\xE8\x00\x00\x00\x00\x8B\xF0\x8D\x45\xF0", "xxxxxxxx????xxxxx", start, end))
215231
{
216232
auto gts_fn = result + 12 + ProcUtil::Read<int32_t>(handle, result + 8);
217233

218-
printf("[%p] GetTaskScheduler (sig 1): %p\n", handle, gts_fn);
234+
printf("[%p] GetTaskScheduler (sig non-ltcg): %p\n", handle, gts_fn);
219235

220236
uint8_t buffer[0x100];
221237
if (ProcUtil::Read(handle, gts_fn, buffer, sizeof(buffer)))
@@ -232,7 +248,7 @@ struct RobloxProcess
232248
{
233249
auto gts_fn = result + 15 + ProcUtil::Read<int32_t>(handle, result + 11);
234250

235-
printf("[%p] GetTaskScheduler (sig 2): %p\n", handle, gts_fn);
251+
printf("[%p] GetTaskScheduler (sig uwp): %p\n", handle, gts_fn);
236252

237253
uint8_t buffer[0x100];
238254
if (ProcUtil::Read(handle, gts_fn, buffer, sizeof(buffer)))
@@ -280,6 +296,7 @@ struct RobloxProcess
280296

281297
if (!ts_ptr)
282298
{
299+
const auto start_time = std::chrono::steady_clock::now();
283300
ts_ptr = FindTaskScheduler();
284301

285302
if (!ts_ptr)
@@ -288,6 +305,11 @@ struct RobloxProcess
288305
NotifyError("rbxfpsunlocker Error", "Unable to find TaskScheduler! This is probably due to a Roblox update-- watch the github for any patches or a fix.");
289306
return;
290307
}
308+
else
309+
{
310+
const auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - start_time).count();
311+
printf("[%p] Found TaskScheduler address in %lldms\n", handle, elapsed);
312+
}
291313
}
292314

293315
if (ts_ptr && !fd_ptr)

Source/rfu.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#pragma once
22

3-
#define RFU_VERSION "4.4.3"
3+
#define RFU_VERSION "4.4.4"
44
#define RFU_GITHUB_REPO "axstin/rbxfpsunlocker"
55

66
bool CheckForUpdates();

0 commit comments

Comments
 (0)