Originally Posted by
randomSir
Reversed the new version, can confirm both signature scans return the correct values so this should be safe to use right now.
Keep in mind that they could update the AC at any time to detect this or any other memory modifying hacks.
+1
it's a safe but in future it can be detectable by this
PHP Code:
PVOID __userpurge sub_9C8530@<eax>(int hash@<eax>, int shiftedHash)
{
DWORD processId; // eax@1
HANDLE handle; // ebx@2
PVOID baseAdress; // ebp@4
int size; // edi@4
void *lpBuffer; // esi@6
MEMORY_BASIC_INFORMATION memBasicInfo; // [sp+4Ch] [bp-1Ch]@1
memBasicInfo.BaseAddress = 0;
_mm_storel_epi64(&memBasicInfo.AllocationBase, 0i64);
_mm_storel_epi64(&memBasicInfo.RegionSize, 0i64);
_mm_storel_epi64(&memBasicInfo.Protect, 0i64);
processId = GetProcessId_9C7D40(hash);
if ( !processId )
return 0;
handle = faddr_OpenProcess_C9079C(PAGE_WRITECOMBINE|PAGE_EXECUTE, 0, processId);
if ( !handle || !faddr_VirtualQueryEx_C90FD8(handle, 0, &memBasicInfo, 28) )
return 0;
while ( 1 )
{
baseAdress = memBasicInfo.BaseAddress;
size = memBasicInfo.RegionSize;
if ( !(memBasicInfo.State & MEM_COMMIT)
|| !(memBasicInfo.AllocationProtect & (PAGE_EXECUTE_WRITECOPY|PAGE_EXECUTE_READWRITE|PAGE_EXECUTE)) )
goto LABEL_8; // region is protected go next
lpBuffer = faddr_VirtualAlloc_C90FBC(0, memBasicInfo.RegionSize, MEM_COMMIT, PAGE_READWRITE);
faddr_ReadProcessMemory_C91004(handle, baseAdress, lpBuffer, size, 0);// dump region
if ( sub_9C8410(lpBuffer, size, shiftedHash) )
return baseAdress;
faddr_VirtualFree_C90FF4(lpBuffer, 0, MEM_RELEASE);
LABEL_8:
if ( !faddr_VirtualQueryEx_C90FD8(handle, baseAdress + size, &memBasicInfo, 28) )
return 0;
}
}
DWORD __usercall GetProcessId_9C7D40@<eax>(int hash@<edi>)
{
int hProcessSnap; // esi@1
unsigned int length; // eax@2
char *name; // edx@2
int i; // ecx@2
DWORD result; // eax@6
PROCESSENTRY32 pe32; // [sp+10h] [bp-12Ch]@1
hProcessSnap = faddr_CreateToolhelp32Snapshot_C90FE4(TH32CS_SNAPPROCESS, 0);
pe32.dwSize = 296;
if ( faddr_Process32First_C90FF8(hProcessSnap, &pe32) )
{
while ( 1 )
{
length = strlen(pe32.szExeFile);
name = pe32.szExeFile;
for ( i = 5381; length; --length )
i = 33 * i + *name++;
if ( i == hash )
break;
if ( !faddr_Process32Next_C91008(hProcessSnap, &pe32) )
goto LABEL_6;
}
result = pe32.th32ProcessID;
}
else
{
LABEL_6:
faddr_CloseHandle_C90FE8(hProcessSnap);
result = 0;
}
return result;
}
so don't forget rename Launcher exe to another name!!!