Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicitÓ e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Iniettare codice
Forum - C/C++ - Iniettare codice

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:59
Venerdý, 31/07/2015
Ragazzi scusate, ora che mi trovo diciamo ad un buon punto per la mia mod.
volevo chiedervi se questo metodo che ho usato Ŕ corretto.

Ricordo che in precedenza, Per scrivere sulla memoria normalmente si utilizza


Codice sorgente - presumibilmente Plain Text

  1. WriteProcessMemory(HANDLE,LPVOID,LPVOID,LPCVOID,SIZE_T,SIZE_T);




ora esempio io ho questa funzione


Codice sorgente - presumibilmente C/C++

  1. PBYTE funzione(PARAMETERS * myparam){
  2.                          MessageBox(0,"Prova","test",MB_OK);
  3.  
  4.                          return 0;
  5. }




Ho ricordato la volta scorsa di passare come argomento tramite il WriteProcessMemory un void del tipo
(void*)Indirizzo

Ho pensato di fare in questo modo. Non s˛ se il concetto Ŕ sbagliato.
per questo chiedo a voi. Il fatto sta che cmq facendo, non succede proprio nulla.

Si avvia il programma, e non succede quello che dovrebbe succedere ovviamente mostrarmi il messagebox


Codice sorgente - presumibilmente C/C++

  1. void * MyFuncAddress = VirtualAllocEx(p, NULL, size_funzione, MEM_RESERVE|MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  2.  
  3. WriteProcessMemory(p, MyFuncAddress, (void*)funzione,size_funzione, NULL);



E' corretto quello che ho fatto?  ( Anche se stranamente credo proprio di no. )

Ultima modifica effettuata da Thejuster il 31/07/2015 alle 9:59


PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1452
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 0:50
Sabato, 01/08/2015
Prova a cercare su Google code injection  writeprocessmemory

Dovresti trovare qualche esempio funzionante....

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 8:36
Lunedý, 03/08/2015
Uhm si queste sono diciamo le basi di quello che ho fatto.

Scrivere nella memoria e molto semplice.

quello che realmente mi serve e tipo questo

http://www.codeproject.com/Articles/4610/Three-Ways-to-Inj ...

Praticamente mi servirebbe fare il code cave

da quel che ho letto. Bisogna aprire il programma con il debugger.
Scorrere in basso fino a trovare una lista di indirizzi vuoti usati dal compilatore per allocare dinamicamente variabili ecc. ecc.
uno di quei indirizzi andrÓ allocato il void.

per˛ non conosco la procedura per fare questo.

sto cercando di farla anche leggendo diversi articoli ma sbaglio in qualche cosa.
non conoscete un buon articolo o tutorial su questi argomenti?



PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1452
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 11:52
Lunedý, 03/08/2015
Il caro vecchio dll injection funziona ancora?

https://it.wikipedia.org/wiki/Dll_injection

Qui Ŕ spiegato molto velocemente, ma efficacemente. Avevi giÓ provato in questo modo? C'Ŕ un motivo per il quale la dll injection non ti va bene?

PerchŔ io ho usato solo dll injection, e non sono abbastanza preparato su questi argomenti per aiutarti.

Ultima modifica effettuata da TheDarkJuster il 03/08/2015 alle 11:56
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 15:24
Lunedý, 03/08/2015
Uhm si Ŕ molto chiaro anche troppo direi.

Allora vada per la Dll Injection.

Unica cosa che non mi Ŕ chiara.

Una volta che diciamo mi impossesso del processo.

Esiste un modo per manipolare funzioni interne al programma?


Esempio:

Piero crea un programma di nome ciao.exe

All'interno di ciao.exe esistono ovviamente determinate funzioni, classi etc.

Domanda 1.
C'Ŕ un modo per vedere le funzioni in esso contenute?

Domanda 2.
Posso richiamare le funzioni all'interno di ciao.exe programmato da piero?


PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1452
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 15:47
Lunedý, 03/08/2015
Domanda numero 1:
non penso proprio, perchŔ al momento della compilazione di un eseguibile le funzioni diventano semplici istruzioni che partono da un indirizzo e le chiamate diventano call o jmp a quell'indirizzo.

Altra storia Ŕ per le dll che espostano funzioni. Se una dll esporta simboli puoi ottenere i loro nomi, ottenere una libreria statica da linkare per poter usare quella dll e con un po' di lavoro anche l'header: http://www.nirsoft.net/utils/dll_export_viewer.html e http://stackoverflow.com/questions/437432/is-there-a-way-t ...

In pratica puoi fare un sistema che compila la dll da iniettare a runtime, e la linka a una libreria che fa riferimento a un'altra dll, che potrebbe essere una dll del programma "agganciato", ma non mi sembra una cosa molto sensata. Comunque Ŕ fattibile......

Domanda numero 2:
Non Ŕ possible, o almeno non c'Ŕ un modo "standard" per farlo.........
...... e se c'Ŕ non lo trovo e non mi viene in mente........

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 16:02
Lunedý, 03/08/2015
capisco.
(Ancora tanta invidia e tanta gelosia al tipo che Ŕ riuscito a fare questo)

Come detto in altri topic. Un tipo ci e' riuscito.
Non s˛ come cavolo abbia fatto ma ci Ŕ riuscito.

Altro ancora, chiedevo perchÚ immaginavo che in C++ poteva esistere qualcosa tipo come il .net esempio il reflector.
che si riesce a risalire a classi ed a funzioni.

Con IDAPro non Ŕ possibile farlo?

ho trovato

https://en.wikipedia.org/wiki/Run-time_type_information



PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1452
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 16:26
Lunedý, 03/08/2015
"(Ancora tanta invidia e tanta gelosia al tipo che Ŕ riuscito a fare questo) " a cosa ti riferisci?

Comunque, no: il bello e brutto del C++ compilato da gcc e simili Ŕ che ne esce codice macchina, quindi, niente reflection: non pu˛ esistere niente del genere.

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 16:59
Lunedý, 03/08/2015
Precisamente lui ci e riuscito.

http://cherrytree.at/cms/lang/en/ultimate-part-3-loader/

Ma quello che non capisco ancora.e come diavolo a fatto a richiamare funzioni interne del programma.

Ma forse mi sa' che rinuncio. Credo di non essere ancora preparato per arrivare a questi livelli.
Conviene prima che mi studi per bene il c++ ed assembly. E questa cosa del code cave.

Iniettare piccole porzioni di codice non dovrebbe essere un problema. Nemmeno utilizzare la dll injection.
Ma il problea sta proprio in quello che voglio fare io.
E molto complicato

Ultima modifica effettuata da Thejuster il 03/08/2015 alle 17:17


PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo