Pergunta

Eu tenho um pequeno utilitário que foi originalmente escrito em VS2005.

Eu preciso fazer uma pequena mudança, mas o código fonte para uma das DLLs foi perdido em algum lugar.

Existe uma ferramenta gratuita ou a preços razoáveis ??fazer engenharia reversa parte de trás dll de código C ++.

Foi útil?

Solução

Hex-Rays decompiler é uma ótima ferramenta, mas o código vai ser bastante difícil para ler e você vai ter que gastar um monte de tempo para fazer engenharia reversa toda a DLL.

Outras dicas

Você também pode querer ter um olhar para OllyDbg que é um nível assembler análise depurador de 32 bits. Ele é usado para analisar o código binário em cenários onde você não tem um código fonte. É depurador peso leve. OllyDbg é um shareware que você pode baixar e usá-lo gratuitamente .. !!

Visite OllyDbg é home page aqui

PS: Para trás nos biscoitos dia usado SoftICE de NuMega para depuração em um arquivo executável & grab um instantâneo para os valores de registros. SoftICE foi um depurador avançado. Foi definitivamente a ferramenta favorita para os crackers. Eu não sei sobre o status atual do produto. site da NuMega não tinha informações sobre ele. I pode ter esquecido, mas eu não poderia encontrá-lo. Eu recomendo que você começar suas mãos em uma versão legado (4,0x) de SoftICE e aplicar o patch WindowsXP para SoftICE. Trabalhando com SoftICE é algo de uma "experiência".

Além disso Read: Invertendo: Segredos de Engenharia Reversa por Eldad Eilam

Eu não sei a situação exata que você tem, e quanto a funcionalidade dos implementos DLL para a sua aplicação. Mas eu diria que na maioria dos casos, seria melhor escrever a DLL faltando com base na funcionalidade conhecida.

Isto é especialmente verdadeiro se você tem alguma documentação para ele.

Tentando fazer engenharia reversa do código binário a montadora, depois para C ++ e, em seguida, tentar modificá-lo para fornecer a funcionalidade existente será na maioria dos casos a demorada, e talvez até mesmo impossível.

Se a sua pequena mudança é editar algum texto ou para ignorar algumas rotinas, você pode usar um editor hexadecimal ou um disassembler, mas você não será capaz de ver o código original C ++, e até mesmo se você encontrar uma ferramenta que vira as costas DLL em código, todos os nomes de variáveis ??seria ido e seria uma grande confusão.

Um pouco dependendo da sua situação eu iria manter o legado / DLL binário como-é e escrever um wrapper DLL que vai mudar e / ou adicionar qualquer comportamento adicional.

A idéia é agregar a funcionalidade antiga em uma nova DLL que as importações da antiga.

Você tem que fazê-lo como jogo e aplicativos biscoitos fazer: Use um disassembler e cortar o código Assembler

.

Você não pode virar carne de volta a um animal e mesmo se você você poderia teria um animal morto: P

Se fosse feito em .NET, então porque não usar o dotNet refletor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top