SQL Server – Como exportar o assembly de um CLR como DLL e fazer engenharia reversa para código-fonte C#

Visualizações: 358
Tempo de Leitura: 4 minutos

Olá pessoal,
Tudo bem com vocês ?

Neste post vou demonstrar como exportar o assembly de um CLR no SQL Server como DLL e fazer engenharia reversa para código-fonte C#. A primeira vez que precisei utilizar esse recurso foi quando existia um assembly já criado e compilado no banco e precisei alterar o código-fonte de uma procedure, mas a versão que estava no banco não parecia ser a mesma que estava no TFS (Team Foundation Server).

Como exportar o assembly de um CLR do banco para DLL

O primeiro passo para realizar essa atividade, é exportar o Assembly do banco de dados para DLL. Para isso, você precisará identificar o nome do assembly e executar um dos scripts abaixo.

Identificando o nome do assembly

Exportando o assembly para DLL com OLE Automation

Uma forma de exportar o Assembly para DLL é utilizando OLE Automation. Para isso, utilize o código abaixo:

Exportando o assembly para DLL com CLR

Uma outra forma de exportar o Assembly para DLL é utilizando o próprio CLR.

Exemplo de uso:

Resultado:

Como fazer engenharia reversa da DLL para código-fonte

Uma vez que você conseguiu exportar o assembly da sua biblioteca CLR para um arquivo DLL, você poderá fazer a engenharia reserva do código fonte. Para fazer isso, existem diversas ferramentas, mas sugiro a ferramenta JetBrains dotPeek.

Uma vez instalada, você poderá abrir a ferramenta dotPeek, clicar no menu e selecionar a opção “Open…”

Agora que a sua CLR vai aparecer na lista, basta clicar no botão destacado na imagem abaixo, ou clicar com o botão direito sobre a biblioteca e selecionar a opção “Export to Project” ou acessar o menu File > “Export to Project”.

Selecione onde você deseja salvar o código-fonte e pode deixar as opções padrão marcadas.

Pronto. O dotPeek fez a engenharia reversa da sua DLL e gerou novamente o código-fonte original, conforme exemplo abaixo:

Vale ressaltar que algumas formatações, espaçamentos e comentários não são recuperados através da engenharia reserva, uma vez que isso é perdido quando o código é compilado. Além disso, essa técnica só se aplica a DLL’s que não sofreram o processo de ofuscação (criptografia do código-fonte).

É isso aí, pessoal.
Espero que tenham gostado deste post.

Abraço!

SQL Server database como export save exportar o assembly de um CLR como DLL e fazer engenharia reversa para source code código-fonte C# csharp disassembly reverse engineering JetBrains dotPeek

SQL Server database como export save exportar o assembly de um CLR como DLL e fazer engenharia reversa para source code código-fonte C# csharp disassembly reverse engineering JetBrains dotPeek