是否可以“反编译”;Windows .exe?或者至少看看大会?

我的一个朋友从Facebook上下载了一些恶意软件,我很好奇它在不感染我自己的情况下是怎么做的。我知道你不能真正地反编译。exe,但是我至少可以在程序集中查看它或附加调试器吗?

编辑说它不是. net可执行文件,没有CLI头文件。

806572 次浏览

在汇编中查看它可能会得到一些信息,但我认为最简单的方法是启动虚拟机,看看它做了什么。确保你没有未公开的股份或类似的东西,它可以跳过;)

当然,看看rda支持。他们提供了一个评估版本,所以你可以尝试一下。

任何优秀的调试器都可以做到这一点。OllyDbg试试。(编辑:它有一个很棒的反汇编程序,甚至可以解码参数到WinAPI调用!)

你需要的是一种叫做“反汇编程序”的软件。

快速谷歌产生这个:链接

如果你只是想弄清楚恶意软件在做什么,在像过程监控这样的免费工具下运行它可能会更容易,它会在它试图访问文件系统、注册表、端口等时报告…

另外,使用像免费的VMWare服务器这样的虚拟机对这种工作非常有帮助。您可以创建一个“干净”映像,然后每次运行恶意软件时都返回到该映像。

使用调试器,您可以交互式地逐级遍历程序集。
使用反汇编程序,你可以更详细地查看程序集。
使用反编译器,你可以将程序转换回部分源代码,假设你知道它是用什么写的(你可以用免费工具,如PEiD找到它-如果程序是打包的,你必须先解包它或Detect-it-Easy,如果你在任何地方都找不到PEiD。DIE目前在github上有一个强大的开发人员社区)

调试器:

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

反汇编器:

  • rda支持(商业)-顶级的反汇编器/调试器。大多数专业人士都使用,比如恶意软件分析师等。虽然花费相当多的钱(有< >强免费版< / >强,但它是相当相当有限的)
  • W32Dasm(free) -有点过时,但可以完成工作。我相信W32Dasm现在已经被抛弃了,有许多用户创建的hack可以添加一些非常有用的功能。你得四处看看才能找到最好的版本。

反编译器:

  • Visual Basic: VB编译器,商用,产生某种可识别的字节码。
  • Delphi: 黛德,免费,产生良好质量的源代码。
  • C: HexRays,商业,同一公司为IDA Pro开发的插件。产生了很好的结果,但成本很高,不会卖给任何人(至少我是这么听说的)。
  • . net (c#): dotPeek,免费,反编译。net 1.0-4.5程序集到c#。支持.dll, .exe, .zip, .vsix, .nupkg和.winmd文件。

一些相关的工具可能会在你做的任何事情中派上用场,比如资源编辑器ResourceHacker(免费)和一个好的十六进制编辑器,比如十六进制车间(商业)。

此外,如果您正在进行恶意软件分析(或使用SICE),我全心全意地建议在虚拟机中运行一切,即VMware工作站。在SICE的情况下,它将保护您的实际系统免受bsod的侵害,而在恶意软件的情况下,它将保护您的实际系统免受目标程序的侵害。您可以使用VMware 在这里阅读恶意软件分析。

就我个人而言,我支持Olly, WinDbg &W32Dasm,以及一些较小的实用工具。

另外,请记住,拆卸或甚至调试别人的软件通常至少是违反EULA的:)

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

如果你想在不感染你的计算机的情况下运行这个程序来看看它做了什么,可以使用像VMWare或Microsoft VPC这样的虚拟机,或者像信息记录这样可以沙盒化这个程序的程序

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

现代计算机程序是通过一系列转换产生的,从人类可读的文本指令体(称为“源代码”)的输入开始,到计算机可读的指令体(也称为“二进制”或“机器代码”)结束。

计算机运行一组机器码指令的方式归根结底是非常简单的。处理器可以采取的每个操作(例如,从内存中读取,添加两个值)都由一个数字代码表示。如果我告诉你数字1代表尖叫,数字2代表傻笑,然后举着写着1或2的卡片,期待你尖叫或傻笑,我所使用的系统本质上与计算机使用的系统相同。

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

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

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

反汇编程序有一些新的技巧,但重要的是要理解反汇编程序最终是一个搜索和替换机制。这就是为什么任何禁止它的EULA最终都是在夸夸其谈。你不能既允许计算机读取程序数据,又禁止计算机读取程序数据。

(不要误解我的意思,已经有人试图这么做了。它们和DRM一样适用于歌曲文件。)

但是,对于拆卸方法有一些注意事项。变量名不存在;这样的东西对你的CPU不存在。库调用非常混乱,通常需要进一步分解二进制文件。即使在最好的条件下,组装也很难阅读。

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

不管怎样,这是一种有些粉饰的解释,但我希望它能有所帮助。任何人都可以随意纠正我的错误陈述;已经有一段时间了。;)

回飞棒也值得一试。

资源管理器套件可以做你想做的事情。

我不敢相信没有人说免疫调试器,到目前为止。

免疫调试器是一个强大的工具,编写漏洞,分析恶意软件,并反向工程二进制文件。它最初是基于Ollydbg 1.0源代码,但与名称资源的bug修复。它有一个很好的支持Python API易于扩展,所以你可以写你的python脚本来帮助你进行分析。

另外,Corelan团队的Peter写了一个很好的mona.py,顺便说一句,这是一个很好的工具。

x64dbg是一个良好的开源调试器,它是主动维护的。

你可以使用dotPeek,非常适合反编译exe文件。它是免费的。

https://www.jetbrains.com/decompiler/

我想说在2019年(甚至在2022年),Ghidra (https://ghidra-sre.org/)值得一试。它是开源的(免费的),具有惊人的代码分析能力,包括反编译到相当可读的C代码的能力。