Agganciare un'API * non esportata *

3

Voglio sapere c'è un modo per agganciare (hook in linea) un'API non esportata di un PE? Ho questo binario (PE 32 bit) che non usa alcuna DLL (un file binario collegato staticamente) e mi piacerebbe sapere quale dovrebbe essere l'approccio per agganciare una funzione in questo binario (in memoria)?

Di seguito è un mio pensiero, ma non so quanto sia pratico? Per favore fammi sapere cosa pensi. Inoltre, faccelo sapere se hai una soluzione migliore.

  1. Inietti DLL al file binario in esecuzione
  2. La DLL iniettata deve trovare l'indirizzo dell'API da agganciare:
    • cerca la sequenza di byte nella sezione di testo (codice bytecode dell'API da agganciare)
  3. Aggiungi il gancio (istruzione JMP)

Se la via sopra è l'unico modo per farlo. Quanto è pratico? Per favore fammi sapere cosa pensi. Grazie in anticipo.

    
posta aMa 29.05.2015 - 10:32
fonte

1 risposta

2

Following is a thought of mine, but don't know how practical it is?

Se non hai accesso al codice sorgente del programma, devi fare molte ipotesi sul formato degli argomenti, ecc. E devi emulare il comportamento originale della funzione in un modo che non interrompe il programma o torna al (restante) della funzione originale dopo aver emulato la parte della funzione sovrascritta con l'istruzione JMP.

Potrebbe anche essere necessario modificare la protezione della pagina, in quanto il codice del programma di solito non è modificabile per impostazione predefinita.

I programmi che adottano determinati tipi di misure anti-reverse engineering saranno difficili da applicare in questo modo, perché eseguono il checksum del loro codice di programma di volta in volta.

Tuttavia, per un semplice binario non protetto questo può funzionare (con lo sforzo richiesto speso).

    
risposta data 29.05.2015 - 12:15
fonte

Leggi altre domande sui tag