İnceleniyor Roxie Client NoRes Emulator v2.0 - Val 102, VAL 5 FIX*

Gençler selam öncelikle şunu söyleyeyim emulatoru statik ve dinamik şekilde iki ayrı katmanla inceledim. İlk olarak 102 yemenizin sebebi task modulesin entegre edilmemiş olması yarın task modules paylaşırım sıkıntı değil o. Ama arkadaşın projesi maalesef cortexten veyahut divexeden pastelenmiş gibi duruyor.
kardeş "task modules yapılmamış, ondan 102 yiyorsunuz" demişsin. aynen kanka. Roxie taskları alıp cevaplıyor, git bak. 102 sebebi task cevabı eksik olması değil, cevabın sahte olması. Fark bu. Sunucu ~5 HB sonra sahte olduğunu anlıyor, session kill ediyor, VAN-102 geliyor. Daha bu farkı bilmiyosan "statik ve dinamik iki katmanla inceledim" sözü havada kalıyor.

paste demişsin ya kanıt nerde?. Kanka statik+dinamik analiz yaptım diyosan hangi fonksiyon, hangi satır, hangi sabit birebir aynı? Screenshot, hash, diff, ne olursa gönder bakalım :)

paylaşta görelim nası oluyomuş task modules, f11 CDN URL formatını, modül encryption chain'ini falan bildiğinden şüpheliyim açıkçası. Sen sadece "fake cevap" seviyesinde konuşuyorsun, oradan ötesini bilseydin şu ilk mesajda "yapılmamış" diye yazmazdın. Paylaşırsan bir daha bakarız, paylaşmazsan yazık, boş atmışsın.

al bak bakayım yapılıyo mu yapılmıyo mu task?
fDQPLCI.png

n7g7VWk.png


kullandığın task and modules bu sanırım istersen hepsini src olarak çıkartayım :haha:
#include <windows.h>
#include <winhttp.h>
#include <string>
#include <vector>

#pragma comment(lib, "winhttp.lib")

bool SendVanguardGatewayRequest(
const std::wstring& serverHost,
USHORT serverPort,
const std::wstring& region,
uint32_t actionType,
const std::vector<BYTE>& payloadData,
const std::string& xVg2Token,
std::string& outResponseBody,
DWORD& outStatusCode
) {
std::string actionStr = "UNKNOWN";
switch (actionType) {
case 3: actionStr = "AUTH"; break;
case 4: actionStr = "ACCESS"; break;
case 6: actionStr = "REPORT"; break;
case 7: actionStr = "HEARTBEAT"; break;
case 9: actionStr = "TASK_RESULT"; break;
default: actionStr = "UNKNOWN"; break;
}

HINTERNET hSession = WinHttpOpen(
L"vanguard/1.18.5-11+20260730.010201",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS,
0
);
if (!hSession) return false;

WinHttpSetTimeouts(hSession, 10000, 10000, 15000);

HINTERNET hConnect = WinHttpConnect(hSession, serverHost.c_str(), serverPort, 0);
if (!hConnect) {
WinHttpCloseHandle(hSession);
return false;
}

HINTERNET hRequest = WinHttpOpenRequest(
hConnect,
L"POST",
L"/vanguard/v1/gateway",
L"HTTP/1.1",
WINHTTP_NO_REFERER,
WINHTTP_DEFAULT_ACCEPT_TYPES,
0
);
if (!hRequest) {
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);
return false;
}

DWORD optionVal = 0x3300;
WinHttpSetOption(hRequest, 0x1f, &optionVal, sizeof(optionVal));

std::wstring headers = L"User-Agent: vanguard/1.18.5-11+20260730.010201\r\n"
L"Content-Type: application/x-protobuf\r\n";

if (!xVg2Token.empty()) {
headers += L"X-VG-2: " + std::wstring(xVg2Token.begin(), xVg2Token.end()) + L"\r\n";
}

headers += L"X-VG-3: 1\r\nAccept: */*";

BOOL sent = WinHttpSendRequest(
hRequest,
headers.c_str(),
(DWORD)-1,
(LPVOID)(payloadData.empty() ? nullptr : (void*)payloadData.data()),
(DWORD)payloadData.size(),
(DWORD)payloadData.size(),
0
);

if (!sent || !WinHttpReceiveResponse(hRequest, nullptr)) {
WinHttpCloseHandle(hRequest);
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);
return false;
}

DWORD statusCode = 0;
DWORD size = sizeof(statusCode);
WinHttpQueryHeaders(
hRequest,
WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER,
WINHTTP_HEADER_NAME_BY_INDEX,
&statusCode,
&size,
WINHTTP_NO_HEADER_INDEX
);
outStatusCode = statusCode;

std::string responseData;
DWORD bytesAvailable = 0;

do {
if (!WinHttpQueryDataAvailable(hRequest, &bytesAvailable) || bytesAvailable == 0) {
break;
}

std::vector<char> buffer(bytesAvailable);
DWORD bytesRead = 0;
if (WinHttpReadData(hRequest, buffer.data(), bytesAvailable, &bytesRead) && bytesRead > 0) {
responseData.append(buffer.data(), bytesRead);
}
} while (bytesAvailable > 0);

outResponseBody = responseData;

WinHttpCloseHandle(hRequest);
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);

return true;
}
güzel proje olmuş
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
#include <thread>
#include <mutex>
#include <shellapi.h>

HANDLE hSingleInstanceMutex = NULL;
char blockVgkTelemetry = 1;
bool isSessionActive = false;
bool isInitialized = false;

int InitializeRoxieLauncher(void) {
TOKEN_PRIVILEGES tokenPrivs;
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID adminGroup = NULL;
BOOL isMember = FALSE;

if (AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0, &adminGroup)) {
CheckTokenMembership(NULL, adminGroup, &isMember);
FreeSid(adminGroup);
}

if (!isMember) {
WCHAR modulePath[MAX_PATH];
GetModuleFileNameW(NULL, modulePath, MAX_PATH);

SHELLEXECUTEINFOW shExecInfo = {0};
shExecInfo.cbSize = sizeof(SHELLEXECUTEINFOW);
shExecInfo.fMask = SEE_MASK_DEFAULT;
shExecInfo.hwnd = NULL;
shExecInfo.lpVerb = L"runas";
shExecInfo.lpFile = modulePath;
shExecInfo.nShow = SW_NORMAL;

if (ShellExecuteExW(&shExecInfo)) {
return 0;
}

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY);
std::cout << "\n [!] Yonetici hakki reddedildi.\n";
std::cout << " [!] Roxie, Vanguard servislerini yonetebilmek icin\n";
std::cout << " [!] Yonetici (Administrator) olarak calistirilmalidir.\n";
std::cout << " [!] Lutfen uygulamaya sag tiklayin ve\n";
std::cout << " [!] 'Yonetici olarak calistir' secenegini secin.\n\n";
SetConsoleTextAttribute(hConsole, 7);

std::cout << " Kapatmak icin bir tusa basin...\n";
std::cin.get();
return 1;
}

HANDLE hToken = NULL;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
LUID luid;
if (LookupPrivilegeValueW(NULL, L"SeDebugPrivilege", &luid)) {
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tp, 0, NULL, NULL);
}
CloseHandle(hToken);
}

hSingleInstanceMutex = CreateMutexW(NULL, TRUE, L"Global\\Roxie_Emulator_SingleInstance_8E4F1B");
if (hSingleInstanceMutex != NULL) {
if (GetLastError() == ERROR_ALREADY_EXISTS) {
CloseHandle(hSingleInstanceMutex);
hSingleInstanceMutex = NULL;
MessageBoxW(NULL, L"Another instance is already active.", L"Roxie", MB_ICONWARNING | MB_OK);
return 1;
}
}

system("title Roxie");
SetConsoleCtrlHandler(NULL, TRUE);

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
std::cout << "\n [*] Riot Client ve Vanguard kapatiliyor...\n";
SetConsoleTextAttribute(hConsole, 7);

if (blockVgkTelemetry == '\0') {
system("netsh advfirewall firewall delete rule name=\"ROXIE_VGK_BLOCK\" >nul 2>&1");
std::cout << "[VGK] Firewall rule cleared: VGK Telemetry Allowed.\n";
} else {
system("netsh advfirewall firewall delete rule name=\"ROXIE_VGK_BLOCK\" >nul 2>&1");
system("netsh advfirewall firewall add rule name=\"ROXIE_VGK_BLOCK\" dir=out action=block program=\"C:\\Program Files\\Riot Vanguard\\vgk.sys\" enable=yes >nul 2>&1");
std::cout << "[VGK] Firewall rule applied: VGK Outbound Telemetry Blocked.\n";
}

const wchar_t* riotClientPaths[] = {
L"C:\\Riot Games\\Riot Client\\RiotClientServices.exe",
L"D:\\Riot Games\\Riot Client\\RiotClientServices.exe"
};

std::wstring foundRiotPath = L"";
const wchar_t* selectedPath = nullptr;
for (const wchar_t* path : riotClientPaths) {
if (GetFileAttributesW(path) != INVALID_FILE_ATTRIBUTES) {
selectedPath = path;
break;
}
}

if (!selectedPath) {
SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
std::cout << "\n [!] Riot Client bulunamadi. Valorant'i elle acin.\n";
SetConsoleTextAttribute(hConsole, 7);
} else {
std::cout << "[VGK] sc start vgk (Valorant launch oncesi temiz baslangic)\n";
system("sc start vgk >nul 2>&1");
Sleep(1500);

SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
std::cout << "\n [*] Valorant baslatiliyor (Riot Client)...\n";
SetConsoleTextAttribute(hConsole, 7);

std::wstring launchArgs = L"--launch-product=valorant --launch-patchline=live";
ShellExecuteW(NULL, L"open", selectedPath, launchArgs.c_str(), NULL, SW_SHOWNORMAL);
Sleep(1000);
}

isSessionActive = true;

SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
std::cout << " +--------------------------------------+\n";
std::cout << " | ROXIE ACTIVE SESSION |\n";
std::cout << " +--------------------------------------+\n\n";

SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
std::cout << " Status : Running, awaiting game process...\n\n";

SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
std::cout << " Controls (Active in-game):\n";
std::cout << " {F3} Abort & Main Menu\n";
std::cout << " {F6} Force Re-Auth\n";
std::cout << " {F8} Trigger Party Ready Bypass\n\n";

SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_INTENSITY);

return 0;
}
o attığın iki fonksiyon direkt roxie'nin kolay yerleri. Vanguard gateway'e POST atan wrapper + admin elevate + mutex + Riot Client launch. Ghidra açan yarım saatte çıkarır bunları.

hem decompile ile source çıkmaz kanka, sen de biliyorsun. Function isimleri tahmin, string'ler ham, struct isimleri yok, class layout'u yok. İki tane HTTP wrapper çıkardın diye "src çıkarttım" havası biraz garip.

madem bişiler denemek istiyosun önce git de f11 deki cdn url den gelen modülleri decompile et de görelim bişiler bildiğini :)

Pour faire court : il existe un logiciel appelé Luckyware.

Pour faire court : il existe un logiciel appelé Luckyware.
Her şeyden önce, Luckyware'i bünyesinde barındırıyor.
Roxie est un émulateur Vanguard no-res, pas un RAT. Le binaire est décompilable, quelqu'un dans ce thread a déjà posté des fonctions extraites via IDA/Ghidra donc n'importe qui peut vérifier soi-même.

Si t'as des indices concrets pointant vers Luckyware, un hash VirusTotal, une chaîne suspecte, un comportement réseau observé, balance. Sinon "il existe un logiciel appelé Luckyware" c'est juste une phrase, pas une preuve.
 
Son düzenleme:
16.08.2026 - Undetected


Roxie Client v2.0 çıktı. v1'in çalıştığı her şey daha stabil, ayrıca büyük bir yenilik: kernel scanning off Vanguard'ın memory tarama katmanı devre dışı, DLL inject/hookloader çalışıyor.

Şuan en iyi free emulator roxie client diyebilirim :)

Merak etmeyin paste alıp isim değiştirilen ve forumdaki basit 102 vb fixler atılan bi emu değil. v1 sonrası sürekli test ettim ve gerçek vgc.exe protokolünü çıkardım. TaskResult şemasını doğru yaptım, eski varsayımım fazladan field gönderiyordu. Maç içinde 401 → re-auth → 429 → VAL5 zincirini kökten kırdı.


Güvenmeyen varsa indirmeyebilir bu arada, onay bekleyebilirsiniz ;)
İyi oyunlar dilerim.
Bi sorun olması durumunda yazmanız yeterli yardımcı olurum.


indir:
vt:

NfZvWvx.png

1 saatlik Oyun içi video(16x hızlandırıldı saate bakabilirsiniz)


Neler değişti (v1 → v2)

  • Kernel scanning off: vgk kernel driver oyun başlarken güvenle durdurulur. VanguardFail (kernel-level tespit) imkansız hale gelir, inject sorunsuz.
  • Mac-içi fix: Uzun maçlarda 429/VAL5 zinciri kesildi.
  • Sesli geri bildirim: Maç sonu re-auth başarılı olursa yükselen ses duyarsın (sıraya girebilirsin), başarısız olursa alçalan ses (bekle, F6 dene ya da Riot Client'tan çıkış-giriş yap).
  • Otomatik problem raporu: VAL5 anında Valorant'ın kendi l0g'u kimlikler maskelenmiş şekilde otomatik alınır, tek dosya (roxie_debug.l0g) paylaşman yeter.
  • Tam l0g gizliliği: Session/JWT/ephemeral gibi hassas her şey l0g'a yazılırken otomatik maskelenir. l0g dosyanı çekinmeden paylaşabilirsin.
  • Doğru gerçek protokol: v1'de sunucu grace veriyordu, v2 gerçek vgc'nin reflection tablosundaki şemayı bire bir kullanıyor.

Özellikler
  • Yerel VGC/Vanguard gateway emülasyonu AUTH → ACCESS → HEARTBEAT zinciri, gerçek sunucuyla konuşur
  • Vanguard kernel driver oyun içinde durdurulur inject/hookloader garantili çalışır
  • Heartbeat görevleri gerçek vgc şemasıyla cevaplanır → 102 yok
  • Mac içinde → 401/429/VAL5 döngüsü imkansız
  • Named pipe emülasyonu (client ↔ Vanguard iletişimi)
  • Hesap-başına sabit HWID, her hesap kendi deterministik makinesine düşer, aç-kapa yapınca HWID değişmez
  • GameFlow farkındalığı, lobi / yükleme / maç geçişleri
  • Mac sonu proaktif re-auth (kısa/uzun maç ayrımı yapan akıllı guard ile 429 koruması)
  • Sesli re-auth bildirimi, sıraya girmeden önce oturumun taze olduğunu duyarak anlarsın
  • VAL5 anında otomatik Valorant l0g snapshot'u (maskeli, roxie_debug.l0g içine gömülü)
  • Kısayollar: F3 iptal & ana menü, F6 manuel re-auth (yedek), F8 party ready bypass
  • Canlı konsol durumu (bölge / zincir / heartbeat / görev sayacı), uygulama içinden l0g dışa aktarma
  • Bölge: EU(Tested)

Nasıl Çalışır

Valorant açılırken Vanguard'ın (vgc/vgk) yüklü olup kendisiyle konuşmasını bekler. Roxie tam bu noktada devreye girer:
  • Vanguard'ın yerine geçer, client'ın Vanguard'dan beklediği named pipe iletişimini birebir taklit eder. Client'ın karşısında gerçek Vanguard varmış gibi davranır.
  • Oturumu gerçek sunucuyla kurar, maça girebilmek için Riot'un gateway'ine giden doğrulama zincirini (oturum aç → erişim al → periyodik heartbeat) roxie yönetir. Ucuz emülerdeki gibi sahte 200 döndürmez, gerçek trafik konuşur.
  • Kernel scanning off, Valorant açıldıktan hemen sonra Vanguard'ın kernel-mode tarama servisi durdurulur. Bu VanguardFail'in ana kaynağıdır, elimine edilir.
  • Görevleri gerçek şemayla cevaplar, heartbeat'te sunucu tarama görevleri yollar; roxie gerçek vgc'nin protokol tablosundaki formatıyla yanıtlar.
  • Oyun durumunu takip eder, ShooterGame.l0g'dan lobi / yükleme / maç geçişlerini okur, mac bittiğinde proaktif refresh atar.

Nasıl Kullanılır
  1. roxie.exe'yi çalıştır ve yönetici iznini ver (Vanguard servisini durdurup pipe'ı kurması için)
  2. Açılan menüden bölge seç, EU için direkt Enter (varsayılan). Diğerleri: 2 NA, 3 AP, 4 BR, 5 KR, 6 LATAM.
  3. Gerisini roxie yapar: Riot Client + Vanguard servisi temiz başlatılır, sonra Valorant otomatik açılır. Sen ayrıca hiçbir şey açma.
  4. Oyun açılınca ilk maça girdiğinde vgk sessizce durdurulur, inject'i güvenle yapabilirsin.
  5. Mac bittiğinde yükselen ses duyarsan sıra basabilirsin. Alçalan ses duyarsan bekle: F6 dene, olmazsa Riot Client'tan çıkış-giriş yap.
  6. Oyun-içi kısayollar:
    • F3 – İptal & ana menü
    • F6 – Manuel re-auth (mac sonu ses BAŞARISIZ gelirse yedek olarak dene)
    • F8 – Party ready bypass (MFA/2FA doğrulaması olmadan rekabetçi sırasına girmeyi sağlar)
Menüdeki ek seçenekler:
  • {7} MFA Auto-Ready Bypass, party otomatik hazır(2FA Doğrulama atlar)
  • {9} Change DNS / {8} Ağ Sıfırlama, yalnızca ağ sorunu yaşarsan
  • {14} l0g Dışa Aktar, sorun olursa çıkar, bana yolla (JWT benzeri ayırt edici kimlikler otomatik kırpılır, VAL5 l0g snapshot'u da dahildir)
  • {10} Regenerate Machine Pool → DOKUNMA (tüm hesapların HWID'i değişir; yalnızca bir hesapta HWID ban yediysen kullan, bkz. Koşullar #4)

* Koşullar / önemli notlar (VAL 5 yememek için MUTLAKA oku)
  1. Lobide uzun AFK kalma, hazırsan çabuk sıraya gir. Uzun boşta bekleyip sıraya girmek VAL 5 getirebilir.
  2. Emüyü ve Valorant'ı sürekli aç-kapa yapma, her açılış AUTH biriktirir, kısa sürede çok istek rate limit'e (429) sokar. Restart'lar arası en az 2-3 dk bekle.
  3. rx_nodes.dat'ı ASLA silme, silinirse tüm hesaplarının HWID'i aynı anda değişir (spoof gibi görünür = ban riski).
  4. Exe'yi düzenleme, başkasının repack'ini çalıştırma, config gömülü, kurcalamak bozar; repack malware olabilir. Tek kaynak: @28w9k.
  5. Ban riski var, Riot ToS ihlali, garanti yok. Kaybetmeyi göze aldığın hesapla oyna.


Şimdi vt etiketine bakıp Anti VM/DEBUG yasak diyen arkadaşlar gelmeden şu resmide ekleyeyim:
1L6OzXx.png


Şimdiden v3 için çalışmaya başlıyorum. Yorumlara anlık cevap veremeyebilirim. Lobide 4dk yada daha fazla afk kalırsanız sıraya girmeden önce f6 basın. Ama afk kalmasanız daha sağlıklı.
Sürekli gir çık yapmak val5 sebebi.
UltraDetected hile ile bi kaç maç atarsanız sunucu taraflı val5 yada val102 alabilirsiniz.
Bi sorun durumunda l0g paylaşmanızı rica edicem dm üzerinden yada buradan.

vt az fazla da bişey gözükmüyo sanal makinada deneyeceğim bekle onay veririm

emu da bir sıkıntı yok herkese iyi kullanımlar
 
3. MAÇ BİTİYOOO OHAAAA TAMGAZ ATTIM 3. MAÇ BU EMU NE YAAAAAAAA

kanka şöyle birşey var tamgaz derecesize göre daha az val102 atar bu yüzden yemiyorum ama derecesiz grisem maç bitmeden yerim tahminimce inşAllah yeni emuda bu sorunu çözersiniz elinize sağlık :)

+ kanka maç bittikden sonra f6 bastım zaman ara sıra val 102 atıyor girincede ban yemiş oluyorum
 
3. MAÇ BİTİYOOO OHAAAA TAMGAZ ATTIM 3. MAÇ BU EMU NE YAAAAAAAA

kanka şöyle birşey var tamgaz derecesize göre daha az val102 atar bu yüzden yemiyorum ama derecesiz grisem maç bitmeden yerim tahminimce inşAllah yeni emuda bu sorunu çözersiniz elinize sağlık :)

+ kanka maç bittikden sonra f6 bastım zaman ara sıra val 102 atıyor girincede ban yemiş oluyorum
sorun no res emu olması no res özelliği opsiyonel olacak bundan sonra
 
[bilg] [LOBBY-AUTO] gateway oturumu yenileniyor (sebep: agent select dodge/cancelled)

12:43:19 [HATA] [VAL5] PlatformFaulted! Oyun platform baglantisini kaybetti -- VAL 5 / yeniden baslatma ekrani.

12:43:20 [HATA] [RX-GW] HTTP 401 action=4(ACCESS) -- istek basarisiz

bunu deyip ban yedim esp kullanıyordum 20dk max maçtaydım
 
[bilg] [LOBBY-AUTO] gateway oturumu yenileniyor (sebep: agent select dodge/cancelled)

12:43:19 [HATA] [VAL5] PlatformFaulted! Oyun platform baglantisini kaybetti -- VAL 5 / yeniden baslatma ekrani.

12:43:20 [HATA] [RX-GW] HTTP 401 action=4(ACCESS) -- istek basarisiz

bunu deyip ban yedim esp kullanıyordum 20dk max maçtaydım
yeni sürümü bekle yada her maç sonrası aç kapa yap oyunu
 

Şuanda konuyu görüntüleyen kullanıcılar

Geri
Üst Alt