Oppure

Loading
03/04/10 13:06
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?
aaa
03/04/10 13:12
GuglielmoS
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.
quequero.org/store/program/…
Ciao GuglielmoS.
aaa
03/04/10 13:51
nessuno
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 ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
03/04/10 17:08
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.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
aaa
03/04/10 17:57
nessuno
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 ?

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 ...

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" ...

Quindi a me interessa riuscire a leggere i vari indirizzi.


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

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 ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
04/04/10 1:40
TheKaneB
se per "leggere gli indirizzi di un eseguibile" intendi dire "leggere il contenuto delle celle di memoria occupate da un eseguibile" allora la soluzione è:

FILE *fin;
int c, addr;
fin = fopen("C:\Windows\calc.exe", "rb");

addr = 0;
do
{
  c = fgetchar(fin);
  printf("%x : %x\n", addr, c); // TODO: aggiungere effetto "matrix" qui
  addr++;
} while (c != EOF);

fclose(fin);

:rotfl:
aaa
04/04/10 7:38
Overflow
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 04/04/10 7:38
aaa
04/04/10 10:22
vincenzodicicco
Overflow ha centrato in pieno.
aaa