È possibile modificare un eseguibile nativo e cambiare la libreria (dinamica) da cui dipende?

1

Suppongo di compilare una semplice applicazione chiamata myproggy che dipende dalla libreria dinamica libfoo . Supponendo che io abbia un'altra libreria dinamica libbaz che implementa assolutamente la stessa interfaccia (in altre parole ha le definizioni delle stesse funzioni di libfoo), è possibile modificare myproggy per dipendere da libbaz senza la necessità di ricostruire ?

Posso farlo facilmente nel caso in cui posso caricare dinamicamente la libreria, ma cosa succede se non posso, e non riesco a ricompilare la libreria?

Sono anche a conoscenza dei problemi di sicurezza relativi a questo.

    
posta DejanLekic 01.09.2014 - 12:46
fonte

1 risposta

3

Se davvero implementa esattamente la stessa interfaccia, m allora una semplice rinomina dovrebbe essere sufficiente.

Altrimenti, sì è possibile - utilizzando un editor binario, è possibile trovare la posizione delle chiamate di sistema alla DLL e modificarle per chiamare la nuova libreria. Gli hacker fanno tutto questo (o tecniche simili) tutto il tempo per rimuovere i meccanismi di protezione dalla copia.

Inoltre, Microsoft ha uno strumento ( Fakes ) che viene utilizzato per testare le unità riscrivere il binario per chiamare diversi metodi in fase di esecuzione, in modo da poter inserire uno stub modificato per una vera chiamata di libreria a scopo di test. Questo utilizza il loro strumento Detours che:

contains utilities to attach arbitrary DLLs and data segments (called payloads) to any Win32 binary

Ho usato uno strumento chiamato Purify che ha strumentato (cioè modificato il file binario) delle applicazioni in esecuzione per iniettare il codice di performance e controllo qualità.

    
risposta data 01.09.2014 - 12:56
fonte

Leggi altre domande sui tag