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
- 1. Quale strumento può decompilare una DLL nel codice sorgente C++?
- 2. Chiamare una dll C++ (codice non gestito) da un servizio Windows C# (scritto nel codice gestito)
- 3. Utilizzo di DLL C++ nel progetto C#
- 4. Come aggiungere dll nel progetto C#
- 5. Come documentare una C# dll
- 6. È possibile chiamare una DLL C# da una DLL C?
- 7. usando C# dll nel progetto C++
- 8. estratto 7zip nel codice C#
- 9. Chiamare una funzione DLL delphi dal codice C#
- 10. Come usare una dll C++ in Unity3D?
- 11. Come invertire una lista collegata?
- 12. Come utilizzare una dll C# in IronPython
- 13. Come si può invertire la traversata attraverso una collezione C#?
- 14. C++ iteratore e invertire iteratore
- 15. C#: comctl32.dll versione 6 nel debugger
- 16. C'è un modo per invertire una crypt() in c?
- 17. Come chiamo metodi in una DLL C# dal mio codice C?
- 18. Come chiamare DLL C++ in C#
- 19. Invertire una preoccupazione NSArray?
- 20. Come invertire a bit AND (&) in C?
- 21. Come restituire una stringa nel mio codice C?
- 22. Come invertire System.loadLibrary in Java
- 23. Come invertire le parole in una stringa?
- 24. Invertire una parola in Vim
- 25. Incorporamento del codice python + numpy nella callback della DLL C++
- 26. Come collegare STL nel codice C++?
- 27. Come utilizzare UTF-8 nel codice C?
- 28. Come creare una DLL NIM e lo chiamano da C#
- 29. Importare una DLL con C++ (Win32)
- 30. Scrittura C# GUI su una DLL C++ o exe C++
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. –