Un amigo mío descargó un poco de malware de Facebook, y tengo curiosidad por ver qué hace sin infectarme. Sé que realmente no se puede descompilar un archivo .exe, pero ¿puedo al menos verlo en Assembly o adjuntar un depurador?
Edite para decir que no es un ejecutable .NET, no tiene encabezado CLI.
debugging
winapi
assembly
decompiling
swilliams
fuente
fuente
Respuestas:
Con un depurador puede recorrer el ensamblaje del programa de forma interactiva.
Con un desensamblador , puede ver el ensamblaje del programa con más detalle.
Con un descompilador , puede volver a convertir un programa en código fuente parcial, suponiendo que sepa en qué estaba escrito (que puede encontrar con herramientas gratuitas como PEiD ; si el programa está empaquetado, primero deberá descomprimirlo) O Detect-it-Easy si no puede encontrar PEiD en ningún lado. DIE tiene una sólida comunidad de desarrolladores en github actualmente).
Depuradores:
Desmontadores:
Descompiladores:
Algunas herramientas relacionadas que pueden ser útiles en lo que sea que esté haciendo son editores de recursos como ResourceHacker (gratis) y un buen editor hexadecimal como Hex Workshop (comercial).
Además, si está haciendo análisis de malware (o usa SICE) , le sugiero que ejecute todo dentro de una máquina virtual, es decir, VMware Workstation . En el caso de SICE, protegerá su sistema real de los BSOD, y en el caso de malware, protegerá su sistema real del programa de destino. Puede leer sobre el análisis de malware con VMware aquí .
Personalmente, utilizo Olly, WinDbg y W32Dasm, y algunas herramientas de utilidad más pequeñas.
Además, recuerde que desmontar o incluso depurar el software de otras personas suele ser contra el EULA en lo más mínimo :)
fuente
La excelente publicación de psoul responde a su pregunta, por lo que no replicaré su buen trabajo, pero creo que ayudaría a explicar por qué esta es una pregunta perfectamente válida pero también terriblemente tonta. Después de todo, este es un lugar para aprender, ¿verdad?
Los programas de computadora modernos se producen a través de una serie de conversiones, comenzando con la entrada de un cuerpo de instrucciones de texto legibles por humanos (llamado "código fuente") y terminando con un cuerpo de instrucciones legibles por computadora (llamado alternativamente "binario" o "máquina" código").
La forma en que una computadora ejecuta un conjunto de instrucciones de código de máquina es, en última instancia, muy simple. Cada acción que puede realizar un procesador (por ejemplo, leer de la memoria, agregar dos valores) se representa mediante un código numérico. Si te dijera que el número 1 significaba gritar y el número 2 significaba risita, y luego sostenía las tarjetas con 1 o 2 esperando que gritaras o rieras en consecuencia, estaría usando lo que es esencialmente el mismo sistema que usa una computadora para operar.
Un archivo binario es solo un conjunto de esos códigos (generalmente llamados "códigos operativos") y la información ("argumentos") sobre los que actúan los códigos operativos.
Ahora, el lenguaje ensamblador es un lenguaje de computadora donde cada palabra de comando en el idioma representa exactamente un código de operación en el procesador. Hay una traducción directa 1: 1 entre un comando de lenguaje ensamblador y un código de operación del procesador. Esta es la razón por la cual el ensamblaje de codificación para un procesador x386 es diferente del ensamblaje de codificación para un procesador ARM.
El desmontaje es simplemente esto: un programa lee el binario (el código de máquina), reemplaza los códigos de operación con sus comandos de lenguaje ensamblador equivalentes y genera el resultado como un archivo de texto. Es importante entender esto; si su computadora puede leer el binario, entonces también puede leer el binario, ya sea manualmente con una tabla de códigos de operación en su mano (ick) o mediante un desensamblador.
Los desensambladores tienen algunos trucos nuevos y todo, pero es importante entender que un desensamblador es en última instancia un mecanismo de búsqueda y reemplazo. Es por eso que cualquier EULA que lo prohíba finalmente está soplando aire caliente. No puede permitir de inmediato que la computadora lea los datos del programa y también prohibir que la computadora lea los datos del programa.
(No me malinterpreten, ha habido intentos de hacerlo. Funcionan tan bien como DRM en los archivos de canciones).
Sin embargo, hay advertencias sobre el enfoque de desmontaje. Los nombres de las variables son inexistentes; tal cosa no existe en su CPU. Las llamadas a la biblioteca son confusas como el infierno y a menudo requieren desmontar más binarios. Y el montaje es difícil de leer en las mejores condiciones.
La mayoría de los programadores profesionales no pueden sentarse y leer lenguaje ensamblador sin tener dolor de cabeza. Para un aficionado simplemente no va a suceder.
De todos modos, esta es una explicación algo pasada por alto, pero espero que ayude. Todos pueden sentirse libres de corregir cualquier error de mi parte; ha sido un tiempo. ;)
fuente
Buenas noticias. IDA Pro es realmente gratuito para sus versiones anteriores ahora: http://www.hex-rays.com/idapro/idadownfreeware.htm
fuente
Cualquier depurador decente puede hacer esto. Prueba OllyDbg . (editar: ¡que tiene un gran desensamblador que incluso decodifica los parámetros para las llamadas de WinAPI!)
fuente
x64dbg
es un depurador bueno y de código abierto que se mantiene activamente.fuente
Claro, eche un vistazo a IDA Pro . Ofrecen una versión de evaluación para que pueda probarla.
fuente
Si solo está tratando de descubrir qué hace un malware, podría ser mucho más fácil ejecutarlo bajo algo como la herramienta gratuita Process Monitor, que informará cada vez que intente acceder al sistema de archivos, registro, puertos, etc.
Además, usar una máquina virtual como el servidor VMWare gratuito es muy útil para este tipo de trabajo. Puede crear una imagen "limpia" y luego volver a eso cada vez que ejecute el malware.
fuente
Puede obtener información visualizándola en conjunto, pero creo que lo más fácil es encender una máquina virtual y ver qué hace. Sin embargo, asegúrese de no tener acciones abiertas ni nada por el estilo que pueda pasar;)
fuente
Boomerang también puede valer la pena echarle un vistazo.
fuente
Lo que quiere es un tipo de software llamado "Desensamblador".
Google rápido produce esto: Enlace
fuente
No puedo creer que nadie haya dicho nada sobre Immunity Debugger , todavía.
Immunity Debugger es una poderosa herramienta para escribir exploits, analizar malware y realizar ingeniería inversa de archivos binarios. Inicialmente se basó en el código fuente Ollydbg 1.0, pero con el error de resolución de nombres corregido. Tiene una API Python bien compatible para una fácil extensibilidad, por lo que puede escribir sus scripts de Python para ayudarlo en el análisis.
Además, hay uno bueno que Peter del equipo de Corelan escribió llamado mona.py , excelente herramienta por cierto.
fuente
Si desea ejecutar el programa para ver qué hace sin infectar su computadora, úselo con una máquina virtual como VMWare o Microsoft VPC, o un programa que pueda proteger el programa como SandboxIE
fuente
Si no tiene tiempo, envíe el malware a cwsandbox:
http://www.cwsandbox.org/
http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/
HTH
fuente
Puede usar dotPeek, muy bueno para descompilar el archivo exe. Es gratis.
https://www.jetbrains.com/decompiler/
fuente
Yo diría que en 2019, vale la pena echarle un vistazo a Ghidra ( https://ghidra-sre.org/ ). Es de código abierto (y gratuito), y tiene capacidades de análisis de código fenomenales, incluida la capacidad de descompilar todo el código C bastante legible.
fuente
La suite del explorador puede hacer lo que quieras.
fuente