É possível "descompilar" uma janela.exe? Ou pelo menos ver a Assembleia?

Um amigo meu descarregou um malware do Facebook, e estou curioso para ver o que faz sem me infectar. Sei que não se pode descompilar an .exe, mas posso ao menos vê-lo na montagem ou anexar um depurador?

Editar para dizer que não é um executável.net, sem cabeçalho CLI.

Author: swilliams, 2008-11-07

15 answers

Com um depuradorpode passar pela Montagem do programa interactivamente.
Com um desmontador , você pode ver a montagem do programa com mais detalhes.
Com um decompiler, você pode transformar um programa volta parcial do código fonte, assumindo que você conheça o que foi escrito (o que você pode descobrir com ferramentas gratuitas como PEiD - se o programa estiver lotado, você terá que descompactá-lo primeiro, OU Detectar-é-Fácil se você não pode encontrar PEiD em qualquer lugar. O DIE tem uma forte comunidade de desenvolvedores no github atualmente).

Depuradores:

  • OllyDbg , livre, um bom depurador de 32 bits, para o qual você pode encontrar vários plugins e scripts feitos pelo Usuário para torná-lo ainda mais útil.
  • WinDbg , free, um depurador bastante capaz pela Microsoft. WinDbg é especialmente útil para olhar para os internals do Windows, uma vez que sabe mais sobre as estruturas de dados do que outros depurador.
  • SoftICE, SICE to friends. O comércio e o desenvolvimento pararam em 2006. SoftICE é uma espécie de Ferramenta hardcore que corre sob o sistema operacional (e pára todo o sistema quando invocado). SoftICE ainda é usado por muitos profissionais, embora possa ser difícil de obter e não pode trabalhar em algum hardware (ou software - ou seja, ele não vai funcionar em cartões Vista ou NVIDIA gfx).

Desmontadores:

  • IDA Pro (comercial) - topo de linha desmontador/depurador. Usado pela maioria dos profissionais, como analistas de malware, etc. Custa alguns dólares embora (existe versão livre, mas é bastante limitado.
  • Um pouco antiquado, mas faz o trabalho. Eu acredito que W32Dasm é abandonware hoje em dia, e existem inúmeros hacks criados pelo Usuário para adicionar alguma funcionalidade muito útil. Você terá que olhar ao redor para encontrar o melhor versao.

Descompiladores:

  • Visual Basic: VB Decompiler, comercial, produz um pouco de bytecode identificável.
  • Delphi: DeDe , livre, produz código fonte de boa qualidade.
  • C: HexRays , comercial, um plugin para a IDA Pro pela mesma empresa. Produz grandes resultados, mas custa um grande dólar, e não será vendido a qualquer um (ou assim eu ouvi).
  • .NET(C#): dotPeek, livre, descompila .NET 1.0-4.5 assembleias para C#. Apoio .dll, .exe .postal, .vsix,.nupkg, and .ficheiros winmd.
[[1]}algumas ferramentas relacionadas que podem ser úteis em qualquer coisa que você está fazendo São editores de recursos como ResourceHacker (livre) e um bom editor hex como Hex Workshop (comercial).

Além disso, se você estiver fazendo análise de malware (ou usar SICE), eu sugiro de todo coração executar tudo dentro de uma máquina virtual, ou seja estação de trabalho de VMware. No caso do SICE, ele irá proteger o seu sistema real de BSODs, e no caso de malware, ele irá proteger o seu sistema real do programa alvo. Você pode ler sobre a análise de malware com VMware aqui.

Pessoalmente, ando com o Olly, o WinDbg & W32Dasm e algumas ferramentas de utilidade mais pequenas. Além disso, lembre-se que desmontar ou mesmo depurar o software de outras pessoas é geralmente contra a EULA no mínimo:)
 372
Author: anon6439, 2018-02-17 17:58:14
O excelente post de Psoul responde à sua pergunta para não replicar o seu bom trabalho, mas acho que ajudaria a explicar porque é uma pergunta perfeitamente válida, mas também terrivelmente tola. Afinal, este é um lugar para aprender, certo? Os programas de computador modernos são produzidos através de uma série de conversões, começando com a entrada de um corpo legível de instruções de texto (chamado "código fonte") e terminando com um corpo legível por computador de instruções (chamado alternativamente "código binário "ou"código Máquina"). A forma como um computador executa um conjunto de instruções de código de máquina é, em última análise, muito simples. Cada ação que um processador pode tomar (por exemplo, ler da memória, adicionar dois valores) é representada por um código numérico. Se eu lhe dissesse que o número 1 significava gritar e o número 2, significava a rir, e, então, levantou cartões com 1 ou 2 no-los esperando você para gritar ou rir assim, eu estaria usando o que é essencialmente o mesmo sistema de um computador usa para operar.

Um ficheiro binário é apenas um conjunto desses códigos (normalmente chamado de "códigos de op") e a informação ("argumentos") em que os códigos de op actuam.

Agora, linguagem assembly é uma linguagem de computador onde cada palavra de comando na linguagem representa EXATAMENTE um código op no processador. Há uma tradução direta 1: 1 entre um comando de linguagem assembly e um op-code de processador. É por isso que o conjunto de codificação para um processador x386 é diferente do conjunto de codificação para um braço processador.

Desmontagem é simplesmente isto: um programa lê através do binário( o código da Máquina), Substituindo os códigos op por seus comandos de linguagem de montagem equivalentes, e retorna o resultado como um arquivo de texto. É importante entender isso; se seu computador pode ler o binário, então você pode ler o binário também, quer manualmente com uma tabela de código op em sua mão (ick) ou através de um desmontador.

Os desmontadores têm alguns truques novos, mas é importante entender. que um desmontador é, em última análise, um mecanismo de busca e substituição. É por isso que qualquer EULA que a proíba está a soprar ar quente. Você não pode permitir que o computador leia os dados do programa e também proibir que o computador leia os dados do programa. Não me interpretes mal, houve tentativas para o fazer. Eles trabalham bem como DRM em arquivos de música.) No entanto, há algumas reservas quanto à abordagem de desmontagem. Nomes variáveis são inexistentes; tal coisa não existe para o seu PROCESSADOR. As chamadas da biblioteca são confusas como o inferno e muitas vezes requerem desmontagem de binários adicionais. E a montagem é difícil de ler nas melhores condições. A maioria dos programadores profissionais não consegue ler a linguagem de montagem sem ter dores de cabeça. Para um amador, não vai acontecer. De qualquer forma, esta é uma explicação um pouco encoberta, mas espero que ajude. Todo mundo pode se sentir livre para corrigir quaisquer erros da minha parte; já faz um tempo. ;)
 38
Author: Jason L, 2008-11-07 21:12:47
Qualquer depurador decente consegue fazer isto. Tente OllyDbg . (edit: que tem um grande desmontador que até descodifica os parâmetros para as chamadas WinAPI!)
 11
Author: utku_karatas, 2008-11-07 18:50:29
Boas notícias. IDA Pro é realmente livre para suas versões mais antigas agora: http://www.hex-rays.com/idapro/idadownfreeware.htm
 11
Author: Matthew, 2008-11-07 20:18:18

x64dbg é um depurador de código aberto e bom que é mantido ativamente.

 8
Author: BullyWiiPlaza, 2017-01-17 13:26:20

Claro, dê uma olhada em IDA Pro . Eles oferecem uma versão eval para que você possa experimentá-lo.

 6
Author: Douglas Mayle, 2008-11-07 18:49:58

Se você está apenas tentando descobrir o que um malware faz, pode ser muito mais fácil executá-lo sob algo como a ferramenta livre Monitor de Processo que irá relatar sempre que tentar acessar o sistema de arquivos, registro, portas, etc...

Também, usar uma máquina virtual como o servidor de VMWare livre é muito útil para este tipo de trabalho. Você pode fazer uma imagem "limpa", e, em seguida, voltar a isso sempre que você executar o malware.

 5
Author: joeld, 2008-11-07 18:59:16
O que você quer é um tipo de software chamado "desmontador".

O google rápido produz isto: http://www.geocities.com / ~sangcho/disasm.html

 5
Author: Corey Trager, 2008-11-07 18:59:28
Você pode obter alguma informação visualizando-a em montagem, mas eu acho que a coisa mais fácil a fazer é ligar uma máquina virtual e ver o que ela faz. Certifique-se de que não tem acções abertas ou algo do género que possa saltar ;)
 4
Author: Rob Prouse, 2008-11-07 18:49:17

Boomerang também pode valer a pena verificar.

 3
Author: Andru Luvisi, 2008-11-08 00:26:46

Se você deseja executar o programa para ver o que ele faz sem infectar o seu computador, use com uma máquina virtual como VMWare ou Microsoft VPC, ou um programa que pode sandbox do programa como SandboxIE

 2
Author: Joel Lucsy, 2008-11-07 21:12:36
 2
Author: plan9assembler, 2008-11-16 04:40:23
Ainda não acredito que ninguém disse nada sobre o Depurador de imunidade.

Depurador de imunidade é uma ferramenta poderosa para escrever façanhas, analisar malware e engenharia reversa arquivos binários. Foi inicialmente baseado no código fonte Ollydbg 1.0, mas com os nomes de erro de re-lançamento fixo. Ele tem uma API Python bem suportada para uma fácil extensibilidade, então você pode escrever seus scripts python para ajudá-lo na análise.

Além disso, há uma boa que o Peter da equipa Corelan escreveu. chamado mona.py , excelente ferramenta btw.
 2
Author: jyz, 2013-07-06 13:41:39

Você pode usar o dotPeek, muito bom para descompilar o arquivo exe. É de graça.

Https://www.jetbrains.com/decompiler/

 1
Author: Do Nhu Vy, 2018-01-23 03:58:29

A suite explorer pode fazer o que quiser.

 0
Author: FloatFish, 2017-07-09 08:45:50