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++ - Entry point
Forum - C/C++ - Entry point

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
vincenzodicicco (Normal User)
Newbie


Messaggi: 5
Iscritto: 03/04/2010

Segnala al moderatore
Postato alle 15:06
Sabato, 03/04/2010
Salve, è da un po di giorni che mi pongo la domanda su come ottenere tramite c++, l'entry point di un eseguibile scelto.
Lo scopo sarebbe di riuscire a leggere i vari indirizzi di un eseguibile, come fa un diassemblatore, qualcuno sa aiutarmi?

PM Quote
Avatar
GuglielmoS (Ex-Member)
Pro


Messaggi: 114
Iscritto: 27/11/2009

Segnala al moderatore
Postato alle 15:12
Sabato, 03/04/2010
Testo quotato

Postato originariamente da vincenzodicicco:

Salve, è da un po di giorni che mi pongo la domanda su come ottenere tramite c++, l'entry point di un eseguibile scelto.
Lo scopo sarebbe di riuscire a leggere i vari indirizzi di un eseguibile, come fa un diassemblatore, qualcuno sa aiutarmi?


Questo potrebbe interessarti.
https://quequero.org/store/program/ntos_pe.htm
Ciao GuglielmoS.


La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
--Isaac Asimov
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:51
Sabato, 03/04/2010
Se parliamo di un "file eseguibile", trovi tutto nell'header del file stesso (secondo il formato PE, Portable Executable).

Ma se parli di un "eseguibile a run time", il discorso è diverso.

Dato che parli di "indirizzi di un eseguibile" (che non ha molto senso), spiegati un po' meglio ... soprattutto dicci chiaramente, cosa vuoi fare (solita questione di modificare valori contenuti in memoria per ingannare i giochi?).


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
vincenzodicicco (Normal User)
Newbie


Messaggi: 5
Iscritto: 03/04/2010

Segnala al moderatore
Postato alle 19:08
Sabato, 03/04/2010
No non devo modificare nessun gioco, e neppure programmi altrui.
Bensi devo apportare delle modifiche ad un mio programma nato proprio per questo scopo.Devo applicare dei Jump all'entrypoint di questo eseguibile per dirottarlo ad un altro indirizzo più infondo.
Queste procedure le riesco a fare manualmente con un diassemblatore come ollydebug ma a me serve farle in automatico.E' tutto per un piccolissimo software di sicurezza e più che altro per passatempo e approfondimenti.Quindi a me interessa riuscire a leggere i vari indirizzi.grazie spero di essere stato più chiaro

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:57
Sabato, 03/04/2010
Testo quotato

Postato originariamente da vincenzodicicco:

No non devo modificare nessun gioco, e neppure programmi altrui.
Bensi devo apportare delle modifiche ad un mio programma nato proprio per questo scopo.



Cioè ? Se è un tuo programma, perchè non modifichi il sorgente ?

Testo quotato

Devo applicare dei Jump all'entrypoint di questo eseguibile per dirottarlo ad un altro indirizzo più infondo.



Se non sei più esplicito e chiaro, non si capisce il perchè di questa cosa ...

Testo quotato

Queste procedure le riesco a fare manualmente con un diassemblatore come ollydebug ma a me serve farle in automatico.E' tutto per un piccolissimo software di sicurezza e più che altro per passatempo e approfondimenti.



Te l'ho detto ... se non sei molto più chiaro e spieghi in dettaglio, non si può dire molto ...

A quanto pare, dato che parli di azioni eseguite con un debugger, ti serve a "runtime" ...

Testo quotato

Quindi a me interessa riuscire a leggere i vari indirizzi.



Ma non dovevi modificare l'entry point? Cosa c'entrano gli "indirizzi" (di cosa?) ?

Testo quotato

grazie spero di essere stato più chiaro



Mi dispiace, ma non lo sei stato ... per due motivi : non ci dici "esattamente" cosa vuoi fare e, molto probabilmente, non sai "esattamente" cosa pensi si possa fare per ottenerlo.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1787
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 3:40
Domenica, 04/04/2010
se per "leggere gli indirizzi di un eseguibile" intendi dire "leggere il contenuto delle celle di memoria occupate da un eseguibile" allora la soluzione è:

Codice sorgente - presumibilmente C/C++

  1. FILE *fin;
  2. int c, addr;
  3. fin = fopen("C:\Windows\calc.exe", "rb");
  4.  
  5. addr = 0;
  6. do
  7. {
  8.   c = fgetchar(fin);
  9.   printf("%x : %x\n", addr, c); // TODO: aggiungere effetto "matrix" qui
  10.   addr++;
  11. } while (c != EOF);
  12.  
  13. fclose(fin);


:rotfl:


Software Failure: Guru Meditation
Forum su Informatica, Elettronica, Robotica e Tecnologia: http://www.nonsoloamiga.com
PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 9:38
Domenica, 04/04/2010
in pratica il tuo programma dovrebbe disassemblare un programma, e inserire "all'avvio" di questo l'istruzione assembler jmp che lo fa saltare quindi ad un altro indirizzo di memoria?


Auguri di buona Pasqua a tutti!

Ultima modifica effettuata da Overflow il 04/04/2010 alle 9:38
PM Quote
Avatar
vincenzodicicco (Normal User)
Newbie


Messaggi: 5
Iscritto: 03/04/2010

Segnala al moderatore
Postato alle 12:22
Domenica, 04/04/2010
Overflow ha centrato in pieno.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 23:29
Domenica, 04/04/2010
Testo quotato

Postato originariamente da vincenzodicicco:

Overflow ha centrato in pieno.



A parte il fatto che il forum non è un gioco al "tiro a segno" da centrare, non è che si sia capito molto di più ...

Un programma NON "disassembla" un altro programma e all'avvio viene eseguito del codice a volte necessario per inizializzare il programma, codice che NON può essere saltato cambiando un JMP. E per dirla tutta, non si sa neanche come avresti identificato il "nuovo indirizzo" ...

Insomma, sicuramente, se vuoi fare qualcosa, devi spiegare BENE cosa vorresti fare IN PRATICA (qual è questo programma? cosa vuoi ottenere saltando all'altro indirizzo?).


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo