engenharia reversa DLL C ++
-
05-07-2019 - |
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 ++.
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.