Ответ зависит от того, на каком языке была написана DLL.
Если это был язык .NET, то, как указано, вы можете использовать .NET Reflector.
Если это более старая Visual Basic (до .NET), то DLL компилируется как так называемый p-код, и есть несколько вариантов внесения некоторых изменений в декомпиляцию.
Наконец, если он написан на таком языке, как C ++, нет прямого способа получить исходный код. Такая DLL компилируется в машинный язык и может быть непосредственно декомпилирована только на язык ассемблера.
Итак, опять же, это зависит от используемого языка. И ответ может быть таким, что просто невозможно получить что-то похожее на исходный код.