| admin | Дата: Воскресенье, 26.05.2013, 20:09 | Сообщение # 1 |
 Админестратор
Группа: Администраторы
Сообщений: 86
Награды: 4
Репутация: 24
Статус: 
| Очень древний обход фроста .. но оригинальный никто такой не использовал .. работал когда фрост еще не проверял сам себя выкладываю в виду текущей бесполезности но возможно комуто для самообучения пригодится КодКод /* Отключение безопасности фроста */ // Верный код BYTE DATA_LdrLoadDll[5] = {0x8B, 0xFF, 0x55, 0x8B, 0xEC}; BYTE DATA_RtlUserThreadStart[13] = {0x89, 0x44 , 0x24 , 0x04 , 0x89 ,0x5C, 0x24 , 0x08 ,0xE9 , 0xE9 , 0x9C , 0x02 , 0x00}; BYTE DATA_DbgBreakPoint = 0xCC; BYTE DATA_DbgUiRemoteBreaking[7]; BYTE DATA_RtlQueryEnvironmentVariable[5] = {0x55,0x8B , 0xEC, 0x56, 0x57}; BYTE DATA_LdrUnloadDll[7]; BYTE DATA_CreateThread[5]; BYTE DATA_LoadLibraryExW[6]; BYTE DATA_LoadLibraryA[6]; BYTE DATA_SetUnhandledExceptionFilter [6]; BYTE DATA_SetWindowsHookExW[6]; BYTE CONTROL_DbgBreakPoint; BYTE CONTROL_LdrLoadDll[5]; BYTE CONTROL_RtlUserThreadStart[13]; BYTE CONTROL_LdrUnloadDll[7]; BYTE CONTROL_CreateThread[5]; BYTE CONTROL_LoadLibraryExW[6]; BYTE CONTROL_LoadLibraryA[6]; BYTE CONTROL_SetUnhandledExceptionFilter[6]; BYTE CONTROL_SetWindowsHookExW[6]; // Код фроста //777301BC bool success = false; Module_NTDLL = GetModuleHandle("ntdll.dll"); if(Module_NTDLL == NULL) { timer1->Enabled = false; MessageBoxA(NULL,"Внимание неудалось получить HANDLE ntdll.dll - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } Sleep(50); Module_KERNEL32 = GetModuleHandle("kernel32.dll"); if(Module_KERNEL32 == NULL) { timer1->Enabled = false; MessageBoxA(NULL,"Внимание неудалось получить HANDLE kernel32.dll - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } Sleep(50); Module_USER32 = GetModuleHandle("user32.dll"); if(Module_USER32 == NULL) { timer1->Enabled = false; MessageBoxA(NULL,"Внимание неудалось получить HANDLE user32.dll - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; }//////////////////////////////////////////////////// CreateThread /* --> FROST 759734B5 - e9 a6 e5 62 eb - jmp 60fa1a60 759734BA - ff 75 1c - push [ebp+1c] 759734BD - 6a 00 - push 00 759734BF - ff 75 18 - push [ebp+18] 759734C2 - ff 75 14 - push [ebp+14] */ Sleep(50); F_CreateThread = GetProcAddress(Module_KERNEL32, "CreateThread"); if(F_CreateThread == NULL) { MessageBoxA(NULL,"Внимание неудалось получить F_CreateThread - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; }//////////////////////////////////////////////////// RtlUserThreadStart /*---> FROST 773001B4 - 89 44 24 04 - mov [esp+04],eax 773001B8 - 89 5c 24 08 - mov [esp+08],ebx 773001BC - e9 bf 1c ca e9 - jmp 60fa1e80 773001C1 - 8d a4 24 00 00 00 00 - lea esp,[esp+00000000] 773001C8 - 8d a4 24 00 00 00 00 - lea esp,[esp+00000000] 773001CF - 90 - nop */ Sleep(50); F_RtlUserThreadStart = GetProcAddress(Module_NTDLL, "RtlUserThreadStart"); if(F_RtlUserThreadStart == NULL) { MessageBoxA(NULL,"Внимание неудалось получить F_RtlUserThreadStart - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } //////////////////////////////////////////////////// LdrLoadDll /*---> FROST 7732C45A - e9 51 56 c7 e9 - jmp 60fa1ab0 7732C45F - a1 0c f7 31 77 - mov eax,[wcsnicmp+b1] 7732C464 - 83 ec 0c - sub esp,0c 7732C467 - 53 - push ebx 7732C468 - 83 c8 01 - or eax,01 */ Sleep(50); F_LdrLoadDll = GetProcAddress(Module_NTDLL, "LdrLoadDll"); if(F_LdrLoadDll == NULL) { MessageBoxA(NULL,"Внимание неудалось получить F_LdrLoadDll - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } //////////////////////////////////////////////////// DbgBreakPoint /*---> FROST 7730000C - c3 - ret 7730000D - c3 - ret 7730000E - 90 - nop 7730000F - 90 - nop 77300010 - 8b 4c 24 04 - mov ecx,[esp+04] */ Sleep(50); F_DbgBreakPoint = GetProcAddress(Module_NTDLL, "DbgBreakPoint"); if(F_DbgBreakPoint == NULL) { MessageBoxA(NULL,"Внимание неудалось получить F_DbgBreakPoint - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } //////////////////////////////////////////////////// DbgUiRemoteBreakin /*---> FROST 7738F85A - e9 12 dd fa ff - jmp ldrshutdownprocess 7738F85F - 31 77 e8 - xor [edi-18],esi 7738F862 - 5e - pop esi 7738F863 - e6 f8 - out f8,al 7738F865 - ff 64 a1 18 - jmp dword ptr [ecx+18] 7738F869 - 00 00 - add [eax],al */ Sleep(50); F_DbgUiRemoteBreakin = GetProcAddress(Module_NTDLL, "DbgUiRemoteBreakin"); if(F_DbgUiRemoteBreakin == NULL) { MessageBoxA(NULL,"Внимание неудалось получить F_DbgUiRemoteBreakin - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } //////////////////////////////////////////////////// RtlQueryEnvironmentVariable + 0x22D /*---> FROST 7738F85A - e9 12 dd fa ff - jmp ldrshutdownprocess 7738F85F - 31 77 e8 - xor [edi-18],esi 7738F862 - 5e - pop esi 7738F863 - e6 f8 - out f8,al 7738F865 - ff 64 a1 18 - jmp dword ptr [ecx+18] 7738F869 - 00 00 - add [eax],al */ Sleep(50); F_RtlQueryEnvironmentVariable = GetProcAddress(Module_NTDLL, "RtlQueryEnvironmentVariable"); if(F_RtlQueryEnvironmentVariable == NULL) { MessageBoxA(NULL,"Внимание неудалось получить F_RtlQueryEnvironmentVariable - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; }//////////////////////////////////////////////////// LdrUnloadDll /*---> FROST 77331217 - e9 b4 0b c7 e9 - jmp 60fa1dd0 7733121C - 31 77 e8 - xor [edi-18],esi 7733121F - a1 cc fe ff 83 - mov eax,[83fffecc] 77331224 - 65 e0 00 - loopnz ldrunloaddll+10 77331227 - c7 45 dc 01 00 00 c0 - mov [ebp-24],c0000001
*/ Sleep(50); F_LdrUnloadDll = GetProcAddress(Module_NTDLL, "LdrUnloadDll"); if(F_LdrUnloadDll == NULL) { MessageBoxA(NULL,"Внимание неудалось получить F_LdrUnloadDll - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; }//////////////////////////////////////////////////// LoadLibraryExW /*---> FROST 75974945 - e9 56 ae 0f e9 - jmp frostrecvfrom+950 7597494A - 5d - pop ebp 7597494B - eb a3 - jmp disablethreadlibrarycalls+23 7597494D - 90 - nop */ Sleep(50); F_LoadLibraryExW = GetProcAddress(Module_KERNEL32, "LoadLibraryExW"); if(F_LoadLibraryExW == NULL) { MessageBoxA(NULL,"Внимание неудалось получить LoadLibraryExW - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; }//////////////[691556] APB.exe->kernel32.dll!LoadLibraryA || 0x759749BF => [0x5EA6F440] :: gameShieldDll.dll!frostRecvfrom || Inline - Detour [5 Bytes] || mov edi, edi || jmp 5EA6F440h /* 759749BF - 8b ff - mov edi,edi 759749C1 - 55 - push ebp 759749C2 - 8b ec - mov ebp,esp 759749C4 - 83 7d 08 00 - cmp dword ptr [ebp+08],00 759749C8 - 53 - push ebx 759749C9 - 56 - push esi 759749CA - 57 - push edi
---> FROST 759749BF - e9 7c aa 0f e9 - jmp frostrecvfrom+5f0 759749C4 - 83 7d 08 00 - cmp dword ptr [ebp+08],00 759749C8 - 53 - push ebx 759749C9 - 56 - push esi 759749CA - 57 - push edi
*/ Sleep(50); F_LoadLibraryA = GetProcAddress(Module_KERNEL32, "LoadLibraryW"); if(F_LoadLibraryA == NULL) { MessageBoxA(NULL,"Внимание неудалось получить LoadLibraryA - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; }////////////// [691556] APB.exe->kernel32.dll!SetUnhandledExceptionFilter || [0x759787B1] || Custom Patch [5 Bytes] || mov edi, edi || xor eax, eax /* 759787B1 - 8b ff - mov edi,edi 759787B3 - 55 - push ebp 759787B4 - 8b ec - mov ebp,esp 759787B6 - 81 ec 20 02 00 00 - sub esp,00000220 759787BC - 53 - push ebx 759787BD - 56 - push esi 759787BE - 8b 75 08 - mov esi,[ebp+08] 759787C1 - 85 f6 - test esi,esi
---> FROST 759787B1 - 33 c0 - xor eax,eax 759787B3 - c2 04 00 - ret 0004 759787B6 - 81 ec 20 02 00 00 - sub esp,00000220 759787BC - 53 - push ebx
*/ Sleep(50); F_SetUnhandledExceptionFilter = GetProcAddress(Module_KERNEL32, "SetUnhandledExceptionFilter"); if(F_SetUnhandledExceptionFilter == NULL) { MessageBoxA(NULL,"Внимание неудалось получить F_SetUnhandledExceptionFilter - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; }//////////////691556] APB.exe->user32.dll!SetWindowsHookExW || 0x765E7603 => [0x60FAD880] :: frostCollector.dll!frostFunc || Inline - Detour [5 Bytes] || mov edi, edi || jmp 60FAD880h /* 765E7603 - 8b ff - mov edi,edi 765E7605 - 55 - push ebp 765E7606 - 8b ec - mov ebp,esp 765E7608 - 6a 00 - push 00 765E760A - ff 75 14 - push [ebp+14] 765E760D - ff 75 10 - push [ebp+10] 765E7610 - ff 75 0c - push [ebp+0c] 765E7613 - ff 75 08 - push [ebp+08] 765E7616 - e8 33 ff ff ff - call getmenustringw+7a ---> FROST 765E7603 - e9 78 62 9c ea - jmp frostfunc+8690 765E7608 - 6a 00 - push 00 765E760A - ff 75 14 - push [ebp+14] 765E760D - ff 75 10 - push [ebp+10] 765E7610 - ff 75 0c - push [ebp+0c] 765E7613 - ff 75 08 - push [ebp+08] 765E7616 - e8 33 ff ff ff - call getmenustringw+7a 765E761B - 5d - pop ebp */ Sleep(50); F_SetWindowsHookExW = GetProcAddress(Module_USER32, "SetWindowsHookExW"); if(F_SetWindowsHookExW == NULL) { MessageBoxA(NULL,"Внимание неудалось получить F_SetWindowsHookExW - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } if(apb_reloaded) H_PointBlank = GetProcessByName("APB.exe"); else H_PointBlank = GetProcessByName("PointBlank.exe.exe"); Sleep(400); if(H_PointBlank == NULL) { timer1->Enabled = false; MessageBoxA(NULL,"Внимание неудалось получить HANDLE Game - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } H_cheker = GetCurrentProcess(); if(H_cheker == NULL) { timer1->Enabled = false; MessageBoxA(NULL,"Внимание неудалось получить HANDLE cheker - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } success = ReadProcessMemory(H_cheker,(LPVOID)((int) F_RtlUserThreadStart),&DATA_RtlUserThreadStart ,13,0); if(!check_seccess(success)) { richTextBox1->Text = richTextBox1->Text + "\n ReadProcessMemory H_cheker, №1"; Enable_inject = false; return; } if(F_RtlUserThreadStart != NULL) { success = ReadProcessMemory(H_PointBlank,(LPVOID)((int) F_RtlUserThreadStart),&OLD_DATA_RtlUserThreadStart ,13,0); if(!check_seccess(success)) { richTextBox1->Text = richTextBox1->Text + "\n ReadProcessMemory H_Game,№2"; Enable_inject = false; return; } } //7775C45A success = ReadProcessMemory(H_cheker,(LPVOID)((int) F_CreateThread),&DATA_CreateThread ,5,0); if(!check_seccess(success)) { richTextBox1->Text = richTextBox1->Text + "\n №11 1"; Enable_inject = false; return; } success = ReadProcessMemory(H_PointBlank,(LPVOID)(int) F_CreateThread,&OLD_DATA_CreateThread ,5,0); if(!check_seccess(success)) { richTextBox1->Text = richTextBox1->Text + "\n №12"; Enable_inject = false; return; } success = ReadProcessMemory(H_cheker,(LPVOID)((int) F_LdrLoadDll),&DATA_LdrLoadDll ,5,0); if(!check_seccess(success)) { richTextBox1->Text = richTextBox1->Text + "\n №13"; Enable_inject = false; return; } success = ReadProcessMemory(H_PointBlank,(LPVOID)(int) F_LdrLoadDll,&OLD_DATA_LdrLoadDll ,5,0); if(!check_seccess(success)) { richTextBox1->Text = richTextBox1->Text + "\n №14"; Enable_inject = false; return; } //7773000C success = ReadProcessMemory(H_cheker,(LPVOID)(int) F_DbgBreakPoint,&DATA_DbgBreakPoint ,1,0); if(!check_seccess(success)) return; success = ReadProcessMemory(H_PointBlank,(LPVOID)(int) F_DbgBreakPoint,&OLD_DATA_DbgBreakPoint ,1,0); if(!check_seccess(success)) return;/// LoadLibraryA success = ReadProcessMemory(H_cheker,(LPVOID)(int) F_LoadLibraryA,&DATA_LoadLibraryA ,6,0); if(!check_seccess(success)) return; success = ReadProcessMemory(H_PointBlank,(LPVOID)(int) F_LoadLibraryA,&OLD_DATA_LoadLibraryA ,6,0); if(!check_seccess(success)) return;/// F_SetUnhandledExceptionFilter success = ReadProcessMemory(H_cheker,(LPVOID)(int) F_SetUnhandledExceptionFilter,&DATA_SetUnhandledExceptionFilter ,6,0); if(!check_seccess(success)) return; success = ReadProcessMemory(H_PointBlank,(LPVOID)(int) F_SetUnhandledExceptionFilter,&OLD_DATA_SetUnhandledExceptionFilter ,6,0); if(!check_seccess(success)) return;/// SetWindowsHookExW success = ReadProcessMemory(H_cheker,(LPVOID)(int) F_SetWindowsHookExW,&DATA_SetWindowsHookExW ,6,0); if(!check_seccess(success)) return; success = ReadProcessMemory(H_PointBlank,(LPVOID)(int) F_SetWindowsHookExW,&OLD_DATA_SetWindowsHookExW ,6,0); if(!check_seccess(success)) return; //777BF85A success = ReadProcessMemory(H_cheker,(LPVOID)(int) F_DbgUiRemoteBreakin,&DATA_DbgUiRemoteBreaking ,7,0); if(!check_seccess(success)) return; success = ReadProcessMemory(H_PointBlank,(LPVOID)(int) F_DbgUiRemoteBreakin,&OLD_DATA_DbgUiRemoteBreaking ,7,0); if(!check_seccess(success)) return; success = ReadProcessMemory(H_cheker,(LPVOID)((int) F_LoadLibraryExW),&DATA_LoadLibraryExW ,6,0); check_seccess(success); success = ReadProcessMemory(H_PointBlank,(LPVOID)((int) F_LoadLibraryExW),&OLD_DATA_LoadLibraryExW ,6,0); check_seccess(success); //7775993C success = ReadProcessMemory(H_cheker,(LPVOID)((int)( F_RtlQueryEnvironmentVariable) + 0x22D),&DATA_RtlQueryEnvironmentVariable ,5,0); if(!check_seccess(success)) return; success = ReadProcessMemory(H_PointBlank,(LPVOID)((int)( F_RtlQueryEnvironmentVariable) + 0x22D),&OLD_DATA_RtlQueryEnvironmentVariable ,5,0); if(!check_seccess(success)) return; //77761217 success = ReadProcessMemory(H_cheker,(LPVOID)(int) F_LdrUnloadDll,&DATA_LdrUnloadDll ,7,0); if(!check_seccess(success)) return; success = ReadProcessMemory(H_PointBlank,(LPVOID)(int) F_LdrUnloadDll,&OLD_DATA_LdrUnloadDll ,7,0); if(!check_seccess(success)) return; success = WriteProcessMemory(H_PointBlank,(LPVOID)((int) F_CreateThread),&DATA_CreateThread ,5,0); if(!check_seccess(success)) { richTextBox1->Text = richTextBox1->Text + "\n №15"; return; } success = WriteProcessMemory(H_PointBlank,(LPVOID)((int) F_RtlUserThreadStart),&DATA_RtlUserThreadStart ,13,0); if(!check_seccess(success)) return; success = WriteProcessMemory(H_PointBlank,(LPVOID)((int)( F_RtlQueryEnvironmentVariable) + 0x22D),&DATA_RtlQueryEnvironmentVariable ,5,0); if(!check_seccess(success)) return; success = WriteProcessMemory(H_PointBlank,(LPVOID)(int) F_LdrUnloadDll,&DATA_LdrUnloadDll ,7,0); if(!check_seccess(success)) return; success = WriteProcessMemory(H_PointBlank,(LPVOID)(int) F_DbgUiRemoteBreakin,&DATA_DbgUiRemoteBreaking ,7,0); if(!check_seccess(success)) return; success = WriteProcessMemory(H_PointBlank,(LPVOID)(int) F_DbgBreakPoint,&DATA_DbgBreakPoint ,1,0); if(!check_seccess(success)) return; success = WriteProcessMemory(H_PointBlank,(LPVOID)(int) F_LdrLoadDll,&DATA_LdrLoadDll ,5,0); if(!check_seccess(success)) return; success = WriteProcessMemory(H_PointBlank,(LPVOID)((int) F_LoadLibraryExW),&DATA_LoadLibraryExW ,6,0); if(!check_seccess(success)) return; success = WriteProcessMemory(H_PointBlank,(LPVOID)((int) F_LoadLibraryA),&DATA_LoadLibraryA ,6,0); if(!check_seccess(success)) return; success = WriteProcessMemory(H_PointBlank,(LPVOID)((int) F_SetUnhandledExceptionFilter ),&DATA_SetUnhandledExceptionFilter ,6,0); if(!check_seccess(success)) return; success = WriteProcessMemory(H_PointBlank,(LPVOID)((int) F_SetWindowsHookExW ),&DATA_SetWindowsHookExW ,6,0); if(!check_seccess(success)) return; // контролька success = ReadProcessMemory(H_PointBlank,(LPVOID)(int) F_DbgBreakPoint,&CONTROL_DbgBreakPoint ,1,0); if(!check_seccess(success)) return; Sleep(2000); if(CONTROL_DbgBreakPoint != DATA_DbgBreakPoint) { timer1->Enabled = false; MessageBoxA(NULL,"Внимание не удалось выполнить операцию обхода Фрост. Возможно вы запустили абдейтер без прав администратора , либо антивирус или др. программа блокирует доступ к системе , также попробуйте перезапустить клиент игры - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } success = ReadProcessMemory(H_PointBlank,(LPVOID)(int) F_LdrLoadDll,&CONTROL_LdrLoadDll ,5,0); if(!check_seccess(success)) return; if(CONTROL_LdrLoadDll[1] != DATA_LdrLoadDll[1]) { timer1->Enabled = false; MessageBoxA(NULL,"Внимание не удалось выполнить операцию обхода Фрост. Возможно вы запустили абдейтер без прав администратора , либо антивирус или др. программа блокирует доступ к системе , также попробуйте перезапустить клиент игры - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } success = ReadProcessMemory(H_PointBlank,(LPVOID)((int) F_RtlUserThreadStart),&CONTROL_RtlUserThreadStart ,13,0); if(!check_seccess(success)) return; if(CONTROL_RtlUserThreadStart[10] != DATA_RtlUserThreadStart[10]) { timer1->Enabled = false; MessageBoxA(NULL,"Внимание не удалось выполнить операцию обхода Фрост. Возможно вы запустили абдейтер без прав администратора , либо антивирус или др. программа блокирует доступ к системе , также попробуйте перезапустить клиент игры - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } // createthread success = ReadProcessMemory(H_PointBlank,(LPVOID)((int) F_CreateThread),&CONTROL_CreateThread ,5,0); if(!check_seccess(success)) return; if(CONTROL_CreateThread[1] != DATA_CreateThread[1]) { timer1->Enabled = false; MessageBoxA(NULL,"Внимание не удалось выполнить операцию обхода Фрост. Возможно вы запустили абдейтер без прав администратора , либо антивирус или др. программа блокирует доступ к системе , также попробуйте перезапустить клиент игры - инжект прерван", "Ошибка №5", MB_OK); Enable_inject = false; return; } if(CONTROL_RtlUserThreadStart[11] != DATA_RtlUserThreadStart[11]) { timer1->Enabled = false; MessageBoxA(NULL,"Внимание не удалось выполнить операцию обхода Фрост. Возможно вы запустили абдейтер без прав администратора , либо антивирус или др. программа блокирует доступ к системе , также попробуйте перезапустить клиент игры - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; } success = ReadProcessMemory(H_PointBlank,(LPVOID)(int) F_LdrUnloadDll,&CONTROL_LdrUnloadDll ,7,0); if(!check_seccess(success)) return; if(CONTROL_LdrUnloadDll[1] != DATA_LdrUnloadDll[1]) { timer1->Enabled = false; MessageBoxA(NULL,"Внимание не удалось выполнить операцию обхода Фрост. Возможно вы запустили абдейтер без прав администратора , либо антивирус или др. программа блокирует доступ к системе , также попробуйте перезапустить клиент игры - инжект прерван", "Ошибка", MB_OK); Enable_inject = false; return; }
|
| |
| |