Dogbolt Decompiler Explorer
(dogbolt.org)- O Dogbolt é um Decompiler Explorer que permite enviar um binário e comparar em um só lugar os resultados de vários descompiladores
- O arquivo enviado é limitado a menos de 2 MB, e há um aviso informando que os binários enviados são armazenados
- Também há amostras para que seja possível ver como funciona sem precisar enviar um arquivo diretamente
- As ferramentas integradas incluem angr, BinaryNinja, Boomerang, dewolf, Ghidra, Hex-Rays, RetDec e Snowman
- Cada nome de ferramenta leva ao site ou repositório, permitindo consultar as informações da ferramenta enquanto compara os resultados
Condições para upload de binários
- O Dogbolt oferece um fluxo em que o usuário envia um arquivo binário para verificar os resultados da descompilação
- O tamanho do arquivo deve ser inferior a 2 MB
- Também é exibido um aviso de que os binários enviados são armazenados, junto com um link para o FAQ
É possível verificar primeiro com amostras
- Há uma lista de amostras que pode ser consultada sem enviar diretamente um arquivo
- As amostras foram organizadas para permitir observar lado a lado os resultados de vários descompiladores
1 comentários
Opiniões no Hacker News
Quero dizer obrigado a quem publicou por ter esperado até esta semana. Provavelmente é efeito de ter sido abordado recentemente no C++ Weekly, e é um bom material: https://www.youtube.com/watch?v=h3F0Fw0R7ME
Até a semana passada, havia problemas sérios de desempenho, mas agora a fila (https://dogbolt.org/queue) parece estar em geral ok. Tirando alguns gargalos longos em que certos decompiladores ficam acumulados, está rodando bem liso, e Josh e Glenn vêm fazendo ótimas melhorias: https://github.com/decompiler-explorer/decompiler-explorer/c...
Post relacionado: Decompiler Explorer - https://news.ycombinator.com/item?id=32079227 - julho de 2022, 82 comentários
Durante minha pesquisa de doutorado, especialmente quando trabalhava com deep learning para código ofuscado, eu realmente teria precisado disso
No começo dos experimentos, o Ghidra não se dava bem com multiprocessamento e havia muitos dados para processar, então migrei para o angr. Talvez fosse possível fazer com Ghidra também, mas era muito mais fácil fazer a mesma coisa com angr. Também gosto do nome. Só queria apontar que Compiler Explorer é o nome do projeto e Godbolt é o sobrenome do autor, mas, se já chegamos ao ponto de usar Godbolt como verbo, esse navio já zarpou
Seria bom ter uma ferramenta parecida para explorar lifting de binários para várias representações intermediárias (IR). Por exemplo, Ghidra p-code e sleigh, LLVM Machine IR, Qemu TCG etc.
O BNIL, o conjunto de várias camadas de linguagens intermediárias no qual o Binary Ninja se baseia, também pode ser interessante. Dá para ver a forma exposta na UI ou na demo do cloud.binary.ninja
Já que o assunto são decompiladores, fico curioso se escolher o Binary Ninja seria uma opção segura. Ouvi dizer que o IDA é o padrão, mas também é caro para quem quer fazer engenharia reversa como hobby
Pessoalmente, acho que a maior vantagem do Binja é sua linguagem intermediária (IL). A IL de alto nível funciona como decompilador, mas também há ILs de baixo e médio nível como etapas entre assembly e código-fonte. Se o resultado do decompilador fica meio estranho, olhar a IL ajuda a entender melhor o que está acontecendo; e a própria IL é muito mais legível que assembly puro, então você acaba usando bastante. Em outras plataformas, quase não há recursos equivalentes de verdade. Ghidra e IDA também têm uma IL cada, mas elas são mais voltadas para leitura por máquina do que para leitura humana, em comparação com a IL legível do Binja
O que falta é scripting em Python, o que faz uma diferença bem grande. Ainda assim, como ferramenta gratuita, é difícil reclamar. IDA e Ghidra têm pontos fortes e fracos e plugins da comunidade diferentes, então provavelmente é melhor usar ambos
Muito bom. Recentemente, trabalhando em um projeto de emulador, estou implementando meu próprio disassembler, e fico pensando o tempo todo em como transformar padrões de código de máquina em uma forma generalizada e depois convertê-los para pseudocódigo parecido com C
Por isso, ultimamente tenho muita vontade de criar meu próprio decompilador de brinquedo
[1] https://docs.binary.ninja/dev/bnil-overview.html
[2] https://riverloopsecurity.com/blog/2019/05/pcode/ exemplo
Existe algum tutorial de decompiladores bom e detalhado para não especialistas?
Dá para pegar a saída do dogbolt e colocar no godbolt
Vendo isso, acho que eles quase nem precisaram convencer outras empresas. Devem ter percebido que binários pequenos e comparações com concorrentes levam a mais negócios
Parece uma pequena solução perfeita para classificar problemas entre serviços e comparar soluções
O custo não é exatamente baixo. Rodar decompiladores consome bastante recurso computacional, e é difícil dizer que alguns deles sejam eficientes
Queria ter visto quando foi postado no ano passado. É realmente incrível e muito prático