So che è impossibile invertire una dll in un codice C++, quindi vorrei raccogliere il maggior numero possibile di dettagli da esso. Non è la mia DLL, quindi non ho il codice sorgente ovviamente. Quale programma dovrei usare?Come invertire una DLL nel codice C++?
risposta
Bene, se sei esperto puoi smontare la DLL e capire tutte le sue funzioni. Questo richiede una notevole quantità di tempo, ma se lo fai puoi tornare indietro alla fonte a mano.
Altrimenti, è possibile iniziare utilizzando uno strumento come Dependency Walker per ottenere le DLL e le funzioni da cui dipende e le funzioni che esporta. Da lì puoi trovare le funzioni che ti interessano e utilizzare un disassemblatore come IDA per vedere cosa fanno.
Nessuno, tranne le persone sciocche che hanno troppo tempo a disposizione, annullerebbero * tutto *. Andresti sempre con qualcosa come IDA e segui i percorsi di chiamata che ti interessano. Inoltre, è possibile visualizzare le esportazioni in IDA stessa. Non c'è bisogno di un intermediario. +1 ancora – 0xC0000022L
Non tutti hanno IDA, o vogliono impararlo. Quindi, suggerisco Dependency Walker come un modo molto semplice per ottenere informazioni utili. (Ovviamente, se sei bravo in IDA, puoi ovviamente fare tutto lì :)) – nneonneo
È necessario un visualizzatore di file PE. Questo ti dirà le esportazioni dalla DLL e potrai ottenere i dati nella sezione .text per vedere il codice della macchina.
È possibile visualizzare l'elenco delle funzioni esportate utilizzando lo strumento dumpbin. Se le funzioni C++ vengono esportate, potresti essere in grado di dedurre i parametri dal nome mangling.
È possibile estrarre tutte le risorse dalla DLL semplicemente "aprendola" come file per la visualizzazione delle risorse in Visual Studio. Se la DLL è una DLL basata su COM, c'è una piccola possibilità che la libreria dei tipi sia incorporata come risorsa al suo interno. E se hai la libreria dei tipi, puoi # importarla per ricostruire i file di intestazione per le interfacce pubbliche.
Questo è quasi il massimo.
Non sono d'accordo sul fatto che questo è quanto di meglio si possa ottenere - tutto dipende da quanto tempo/abilità/impegno hai a disposizione. Vedi la risposta di nneonneo. – JBentley
Un popolare strumento di reverse engineering binario è IDA Pro - c'è una versione gratuita, che soddisfa le esigenze di base. – datenwolf
Avete una certa comprensione di cosa fa la DLL? Quanto è grande? Sai in che lingua è stato scritto originariamente? Cosa stai cercando di ottenere? –
Ho aggiunto alcune "frasi chiave" come tag. Guardali. –