El problema es que cuando trato de hacerlo con ntQuerySystemInformation, que es la función que utiliza el task manager para ver los procesos, me da un error de access violation cuando trata de acceder a "00000000". El hook funciona perfecto y todo se ejecuta según corresponde. Acá les dejo dónde es el fallo:
Código
00A30079 ^75 C2 JNZ SHORT 00A3003D 00A3007B 8D4424 1C LEA EAX,DWORD PTR SS:[ESP+1C] 00A3007F 8B5424 20 MOV EDX,DWORD PTR SS:[ESP+20] 00A30083 8B4C24 2C MOV ECX,DWORD PTR SS:[ESP+2C] 00A30087 8D1411 LEA EDX,DWORD PTR DS:[ECX+EDX] 00A3008A 42 INC EDX 00A3008B 8910 MOV DWORD PTR DS:[EAX],EDX 00A3008D 8B4424 1C MOV EAX,DWORD PTR SS:[ESP+1C] 00A30091 85C0 TEST EAX,EAX 00A30093 0F84 A3000000 JE 00A3013C 00A30099 8B5424 1C MOV EDX,DWORD PTR SS:[ESP+1C] 00A3009D 8B4424 58 MOV EAX,DWORD PTR SS:[ESP+58] 00A300A1 894424 08 MOV DWORD PTR SS:[ESP+8],EAX 00A300A5 8B4424 54 MOV EAX,DWORD PTR SS:[ESP+54] 00A300A9 894424 04 MOV DWORD PTR SS:[ESP+4],EAX 00A300AD 8B4424 50 MOV EAX,DWORD PTR SS:[ESP+50] 00A300B1 890424 MOV DWORD PTR SS:[ESP],EAX 00A300B4 FFD2 CALL EDX -------->> Aca se llama a la call original guardada en la heap. 00A300B6 83EC 0C SUB ESP,0C 00A300B9 884424 3B MOV BYTE PTR SS:[ESP+3B],AL 00A300BD C74424 30 000000>MOV DWORD PTR SS:[ESP+30],0 00A300C5 EB 52 JMP SHORT 00A30119 ----------------------------------------------------------------------- 00A30119 8B4424 58 MOV EAX,DWORD PTR SS:[ESP+58] 00A3011D 8B00 MOV EAX,DWORD PTR DS:[EAX] --->> Aca trata de asignar el valor de EAX, pero este tiene el valor "00000000" 00A3011F C1E8 02 SHR EAX,2 00A30122 3B4424 30 CMP EAX,DWORD PTR SS:[ESP+30] 009E0122 3B4424 30 CMP EAX,DWORD PTR SS:[ESP+30] 009E0126 0F97C0 SETA AL 009E0129 84C0 TEST AL,AL 009E012B ^75 9A JNZ SHORT 009E00C7 009E012D 8B4424 58 MOV EAX,DWORD PTR SS:[ESP+58] 009E0131 8B00 MOV EAX,DWORD PTR DS:[EAX] 009E0133 8D50 FC LEA EDX,DWORD PTR DS:[EAX-4] 009E0136 8B4424 58 MOV EAX,DWORD PTR SS:[ESP+58] 009E013A 8910 MOV DWORD PTR DS:[EAX],EDX 009E013C 8A4424 3B MOV AL,BYTE PTR SS:[ESP+3B] 009E0140 83C4 4C ADD ESP,4C 009E0143 C2 0C00 RETN 0C
Esta es la llamada a la función que luego es reemplazada por JMP (Address función):
Código
7C90D92E > B8 AD000000 MOV EAX,0AD 7C90D933 BA 0003FE7F MOV EDX,7FFE0300 7C90D938 FF12 CALL DWORD PTR DS:[EDX] 7C90D93A C2 1000 RETN 10
Alguien puede darme una mano con esto??
Muchas gracias!
APOKLIPTICO.