Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to reverse a DLL into C++ code?

I know it's impossible to reverse a dll into a c++ code so I would like to collect as much as possible details from it. It's not my dll, so I don't have the source code of course. Which program should I use?

like image 243
Imri Persiado Avatar asked Mar 01 '13 01:03

Imri Persiado


2 Answers

Well, if you are skilled you can disassemble the DLL and understand all of its functions. This takes a substantial amount of time, but if you do that you can reverse it back to source by hand.

Otherwise, you can start by using a tool like Dependency Walker to get the DLLs and functions it depends on, and the functions it exports. From there you can find functions that interest you, and use a disassembler like IDA to see what they do.

like image 73
nneonneo Avatar answered Oct 29 '22 18:10

nneonneo


You can see the list of exported functions by using the dumpbin tool. If C++ functions are exported, you might be able to infer parameters by the name mangling.

You can extract all the resources from the DLL by just "opening" it as a file for resource viewing in Visual Studio. If the DLL is a COM based DLL, there's a small chance the Type Library is embedded as a resource inside it. And if you have the Type Library, you can #import it to reconstruct the header files for the public interfaces.

That's about as good as it gets.

like image 37
selbie Avatar answered Oct 29 '22 19:10

selbie