Domanda Sapere che processi esegue programma in C++

Stato
Discussione chiusa ad ulteriori risposte.
Virus total nelle informazioni addizionali ha messo questo:


SHELL32.DLL
ShellExecuteA

KERNEL32.dll
AddAtomA, CloseHandle, CreateSemaphoreA, CreateToolhelp32Snapshot, ExitProcess, FindAtomA, GetAtomNameA, GetLastError, InterlockedDecrement, InterlockedIncrement, OpenProcess, Process32First, Process32Next, ReadProcessMemory, ReleaseSemaphore, SetLastError, SetUnhandledExceptionFilter, Sleep, TlsAlloc, TlsFree, TlsGetValue, TlsSetValue, WaitForSingleObject, WriteProcessMemory

msvcrt.dll
__getmainargs, __mb_cur_max, __p__environ, __p__fmode, __set_app_type, _assert, _cexit, _ctype, _errno, _filelengthi64, _fstati64, _iob, _isctype, _lseeki64, _onexit, _pctype, _setmode, _strnicmp, _vsnprintf, abort, atexit, fclose, fflush, fgetpos, fopen, fprintf, fread, free, fsetpos, fwrite, getc, localeconv, malloc, memchr, memcpy, memmove, memset, printf, putc, setlocale, setvbuf, signal, strcmp, strcoll, strcpy, strftime, strlen, strtod, strxfrm, system, time, ungetc

Già per il fatto che ci sia Read e Write memory non sa niente di buono. Prova a farlo girare su una macchina virtuale.
 
Read e Write memory serve per leggere ed editare un processo di chrome, almeno suppongo.
 
invece probabilmente suppone bene, write e readprocessmemory non allocano memoria, servono a scrivere e leggere nella/dalla memoria di un altro processo ed è un modo comune di hackerare un processo ed essendo una hack non ci vedo niente di strano, probabilmente va proprio a leggere e scrivere dal processo chrome, sarebbe piu interessante vedere cosa fa quel shellexecute, anche se probabilmente lancia un link, metodo veloce per aprire un link senza preoccuparsi troppo di quale browser usare...
 
Sinceramente non sapevo fosse un hack (non "una" hack) e per questo sono subito stato allarmato da al richiamo a queste due api. In questo caso è del tutto normale. Comunque evidentemente mi sono spiegato male. Per "allocare" intendevo scrivere (come suggerisce il nome della funzione anche se sono consapevole che abbia un significato diverso ma li per lì non c'ho fatto caso).

Comunque non escludo la possibilità che quel shellexecute non serva per inviare comandi dos (non ne ho alcuna prova).
Chiarendo un punto fondamentale, ripeto che non sapevo fosse un hack.
 
shellexecute credo proprio serva, come detto da digger, a lanciare un link sul browser predefinito.
Mi interesserebbe sapere di più su
ReadProcessMemory e WriteProcessMemory sarebbe possibile?
 
ReadProcessMemory e WriteProcessMemory servono a leggere o a scrivere dalla/nella memoria, come ha giustamente detto digger. Generalmente questo due funzioni negli hack servono per modificare degli address, ovvero degli indirizzi di memoria. Per ricavare questi indirizzi di memoria mi pare ovvio che uno non può andare a caso ma necessita di un memory-scanner. Un memory-scanner ti permette di cercare gli indirizzi di memoria corrispondenti ad un valore immesso dall'utente e molto altro.

Chiunque cominci a creare hacks passa quasi sempre dal famoso MineSweeper, ovvero il gioco preinstallato su windows nel quale devi cercare di non far scoppiare le mine. Supponendo di voler rendere il tempo sempre a "00:00" mi basterà fermare il gioco tramite il memory-scanner (si, ha una funzione che praticamente non fa più rispondere un'applicazione, ovvero rimane bloccata) e sempre tramite di esso cercare un valore corrispondente al tempo corrente, supponiamo 14 secondi. Questa non è una guida quindi non ti posterò passo passo come fare, quindi facciamo sempre finta che alla fine troviamo l'address corrispondente a 14 secondi. Quindi io so sempre che a quel particolare indirizzo corrisponde il tempo (in realtà non è così, a un determinato valore ogni volta che l'applicazione riparte corrisponde un address diverso, ma esistono tecniche per rintracciarlo lo stesso) quindi io con WriteProcessMemory, nella mia applicazione, andrò a modificare quell'address con il valore che voglio. Tutto questo procedimento è stato descritto grossolanamente anche se il concetto dovrebbe essere corretto.

Comunque sia non è che proprio vado a scrivere nella memoria come se niente fosse. Molto volte quando tenterai di scrivere in un area di memoria ti comparirà un messaggio "access denied", sia perchè quel processo potrebbe avere delle protezioni, sia perchè il tuo programma non possiede i privilegi adatti, sia per altri fattori.

Se ti interessa questo argomento leggi la guida di speedjack nella sezione Visual Basic .NET (in programmazione) riguardante la creazione hacks.
 
Ultima modifica:
Ho creato un breve codice che potrebbe essere l'hack, date un occhiata per vedere se ho sbagliato qualcosa:

Codice:
#include<windows.h>using namespace std; 
int main()
{
HWND window;
window = FindWindow (0," Galaxy Life su Facebook"); 
if(!(window = FindWindow (0,"Galaxy Life su Facebook")))
{MessageBox(0,"Prego Aprire il Gioco","Errore", MB_OK | MB_ICONINFORMATION);}
else
{MessageBox(0,"La ricerca ha avuto successo","Successo", MB_OK | MB_ICONINFORMATION);}


DWORD pid;
GetWindowThreadProcessId( window,& pid);


HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid) 


if(! hProcess)
{ MessageBox(0,"Impossibile editare il processo"," Errore",MB_OK | MB_ICONERROR);} 
{MessageBox(0,"Processo con possibilità di editare ","Successo",MB_OK);}//


BYTE pick up[] = { 0x32,0x34,0x21,0x32,}; 
for(int i = 0; i < 4; i++)


WriteProcessMemory(hProcess,(LPVOID) 0xFFFF, & pick up[i], NULL);
if(WriteProcessMemory(hProcess,(LPVOID) 0xFFFF, & pick up, NULL))
{MessageBox(0,"La memoria è stata editata con successo, goditi la tua Hack","Successo",MB_OK | MB_ICONINFORMATION);}
else
{ MessageBox(0,"Impossible editre la memoria controllare di non aver chiuso il gioco","ERRORE",MB_OK);


CloseHandle (hProcess);
return 0;
}
 
il tuo codice è concettualmente giusto, c'è qualche piccolo errore qua e la, qualche cosa nella forma e qualche fix di concetto (ad esempio nella chiamata ad OpenProcess), comunque me lo sono copiato e modificato un po' per correggerlo e per adattarlo ai miei gusti personali, questo è quello che ne è uscito, l'ho provato con "winmine" (campo minato) di windows xp, chiaramente con un altro processo l'indirizzo (ADDY) va modificato e cosi anche i bytes che vanno a patchare il codice (qui dei semplici NOP)

Codice:
#include<windows.h>
const int ADDY = 0x1002FF5;


int main()
{
    HWND window;
    window = FindWindow(NULL,"Prato fiorito");
    if(!window)
    {
        MessageBox(NULL,"Prego Aprire il Gioco","Errore", MB_OK | MB_ICONINFORMATION);
        return 1;
    }


    MessageBox(NULL,"La ricerca ha avuto successo","Successo", MB_OK | MB_ICONINFORMATION);


    DWORD pid=NULL;
    GetWindowThreadProcessId( window,&pid);
    if (!pid)
    {
        MessageBox(NULL,"Errore GetWindowThreadProcessId","Errore", MB_OK | MB_ICONINFORMATION);
        return 1;
    }


    HANDLE hProcess = OpenProcess(PROCESS_VM_WRITE|PROCESS_VM_OPERATION,FALSE,pid); 


    if(!hProcess)
    { 
        MessageBox(NULL,"Impossibile editare il processo"," Errore",MB_OK | MB_ICONERROR);
        return 1;
    }


    MessageBox(NULL,"Processo con possibilità di editare ","Successo",MB_OK);


    // versione 1
    BYTE pickup[] = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }; 
    if (WriteProcessMemory(hProcess,(LPVOID)ADDY,pickup,sizeof(pickup),NULL))
    {
        MessageBox(0,"La memoria è stata editata con successo, goditi la tua Hack","Successo",MB_OK | MB_ICONINFORMATION);
    }
    else
    {
        MessageBox(0,"Impossible editre la memoria controllare di non aver chiuso il gioco","ERRORE",MB_OK);
        return 1;
    }


    CloseHandle (hProcess);
    return 0;
}


// versione 2
//    if (WriteProcessMemory(hProcess,(LPVOID)ADDY,(LPCVOID)"\x90\x90\x90\x90\x90\x90",6,NULL))
 
Premetto che ho dato solo un occhiata e non ho ne compilato ne altro, ma sembra buono.
Non avevo pensato alla possibilità di inserire l'ADDY così:

Codice:
[LEFT][COLOR=#333333]const int ADDY = 0x1002FF5;[/COLOR][/LEFT]

Grazie mille, ti farò sapere appena lo testo per bene, ora sono di fretta.

- - - Updated - - -

Ho finalmente provato il tuo codice. Ho problemi a individuare il pointer del mio gioco quindi ho provato su prato fiorito e funziona.
Ma mi sorge un dubbio, se io ho un gioco che si usa direttamente sul browser (un flashgame) il codice rimane invariato e scrivo il titolo della finestra del browser o cosa?
 
Stato
Discussione chiusa ad ulteriori risposte.