Discussione Dll Injenction, l'operazione riesce ma l'entry non viene avviata

  • Autore discussione Utente cancellato 222810
  • Data d'inizio
U

Utente cancellato 222810

Sto facendo dei primi tentativi di Dll Injenction ma sono bloccato da qualche giorno (ammetto di non avere fatto troppi tentativi) su un problema piuttosto banale.
Cos'ho fatto:
ho creato una dll semplice per testare l'injenction:
(non mi fa creare spoiler quindi carico tutto su pastebin)
ho recuperato un paio di injector da internet (smanettandoci un po' ma lasciandoli teoricamente operativi):

ho provato ad iniettare la dll in un paio di processi
>L'injector ha validato tutti i passaggi (restituendo il pid corretto) e si è chiuso correttamente
>Lo spazio di memoria del processo è aumentato per fare spazio alla modifica
>L'entry (DllMain()) non viene (apparentemente) chiamata (non viene prodotto il file di output asdrubale.txt)
le mie ipotesi sono:
4/10 - non ho studiato abbastanza e mi manca qualche nozione fondamentale
4/10 - ho commesso qualche errore nella creazione della dll
1/10 - Windows 10 mi sta perculando
1/20 - tutti gli injector che ho provato sono malfunzionanti o realizzati per un altro tipo di dll
1/20 - I processi su cui ho effettuato l'operazione non supportano questo tipo di modifica

off topic: quasi tutte le funzioni dell'editor non funzionano, sapete perchè? (uso firefox) nel caso rispondetemi in pm così evitiamo di andare off
 
Ciao,

non ho visto gli injector, ma a prima vista mi sembrano fatti correttamente (in teoria potresti farti ritornare il risultato della LoadLibrary per sicurezza, con poco lavoro in più).

Tuttavia ho visto che non hai chiuso lo stream, quindi potrebbe essere quello il problema.
Io l'ofstream lo dichiarerei in questo modo:

std::ofstream out("asdrubale.txt", std::ofstream::out);

Inoltre, lo chiuderei al detach:

case DLL_THREAD_DETACH: out << "DLL_T_DETACH" << endl; out.close(); break; case DLL_PROCESS_DETACH: out << "DLL_P_DETACH" << endl; out.close(); break;
 
Ultima modifica da un moderatore:
Grazie, dopo cena provo ad applicare le modifiche

EDIT:
Ho applicato le modifiche all'out ma senza riscontri, in compenso ho scoperto che HANDLE asdc = CreateRemoteThread(h, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddr, dereercomp, 0, NULL); returna 0 o forse null?
EDIT 2:
Ho trovato la causa del problema (almeno del primo) da bravo pirla stavo provando un injector a 32bit su un processo a 64bit (il problema non si pone dato che il programma su cui dovrò usare tutto il sistema sarà a 32bit)
ora mi returna altri errori ma almeno il file viene creato e quindi la dllmain lanciata.