有没有可能“反编译”Windows的.exe? 或者至less查看大会?

我的一个朋友从Facebook上下载了一些恶意软件,我很好奇,看看它是怎么做的,而不会感染我自己。 我知道你不能真正反编译一个.exe,但我可以至less在Assembly中查看它或附加一个debugging器?

编辑说这不是一个.NET可执行文件,没有CLI头。

使用debugging器,您可以交互式地浏览程序集。
有了反汇编程序 ,您可以更详细地查看程序集。
使用反编译器 ,您可以将程序恢复为部分源代码,假设您知道它写的是什么(您可以使用免费工具(如PEiD)find它 – 如果程序已打包,则必须先解压)。

debugging器:

  • OllyDbg ,免费的,一个很好的debugging器,你可以find许多用户制作的插件和脚本,使其更有用。
  • WinDbg ,免费的,微软的一个非常强大的debugging器。 WinDbg对于查看Windows内部特别有用,因为它比其他debugging器更了解数据结构。
  • SoftICE ,SICE给朋友。 商业和开发在2006年停止。SoftICE是一种在操作系统下运行的核心工具(当被调用时暂停整个系统)。 SoftICE仍然被许多专业人士使用,虽然可能很难获得,并可能无法在某些硬件(或软件,即它不能在Vista或NVIDIA gfx卡上工作)。

反汇编:

  • IDA Pro (商业版) – 反汇编程序/debugging器的顶部。 大多数专业人士使用,如恶意软件分析师等,但成本相当多的钱(虽然有免费版本 ,但它是相当有限的)
  • W32Dasm (免费) – 有点过时,但完成工作。 我相信W32Dasm现在已经放弃了,而且还有许多用户创build的黑客来添加一些非常有用的function。 你将不得不四处寻找最好的版本。

反编译:

  • Visual Basic: VB反编译器 ,商业,产生一些可识别的字节码。
  • Delphi: DeDe ,免费,生成高质量的源代码。
  • C: HexRays ,商业,由同一家公司的IDA Pro的插件。 产生很好的结果,但花费巨大的压力,不会卖给任何人(或者我听到)。
  • .NET(C#): dotPeek ,免费,将.NET 1.0-4.5程序集反编译为C#。 支持.dll,.exe,.zip,.vsix,.nupkg和.winmd文件。

一些相关的工具可能会来得方便,无论你在做什么资源编辑器,如ResourceHacker (免费)和一个很好的hex编辑器,如Hex Workshop (商业)。

另外,如果你正在做恶意软件分析(或者使用SICE) ,我会全心全意地build议在虚拟机中运行一切,比如VMware Workstation 。 在SICE的情况下,它将保护您的实际系统免受蓝屏死机,并在恶意软件的情况下,它将保护您的实际系统从目标程序。 您可以在这里阅读有关VMware的恶意软件分析。

就我个人而言,我与Olly,WinDbg&W32Dasm以及一些小型实用工具一起推出。

另外,请记住,反汇编甚至debugging其他人的软件通常是针对最低限度的EULA 🙂

psoul对你的问题的出色的回答,所以我不会复制他的好作品,但我觉得这有助于解释为什么这是一个完全有效的,但也是非常愚蠢的问题。 毕竟,这是一个学习的地方,对吧?

现代计算机程序是通过一系列转换而产生的,首先input人类可读的文本指令(称为“源代码”)并以计算机可读指令体(以“二进制”或“机器”码”)。

计算机运行一组机器代码指令的方式最终非常简单。 处理器可以采取的每个动作(例如,从存储器读取,添加两个值)由数字代码表示。 如果我告诉你,数字1意味着尖叫,数字2意味着傻笑,然后拿着1或2的卡片,期待你相应地尖叫或咯咯地笑,我会使用计算机使用的基本相同的系统进行操作。

二进制文件只是一组这些代码(通常称为“操作码”)和操作码所代表的信息(“参数”)。

现在,汇编语言是一种计算机语言,其中语言中的每个命令字恰好代表处理器上的一个操作码。 在汇编语言命令和处理器操作码之间有直接的1:1转换。 这就是为什么x386处理器的编码组件与ARM处理器的编码组件不同。

反汇编就是这样的:一个程序读取二进制文件(机器代码),用等价的汇编语言命令replace操作码,并将结果作为文本文件输出。 理解这一点很重要。 如果您的计算机可以读取二进制文件,那么您也可以通过手动操作(ick)或通过反汇编程序手动读取二进制文件。

反汇编有一些新的技巧和一切,但重要的是要明白,反汇编最终是一个search和replace机制。 这就是为什么禁止它的EULA最终会吹热空气的原因。 您不能一次性允许电脑读取程序数据,也不能让电脑读取程序数据。

(不要误解我的意思,我们曾试图这样做,他们在歌曲文件上也可以使用DRM。)

但是,反汇编方法有一些警告。 variables名称不存在; 你的CPU不存在这样的事情。 图书馆电话是混乱的地狱,往往需要拆散更多的二进制文件。 在最好的条件下,组装是很难的。

大多数专业程序员不能坐下来阅读汇编语言而不会感到头疼。 对于一个业余爱好者来说,这只是不会发生的。

无论如何,这是一个有点光彩的解释,但我希望它有帮助。 每个人都可以随时纠正我的错误陈述。 有一阵子了。 ;)

任何体面的debugging器都可以做到。 尝试OllyDbg 。 (编辑:它有一个伟大的反汇编,甚至解码参数WinAPI调用!)

好消息。 IDA Pro现在是免费的旧版本: http : //www.hex-rays.com/idapro/idadownfreeware.htm

当然,看看IDA Pro 。 他们提供了一个评估版,所以你可以试试看。

如果你只是想弄清楚一个恶意软件是干什么的,那么在免费工具进程监视器(Process Monitor)下运行它可能会容易得多,它会在每次尝试访问文件系统,registry,端口等时报告它们。

另外,使用像免费VMWare服务器这样的虚拟机对于这类工作非常有帮助。 您可以创build一个“干净的”图像,然后在每次运行恶意软件时都回头看看。

你想要的是一种称为“反汇编程序”的软件。

快速谷歌产生这个: http : //www.geocities.com/~sangcho/disasm.html

x64dbg是一个很好的开源debugging器,它被主动维护。

您可能会在汇编中看到一些信息,但我认为最简单的方法就是启动虚拟机并查看它的function。 确保你没有任何开放的股票或类似的东西可以跳过;)

回旋镖也可能值得一试。

如果您想要运行该程序以查看它在不感染计算机的情况下执行该操作,请使用虚拟机(如VMWare或Microsoft VPC),或者使用能够像SandboxIE一样的沙盒程序

如果您没有时间,请将恶意软件提交给cwsandbox:

http://www.cwsandbox.org/

http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/

HTH

但是我不敢相信没有人对Immunity Debugger一无所知。

免疫debugging器是编写漏洞利用,分析恶意软件和反向工程二进制文件的强大工具。 它最初是基于Ollydbg 1.0源代码,但名称resoution错误修复。 它有一个很好的Python API支持,以便于扩展,所以你可以编写你的Python脚本来帮助你分析。

另外,还有一个很好的来自Corelan团队的Peter写道, mona.py , excel工具btw。

资源pipe理器可以做你想做的事情。