Um amigo meu baixou alguns malwares do Facebook e estou curioso para ver o que ele faz sem me infectar. Eu sei que você não pode realmente descompilar um .exe, mas posso pelo menos vê-lo no Assembly ou anexar um depurador?
Edite para dizer que não é um executável .NET, sem cabeçalho da CLI.
debugging
winapi
assembly
decompiling
Swilliams
fonte
fonte
Respostas:
Com um depurador, você pode percorrer o assembly do programa interativamente.
Com um desmontador , você pode visualizar a montagem do programa em mais detalhes.
Com um descompilador , você pode transformar um programa novamente em código-fonte parcial, supondo que você saiba em que foi escrito (que você pode descobrir com ferramentas gratuitas como o PEiD - se o programa estiver compactado, será necessário descompactá-lo primeiro OU Detecte-o-Fácil se você não encontrar o PEiD em nenhum lugar (o DIE tem uma forte comunidade de desenvolvedores no github atualmente).
Depuradores:
Desmontadores:
Descompiladores:
Algumas ferramentas relacionadas que podem ser úteis para o que você está fazendo são editores de recursos, como o ResourceHacker (gratuito) e um bom editor hexadecimal, como o Hex Workshop (comercial).
Além disso, se você estiver fazendo uma análise de malware (ou usar o SICE) , sugiro sinceramente executar tudo dentro de uma máquina virtual, ou seja, o VMware Workstation . No caso do SICE, ele protegerá seu sistema real dos BSODs e, no caso de malware, protegerá seu sistema real do programa de destino. Você pode ler sobre a análise de malware com o VMware aqui .
Pessoalmente, eu rolo com Olly, WinDbg & W32Dasm e algumas ferramentas utilitárias menores.
Além disso, lembre-se de que desmontar ou até depurar o software de outras pessoas geralmente é contra o EULA no mínimo :)
fonte
O excelente post de psoul responde à sua pergunta, para não replicar o bom trabalho dele, mas acho que ajudaria a explicar por que essa é uma pergunta ao mesmo tempo perfeitamente válida, mas também terrivelmente boba. Afinal, este é um lugar para aprender, certo?
Programas de computador modernos são produzidos por meio de uma série de conversões, começando com a entrada de um corpo de instruções de texto legível por humanos (chamado "código-fonte") e terminando com um corpo de instruções legível por computador (chamado alternativamente de "binário" ou "máquina" código").
A maneira como um computador executa um conjunto de instruções de código de máquina é basicamente muito simples. Cada ação que um processador pode executar (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 rir, e depois segurava cartas com 1 ou 2 esperando que você gritasse ou risse de acordo, eu usaria o que é essencialmente o mesmo sistema que um computador usa para operar.
Um arquivo binário é apenas um conjunto desses códigos (geralmente chamados de "códigos operacionais") e as informações ("argumentos") em que os códigos operacionais atuam.
Agora, a linguagem assembly é uma linguagem de computador em que cada palavra de comando na linguagem representa exatamente um código operacional no processador. Há uma tradução direta 1: 1 entre um comando da linguagem assembly e um código operacional do processador. É por isso que o conjunto de codificação para um processador x386 é diferente do conjunto de codificação para um processador ARM.
A desmontagem é simplesmente esta: um programa lê o binário (o código da máquina), substituindo os códigos op por seus comandos equivalentes na linguagem assembly, e gera o resultado como um arquivo de texto. É importante entender isso; se o seu computador pode ler o binário, você também pode ler o binário, manualmente, com uma tabela de código operacional na mão (ick) ou através de um desmontador.
Os desmontadores têm alguns truques novos e tudo mais, mas é importante entender que um desmontador é, em última análise, um mecanismo de busca e substituição. É por isso que qualquer EULA que o proíba está soprando ar quente. Você não pode imediatamente permitir que o computador leia os dados do programa e também proibi-lo de ler os dados do programa.
(Não me interpretem mal, houve tentativas de fazê-lo. Eles funcionam tão bem quanto o DRM em arquivos de música.)
No entanto, existem advertências na abordagem de desmontagem. Nomes de variáveis são inexistentes; tal coisa não existe na sua CPU. As chamadas à biblioteca são confusas como o inferno e geralmente exigem a desmontagem de outros binários. E é difícil ler a montagem nas melhores condições.
A maioria dos programadores profissionais não consegue sentar e ler a linguagem assembly sem sentir dor de cabeça. Para um amador, isso simplesmente não vai acontecer.
De qualquer forma, esta é uma explicação um pouco obscurecida, mas espero que ajude. Todos podem se sentir livres para corrigir quaisquer distorções da minha parte; faz algum tempo. ;)
fonte
Boas notícias. O IDA Pro agora é gratuito para suas versões mais antigas: http://www.hex-rays.com/idapro/idadownfreeware.htm
fonte
Qualquer depurador decente pode fazer isso. Experimente o OllyDbg . (edit: que possui um ótimo desmontador que até decodifica os parâmetros para chamadas WinAPI!)
fonte
x64dbg
é um depurador bom e de código aberto que é mantido ativamente.fonte
Claro, dê uma olhada no IDA Pro . Eles oferecem uma versão de avaliação para que você possa experimentá-lo.
fonte
Se você está apenas tentando descobrir o que um malware faz, pode ser muito mais fácil executá-lo sob algo como a ferramenta gratuita Process Monitor que será reportada sempre que tentar acessar o sistema de arquivos, o registro, as portas, etc.
Além disso, o uso de uma máquina virtual como o servidor VMWare gratuito é muito útil para esse tipo de trabalho. Você pode criar uma imagem "limpa" e depois voltar sempre que executar o malware.
fonte
Você pode obter algumas informações visualizando-as em montagem, mas acho que a coisa mais fácil é iniciar uma máquina virtual e ver o que ela faz. Certifique-se de que você não possui compartilhamentos abertos ou algo do tipo que possa atravessar;)
fonte
Também vale a pena conferir o Boomerang .
fonte
O que você deseja é um tipo de software chamado "Desmontador".
Google rápido produz isso: Link
fonte
Ainda não acredito que ninguém tenha dito nada sobre o Immunity Debugger .
O Immunity Debugger é uma ferramenta poderosa para gravar explorações, analisar malware e fazer engenharia reversa de arquivos binários. Inicialmente, foi baseado no código-fonte do Ollydbg 1.0, mas com o bug da pesquisa de nomes corrigido. Possui uma API Python bem suportada para fácil extensibilidade, para que você possa escrever seus scripts python para ajudá-lo na análise.
Além disso, há um bom que Peter, da equipe Corelan, escreveu chamado mona.py , excelente ferramenta btw.
fonte
Se você deseja executar o programa para ver o que ele faz sem infectar o computador, use com uma máquina virtual como VMWare ou Microsoft VPC ou um programa que possa proteger o programa como o SandboxIE
fonte
Se você não tiver tempo, envie o malware para cwsandbox:
http://www.cwsandbox.org/
http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/
HTH
fonte
Você pode usar o dotPeek, muito bom para descompilar o arquivo exe. É de graça.
https://www.jetbrains.com/decompiler/
fonte
Eu diria que em 2019 vale a pena conferir Ghidra ( https://ghidra-sre.org/ ). É de código aberto (e gratuito) e possui recursos fenomenais de análise de código, incluindo a capacidade de descompilar todo o caminho de volta ao código C razoavelmente legível.
fonte
A suíte explorer pode fazer o que você quiser.
fonte