ciao a tutti,
mentre mi facevo i fatti miei e leggevo qua e la in internet alla scoperta di cose interessanti mi sono imbattuto in un sorgente di un tizio che sperimentava i breakpoints, ma piu di quelli mi ha colpito una parte del suo source in cui creava una console per un processo già in esecuzione che ovviamente non la prevedeva.
Cosi ho fatto un esperimento con warrock e direi che funziona bene.
Chiaramente non è collegato a warrock, lo si può fare anche con altri processi.
L'utilità? che è molto facile stampare delle stringhe che ci possono fornire informazioni di debug del processo ad esempio.
Infatti nella console possiamo scrivere con il solito printf.
Qui sotto riporto un piccolo sorgente di test che ho creato mettendo insieme quella parte piu qualcosina di mio per adattarlo alla situazione:
Codice:
#include <windows.h>
#include <stdio.h> // thanks to Marchrius ;)
void TestConsole()
{
int value=0;
Sleep(60000);
if(AllocConsole())
{
freopen("CONOUT$", "w", stdout);
SetConsoleTitle(L"Console");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
printf("DLL loaded.\n");
}
while(true)
{
Sleep(100);
printf("Value->%d\n",value++);
if (value>60000) value=0;
}
}
int APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID reserved)
{
if(reason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hModule);
CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)TestConsole,NULL,NULL,NULL);
}
return TRUE;
}
Quindi in C++ create un progetto DLL e incollate il source, compilate e otterrete una DLL
Poi prendete un injector per warrock e iniettatela come fosse una hack.
Vedrete che dopo 60 secondi (lo sleep(60000)) comparità la console con dentro scritto Dll loaded e poi un numero che si incrementa sempre.
E' solo un esempio per far capire, voi nella console ci potrete stampare tutto quello che vi pare, aree di memoria, variabili etc etc
Lo sleep iniziale di 60 sec l'ho messo perchè se aprite subito la console appena parte warrock, vedrete che vi si chiude, aprendola dopo invece resta aperta.
ciaps
Digger