|
Mostrar Mensajes
|
Páginas: [1] 2 3 4 5 6 7
|
1
|
Programación / Ingeniería Inversa / Re: Check Integrity Macro Themida :v
|
en: 26 Enero 2019, 14:05 pm
|
Entonces, estáticamente, no puedo hacer nada. Disculpe. Buena suerte Saludos
No se para que pedis el código si al final nunca podes hacer nada...........
los parches se deben hacer de forma dinámica, por otro lado muchas veces se relaciona con apis de integridad, quizas no es themida este tutorial pero te ayudará a quitarte la duda
puedes usar google traductor si no entiendes alguna palabra
Tenkiu, pero al final era sólo retornar el EAX a 1, si retorna 0 es que no es valido. Al final puse un hwbp al inicio de la funcion y al final, entonces compare el no valido con valido y bingo. MOD: No hacer doble post. Usa el botón modificar. (Esta no es la 1era vez.)
|
|
|
2
|
Programación / Ingeniería Inversa / Re: Check Integrity Macro Themida :v
|
en: 22 Enero 2019, 01:40 am
|
ASM: push ecx mov ecx,esp add ecx,4 sub ecx,4 xchg dword ptr ss:[esp],ecx pop esp mov dword ptr ss:[esp],ebx sub esp,4 mov dword ptr ss:[esp],edi mov dword ptr ss:[esp],ecx push 5A48BE57 mov dword ptr ss:[esp],ebp mov dword ptr ss:[esp],edx sub esp,4 mov dword ptr ss:[esp],eax mov dword ptr ss:[esp],esi push eax mov eax,esp add eax,4 sub eax,4 xchg dword ptr ss:[esp],eax pop esp mov dword ptr ss:[esp],edi cmp byte ptr ss:[ebp+187BE0B0],0 je sxe.6391315 push A call dword ptr ss:[ebp+1838325A] jmp sxe.63912FB mov byte ptr ss:[ebp+187BE0B0],1 lea esi,dword ptr ss:[ebp+187BE0B1] push edx mov edx,9 add esi,edx mov edx,dword ptr ss:[esp] add esp,4 push eax mov eax,0 add eax,esi push dword ptr ds:[eax] pop ebx pop eax sub esp,4 mov dword ptr ss:[esp],eax mov eax,4 add esi,eax pop eax cmp dword ptr ds:[esi],0 // First Check Integrity jne sxe.6391360 cmp dword ptr ds:[esi+4],0 je sxe.639140D push ecx mov ecx,0 add ecx,esi mov eax,dword ptr ds:[ecx] mov ecx,dword ptr ss:[esp] add esp,4 sub eax,7F7B962E sub eax,3EE7A3E2 sub eax,ebx add eax,3EE7A3E2 add eax,7F7B962E push esi mov esi,CD7BB89 xor eax,esi mov esi,dword ptr ss:[esp] add esp,4 push ecx mov ecx,0 sub ecx,5AF584F1 add ecx,esi add ecx,5AF584F1 mov dword ptr ds:[ecx],eax pop ecx rol ebx,1 push dword ptr ds:[esi+4] pop eax add eax,iertutil.772F1942 sub eax,ebx push ebp mov ebp,iertutil.772F1942 sub eax,ebp pop ebp push ebx push 5B8A38A7 pop ebx shl ebx,5 add ebx,9B90A6A9 xor eax,ebx pop ebx push eax xor dword ptr ss:[esp],6F5F7103 pop dword ptr ds:[esi+4] push ecx mov ecx,4 add ecx,esi xor dword ptr ds:[ecx],6F5F7103 pop ecx rol ebx,1 push 3AAB77C9 mov dword ptr ss:[esp],eax mov eax,8 add esi,eax pop eax jmp sxe.639134D mov ebx,dword ptr ss:[ebp+18380AD1] push dword ptr ds:[ebx+3C] push edi mov edi,5EFF845B add dword ptr ss:[esp+4],edi pop edi pop eax sub eax,5EFF845B add ebx,77BF5D11 add ebx,eax push esi mov esi,2CEF75AD or esi,5FF5A1EA inc esi not esi sub esi,77FFE09E and esi,7F4B4372 xor esi,7FBF5C61 sub ebx,esi pop esi push edx mov edx,6BEFF75E sub edx,2DFF8F90 sub edx,1 xor edx,44F6C88D dec edx add edx,86F951B9 add ebx,edx pop edx sub esp,4 mov dword ptr ss:[esp],ecx mov ecx,C add ecx,ebx mov edi,dword ptr ds:[ecx] pop ecx add edi,dword ptr ss:[ebp+18380AD1] lea esi,dword ptr ss:[ebp+187BE0B1] push edi push ebp push 5BB968A4 pop ebp xor ebp,5BB968A9 mov edi,ebp pop ebp add esi,edi pop edi xor eax,eax cmp dword ptr ds:[esi],0 // Second Check Integrity jne sxe.63914BA cmp dword ptr ds:[esi+4],0 je sxe.639157C push dword ptr ds:[esi] sub dword ptr ss:[esp],56EFF560 pop edx push ebp mov ebp,56EFF560 add edx,ebp pop ebp sub edx,7FFF9E82 add edx,edi push edi mov edi,client.DDE3E3B add edi,72216047 add edx,edi pop edi push dword ptr ds:[esi+4] mov ebx,dword ptr ss:[esp] add esp,4 add ebx,6BEB95DB add ebx,edi push eax mov eax,7F554B92 inc eax sub eax,1369B5B8 sub ebx,eax pop eax cmp edx,ebx jae sxe.6391562 push user32.76ECFD2D mov dword ptr ss:[esp],ecx mov ecx,0 add ecx,edx add al,byte ptr ds:[ecx] pop ecx push ebp mov dword ptr ss:[esp],edx mov dh,D4 add dh,5C shr dh,3 or dh,70 sub dh,E3 add al,dh pop edx push ebx mov bh,10 add bh,1 xor bh,30 xor al,bh pop ebx rol eax,1 push ebp mov ebp,3C5F09A7 inc ebp neg ebp shr ebp,1 xor ebp,57642C5E xor ebp,36B45773 add edx,ebp pop ebp jmp sxe.6391504 push edi mov edi,8 sub esi,198D197B add esi,edi add esi,198D197B pop edi jmp sxe.63914A7 lea esi,dword ptr ss:[ebp+187BE0B1] push edi mov edi,9 add esi,77E50AC5 add esi,edi sub esi,77E50AC5 pop edi cmp eax,dword ptr ds:[esi] je sxe.63915C8 sub esp,4 mov dword ptr ss:[esp],ecx push 7FDFD001 pop ecx sub ecx,1AAE010D shl ecx,8 xor ecx,6A4B2939 xor ecx,5B85DD39 mov eax,ecx pop ecx jmp sxe.63915F3 push edi mov edi,39554980 add edi,33BA66F1 xor edi,7EB7A484 push edx mov edx,49DFF7D1 sub edx,7AAFFE83 dec edx xor edx,DC97EDB9 xor edi,edx pop edx mov eax,edi pop edi push ebp mov ebp,esp add ebp,4 sub ebp,4 xchg dword ptr ss:[esp],ebp pop esp mov dword ptr ss:[esp],eax lea esi,dword ptr ss:[ebp+187BE0B1] push ecx mov ecx,9 add esi,ecx mov ecx,dword ptr ss:[esp] add esp,4 push dword ptr ds:[esi] add dword ptr ss:[esp],35FD663D mov ebx,dword ptr ss:[esp] add esp,4 sub ebx,35FD663D push eax mov eax,4 sub esi,3AF7F1D5 add esi,eax add esi,3AF7F1D5 pop eax cmp dword ptr ds:[esi],0 // Third Check Integrity jne sxe.639165D cmp dword ptr ds:[esi+4],0 je sxe.6391737 sub esp,4 mov dword ptr ss:[esp],edx mov edx,0 add edx,esi mov eax,dword ptr ds:[edx] pop edx push ebp mov ebp,7FCEE7C2 shr ebp,1 xor ebp,3330C868 xor eax,ebp mov ebp,dword ptr ss:[esp] add esp,4 push ebx mov ebx,3FEFBACC sub ebx,13FFE3B2 xor ebx,7EDBC211 xor ebx,2383ECA9 sub eax,ebx pop ebx add eax,ebx add eax,shell32.76B7F9A2 push ebx mov dword ptr ss:[esp],eax xor dword ptr ss:[esp],7EFFDAF1 pop dword ptr ds:[esi] xor dword ptr ds:[esi],7EFFDAF1 rol ebx,1 push dword ptr ds:[esi+4] mov eax,dword ptr ss:[esp] add esp,4 sub esp,4 mov dword ptr ss:[esp],ebp mov ebp,CD7BB89 xor eax,ebp pop ebp sub eax,794BBFD8 add eax,67EE9374 add eax,ebx sub eax,67EE9374 add eax,794BBFD8 push eax add dword ptr ss:[esp],77EEC400 pop dword ptr ds:[esi+4] push edi mov edi,4F3FD7BE and edi,1BE7AF79 or edi,7FFFB426 sub edi,810F33E sub dword ptr ds:[esi+4],edi pop edi rol ebx,1 push ebx push edx mov edx,7B3395E4 xor edx,57FBF0DA add edx,D3379ACA mov ebx,edx pop edx add esi,ebx pop ebx jmp sxe.639164A mov byte ptr ss:[ebp+187BE0B0],0 push dword ptr ss:[esp] pop eax add esp,4 mov edi,dword ptr ss:[esp] push ecx mov ecx,esp add ecx,4 add ecx,4 xchg dword ptr ss:[esp],ecx pop esp push dword ptr ss:[esp] pop esi add esp,4 mov edx,dword ptr ss:[esp] push edi mov edi,esp add edi,4 add edi,4 xchg dword ptr ss:[esp],edi pop esp push dword ptr ss:[esp] pop ecx add esp,4 mov ebx,dword ptr ss:[esp] push esi mov esi,esp add esi,4 add esi,4 xchg dword ptr ss:[esp],esi pop esp ret Pseudo of snowman: (x32dbg) struct s0 { int32_t f0; int32_t f4; };
struct s1 { int32_t f0; uint32_t f4; };
struct s2 { int8_t[60] pad60; int32_t f60; };
struct s3 { int32_t f0; void* f4; };
struct s4 { uint32_t f0; uint32_t f4; };
void fun_63912b6(int32_t ecx, int32_t a2, int32_t a3) { int32_t v4; int32_t edi5; int32_t ebp6; int32_t ebp7; int32_t ebp8; struct s0* esi9; void* ebp10; int32_t v11; int32_t ebx12; struct s1* esi13; uint32_t eax14; uint32_t v15; int32_t ebp16; uint32_t eax17; uint32_t* ecx18; struct s2* ebx19; int32_t v20; void* v21; int32_t ebp22; struct s3* esi23; void* edi24; int32_t eax25; int32_t v26; int8_t* edx27; void* edi28; void* v29; int8_t* ebx30; uint8_t al31; int32_t ebp32; int32_t* esi33; int32_t v34; int32_t ebx35; struct s4* esi36; uint32_t eax37; uint32_t v38; int32_t v39;
v4 = edi5; while (*(int8_t*)(ebp6 + 0x187be0b0)) { *(int32_t*)(ebp7 + 0x1838325a)(10, v4); } *(int8_t*)(ebp8 + 0x187be0b0) = 1; esi9 = (struct s0*)((int32_t)ebp10 + 0x187be0b1 + 9); v11 = esi9->f0; ebx12 = v11; esi13 = (struct s1*)&esi9->f4; while (esi13->f0 || esi13->f4) { eax14 = (uint32_t)(esi13->f0 - 0x7f7b962e - 0x3ee7a3e2 - ebx12 + 0x3ee7a3e2 + 0x7f7b962e); *(uint32_t*)(0x5af584f1 - (int32_t)esi13 + 0x5af584f1) = eax14 ^ 0xcd7bb89; asm("rol ebx, 0x1"); v15 = esi13->f4; ebp16 = ebp16; eax17 = v15 + 0x772f1942 - ebx12 - 0x772f1942 ^ 0xcd7bb89; ebx12 = ebx12; esi13->f4 = eax17 ^ 0x6f5f7103; ecx18 = &esi13->f4; *ecx18 = *ecx18 ^ 0x6f5f7103; asm("rol ebx, 0x1"); ++esi13; } ebx19 = *(struct s2**)(ebp16 + 0x18380ad1); v20 = ebx19->f60; v21 = (void*)((int32_t)*(void**)(12 + ((int32_t)ebx19 + 0x77bf5d11 + (v20 + 0x5eff845b - 0x5eff845b) - 0x77bf5d11 + 0xf8)) + (int32_t)*(struct s2**)(ebp16 + 0x18380ad1)); ebp22 = ebp16; esi23 = (struct s3*)(ebp16 + 0x187be0b1 + 13); edi24 = v21; eax25 = 0; while (esi23->f0 || esi23->f4) { v26 = esi23->f0; ebp22 = ebp22; edx27 = (int8_t*)(v26 - 0x56eff560 + 0x56eff560 - 0x7fff9e82 + (int32_t)edi24 + 0x7fff9e82); edi28 = edi24; v29 = esi23->f4; ebx30 = (int8_t*)((int32_t)v29 + 0x6beb95db + (int32_t)edi28 - 0x6beb95db); eax25 = eax25; while ((uint32_t)edx27 < (uint32_t)ebx30) { al31 = (uint8_t)(*(uint8_t*)&eax25 + *edx27); *(uint8_t*)&eax25 = (uint8_t)((uint8_t)(al31 - 0x6d) ^ 33); ebx30 = ebx30; asm("rol eax, 0x1"); edx27 = (int8_t*)((uint32_t)edx27 + ((uint32_t)-0x3c5f09a8 >> 1 ^ 0x57642c5e ^ 0x36b45773)); ebp22 = ebp22; } esi23 = (struct s3*)((int32_t)esi23 - 0x198d197b + 8 + 0x198d197b); edi24 = edi28; } if (eax25 == *(int32_t*)(ebp22 + 0x187be0b1 + 0x77e50ac5 + 9 - 0x77e50ac5)) { } ebp32 = ebp22; esi33 = (int32_t*)(ebp32 + 0x187be0b1 + 9); v34 = *esi33; ebx35 = v34 + 0x35fd663d - 0x35fd663d; esi36 = (struct s4*)((int32_t)esi33 - 0x3af7f1d5 + 4 + 0x3af7f1d5); while (esi36->f0 || esi36->f4) { eax37 = esi36->f0; esi36->f0 = (eax37 ^ 0xcd7bb89) - 0x76b7f9a2 + ebx35 + 0x76b7f9a2 ^ 0x7effdaf1; esi36->f0 = esi36->f0 ^ 0x7effdaf1; asm("rol ebx, 0x1"); v38 = esi36->f4; ebp32 = ebp32; esi36->f4 = (v38 ^ 0xcd7bb89) - 0x794bbfd8 + 0x67ee9374 + ebx35 - 0x67ee9374 + 0x794bbfd8 + 0x77eec400; esi36->f4 = esi36->f4 - 0x77eec400; asm("rol ebx, 0x1"); ++esi36; ebx35 = ebx35; } *(int8_t*)(ebp32 + 0x187be0b0) = 0; goto v39; }
|
|
|
3
|
Programación / Ingeniería Inversa / Re: Check Integrity Macro Themida :v
|
en: 21 Enero 2019, 14:28 pm
|
c, pero esas son versiones viejas, igual me voy a fijar, osea lo que yo quiero es parchear el código sin que el anti cheat salte "no segment code integrity", que seguro es una api de themida porque lo encontro el script en anteriores versiones de themida en ese mismo anticheat.
En si lo que quiero es parchear esa cosa, y no el CRC. xD
|
|
|
4
|
Programación / Ingeniería Inversa / Re: Check Integrity Macro Themida :v
|
en: 21 Enero 2019, 00:52 am
|
Yo se donde estan, pero no se como funciona este sistema, en si el código se entiende, y parte del código tiene junkcode, pero es muy simple, yo en si puedo modificar ese check integrity, pero no se como funciona, por lo tanto no se que modificar.
|
|
|
5
|
Programación / Ingeniería Inversa / Check Integrity Macro Themida :v
|
en: 20 Enero 2019, 18:28 pm
|
¿Cómo se parchean?, todos los check integrity de themida son iguales pero nunca encontre un tutorial o algo que explique como parchearlos.
Lo que se es que leen sections y partes de códigos etc, tengo los ADDRESS de donde estan etc, si alguien es tan amable de explicarme que retornar o hacer xD.
|
|
|
8
|
Programación / Programación C/C++ / Sobre Crear pestañas CreateWindowExA etc
|
en: 31 Diciembre 2018, 21:51 pm
|
Hola, queria saber porque tengo un problemita a la hora de utilizar CreateWindowExA. Resulta que yo estaba creando una DLL que crea botones DENTRO de un programa externo, y lo hago de la siguiente forma: El tema es que al CREAR este nuevo boton en el programa, resulta que ESTE BOTON UTILIZA EL WNDPROC DE EL PROGRAMA Y EXPLOTA TODO Y NO USA EL DE MI DLL, queria saber si alguien sabe como realizar esto que quiero de la forma correcta. (CABE DESTACAR QUE EL BOTON SE CREA TODO, PERO AL APRETARLO EXPLOTA T2) HWND hwnd; LRESULT CALLBACK WndProc(HWND hwndMain, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { if (ul_reason_for_call) { DisableThreadLibraryCalls(hModule); DbgPrint("Injected1"); hwnd = FindWindowA( NULL, "MiProgramaExterno"); WNDCLASSEX windowClass; windowClass.lpszClassName = L"Main Class"; windowClass.cbClsExtra = NULL; windowClass.cbWndExtra = NULL; windowClass.cbSize = sizeof(WNDCLASSEX); windowClass.hbrBackground = (HBRUSH) CreateSolidBrush(RGB(240,240,240)); windowClass.hCursor = LoadCursor(NULL,IDC_ARROW); windowClass.hIcon = LoadIconA(hModule, "ICONO"); windowClass.hIconSm = LoadIconA(hModule, "ICONO"); windowClass.hInstance = hModule; windowClass.lpfnWndProc = WndProc; windowClass.lpszMenuName = NULL; windowClass.style = CS_VREDRAW | CS_HREDRAW; RegisterClassEx(&windowClass); //(HINSTANCE)GetWindowLongW(hwnd, GWL_HINSTANCE)
/*HWND Main = CreateWindowExW(NULL,L"Main Class",L"nuevapestañaaldope", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100,100,500,500, NULL,NULL,hModule,NULL);*/ MSG msg; while(GetMessageW(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
return msg.wParam; } return TRUE; }
LRESULT CALLBACK WndProc(HWND ahwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_CREATE: { HWND hwndButton = CreateWindowW( L"BUTTON", L"ok", WS_CHILD | WS_VISIBLE,10,10,100,100,hwnd,(HMENU)1,hModule, NULL); } break; case WM_COMMAND: { if(LOWORD(wParam) == 1) { MessageBoxA( ahwnd, "qwe", 0, 0 ); } } case WM_PAINT: { PAINTSTRUCT Ps; HDC hdc; hdc= BeginPaint(ahwnd,&Ps); // SetBkColor(hdc,RGB(0,0,0)); //SetTextColor(hdc,RGB(0,0,0)); // TextOut(hdc,200,150,L"Hello World!",12); EndPaint(ahwnd,&Ps); } break; case WM_CLOSE: { PostQuitMessage(WM_QUIT); } break; default: return(DefWindowProc(ahwnd,message,wParam,lParam)); }
return(0); }
|
|
|
10
|
Programación / Ingeniería Inversa / VMProtect pregunta deteccion
|
en: 25 Diciembre 2018, 17:56 pm
|
Hola, queria preguntar que pasa con VMProtect, les comento el caso, estoy desamblando cierto programa QUE SI TIENE VMPROTECT, el tema:
Al utilizar el VMProtect Ultra Unpacker v1.0, funciona correctamente si en el Phant0m coloco la opcion de HIDE PEB, pero si coloco esta opción no puedo dumpearlo porque en programas externos no aparece, ni en scylla ni en imprec.
El script lo pide en StrongOD pero la coloco y a la hora de darle a run, salta el cartelito de que se detecto un debugger.
Alguien que sepa que hacer?, estaba pensando injectar una dll atras de esa y ocultar el peb y a la hora de dumpearlo relinkear el peb pero es otro temita con ollydbg...
Si alguien me puede ayudar :$
|
|
|
|
|
|
|