ChatGPT解决这个技术问题 Extra ChatGPT

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

我的一个朋友从 Facebook 下载了一些恶意软件,我很想知道它在不感染自己的情况下做了什么。我知道您不能真正反编译 .exe,但我至少可以在 Assembly 中查看它或附加调试器吗?

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

来自 Facebook 的恶意软件??你能解释一下吗
很抱歉回复得太晚了......但我认为它发生的方式是:她运行了一个恶意软件,在某些时候向她在 FB(我)上的所有联系人发送垃圾邮件,其中包含一个指向请求你的“视频”的链接下载“新编解码器”。我假设它在这个意义上表现得像一条蠕虫。

1
13 revs, 5 users 47%

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

调试器:

OllyDbg,免费,一个优秀的 32 位调试器,您可以找到许多用户制作的插件和脚本,使其更加有用。

WinDbg,免费,Microsoft 出品的一款功能强大的调试器。 WinDbg 对于查看 Windows 内部结构特别有用,因为它比其他调试器更了解数据结构。

SoftICE,SICE 给朋友。商业和开发于 2006 年停止。SoftICE 是一种在操作系统下运行的核心工具(并在调用时停止整个系统)。许多专业人士仍在使用 SoftICE,尽管可能很难获得并且可能无法在某些硬件(或软件 - 即它无法在 Vista 或 NVIDIA gfx 卡上运行)上运行。

反汇编程序:

IDA Pro(商业) - 顶级反汇编器/调试器。大多数专业人士都在使用,比如恶意软件分析师等。虽然价格不菲(有免费版本,但非常有限)

W32Dasm(免费) - 有点过时,但可以完成工作。我相信 W32Dasm 这些天是废弃软件,并且有许多用户创建的黑客来添加一些非常有用的功能。您必须四处寻找最佳版本。

反编译器:

Visual Basic: VB Decompiler,商业,产生一些可识别的字节码。

Delphi:DeDe,免费,生成高质量的源代码。

C:HexRays,商业版,同一家公司的 IDA Pro 插件。产生了很好的效果,但要花一大笔钱,而且不会卖给任何人(至少我听说)。

.NET(C#):dotPeek,免费,将 .NET 1.0-4.5 程序集反编译为 C#。支持 .dll、.exe、.zip、.vsix、.nupkg 和 .winmd 文件。

无论您在做什么,都可能派上用场的一些相关工具是资源编辑器,例如 ResourceHacker(免费)和一个很好的十六进制编辑器,例如 Hex Workshop(商业)。

此外,如果您正在执行恶意软件分析(或使用 SICE),我衷心建议您在虚拟机中运行所有内容,即 VMware Workstation。在 SICE 的情况下,它将保护您的实际系统免受 BSOD 的影响,在恶意软件的情况下,它将保护您的实际系统免受目标程序的攻击。您可以阅读有关使用 VMware here 进行恶意软件分析的信息。

就个人而言,我使用 Olly、WinDbg 和 W32Dasm 以及一些较小的实用工具。

另外,请记住,反汇编甚至调试其他人的软件通常至少违反 EULA :)


我很欣赏最后一段的概括性,很好的建议,但在这个问题的背景下很有趣:我怀疑病毒带有 EULA! ;-)
实际上,最近一些恶意软件甚至特洛伊木马在其中包含 EULA(哦,那些俄罗斯人......)当然,它们可以(并且)被研究忽略,因为可以假设没有人会站出来起诉他们。 .. 此外,它们通常写得太糟糕,在任何情况下都无法在法庭上表达任何意思。
请注意,IDA Pro 以前的版本可免费用于非商业用途。
请注意,如今大多数恶意软件(至少是编译后的恶意软件)都可以轻松检测到它是否在 VMWare、Virtual PC、WINE、VirtualBox 等中运行。
我能看到的只是 X86 类型的编码,比如 push mov。我想反编译exe但不知道源代码语言。在加载时,我选择了可移植可执行文件和元 pc。我看到了启动函数,但它是汇编语言类型。有人可以帮我查看 C 或 C++ 等实际代码吗?
J
Jason L

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

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

计算机运行一组机器代码指令的方式最终非常简单。处理器可以执行的每个操作(例如,从内存中读取、添加两个值)都由数字代码表示。如果我告诉你数字 1 表示尖叫,数字 2 表示咯咯笑,然后举起带有 1 或 2 的卡片,希望你相应地尖叫或咯咯笑,我将使用与计算机基本相同的系统操作。

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

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

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

反汇编程序有一些新技巧,但重要的是要了解反汇编程序最终是一种搜索和替换机制。这就是为什么任何禁止它的 EULA 最终都会吹出热空气。不能既允许计算机读取程序数据,又禁止计算机读取程序数据。

(不要误会我的意思,有人尝试这样做。它们在歌曲文件上与 DRM 一样有效。)

但是,反汇编方法有一些警告。变量名不存在;你的CPU不存在这样的事情。库调用令人困惑,通常需要反汇编进一步的二进制文件。在最好的条件下,汇编很难阅读。

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

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


这详细说明了反汇编,但我很想听听有关反编译的详细说明。它可能同样没有结果吗?它有什么注意事项?
@has:反编译本机代码是一项非常艰巨的挑战,通常是不可能的。优化器非常激进,经常将源代码翻译成一无所有。你不能反编译任何东西。
在最好的条件下,汇编很难阅读。 - 好吧,我不会走那么远。最好的条件是注释良好的手写汇编,当读者对 asm 的了解和对 C 的了解一样多时。那么它一点也不差。例如 codereview.SE Checking if a number is prime in NASM Win64 Assembly,或者更复杂的 glibc 的 AVX2 strlen (code.woboq.org/userspace/glibc/sysdeps/x86_64/multiarch/…)。当然,您说的是未注释的反汇编,但“最好的时代”是简单的 C 编译器输出。
M
Matthew

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


B
BullyWiiPlaza

x64dbg 是积极维护的优秀开源调试器。


u
utku_karatas

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


j
joeld

如果您只是想弄清楚恶意软件的作用,那么在免费工具 Process Monitor 之类的工具下运行它可能会容易得多,该工具会在它尝试访问文件系统、注册表、端口等时报告...

此外,使用免费的 VMWare server 之类的虚拟机对此类工作非常有帮助。您可以制作一个“干净”的图像,然后在每次运行恶意软件时返回该图像。


D
Dylan McNamee

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


D
Douglas Mayle

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


R
Rob Prouse

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


是的,我考虑过,但我宁愿不经历设置虚拟机的麻烦只是为了杀死它:)
诚然,这种情况很麻烦,但我总是发现保留一个虚拟机来测试新软件或类似的东西很有用。然后我可以做我想做的事,只是选择最后不保存状态并返回干净的 VM 进行下一次运行。
A
Andru Luvisi

Boomerang 也可能值得一试。


并不真地。它会因为比最简单的可执行文件更复杂的东西而崩溃和烧毁。
j
jyz

我不敢相信没有人对 Immunity Debugger 只字未提。

Immunity Debugger 是一个强大的工具,用于编写漏洞利用、分析恶意软件和反向工程二进制文件。它最初基于 Ollydbg 1.0 源代码,但修复了名称解析错误。它有一个支持良好的 Python API,易于扩展,因此您可以编写 Python 脚本来帮助您进行分析。

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


J
Joel Lucsy

如果您想在不感染您的计算机的情况下运行该程序以查看它的作用,请使用 VMWare 或 Microsoft VPC 之类的虚拟机,或 SandboxIE 之类的可以沙盒程序的程序


J
James Graham

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

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


为什么 dotpeek 不支持我的 exe?
@Sarveshwar 可能不是 .Net exe?
A
Alexander Schmidt

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

快速谷歌产生这个:Link


你没有解释这个
p
plan9assembler

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

http://www.cwsandbox.org/

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

高温高压


3
3 revs, 3 users 40%

explorer suite 可以为所欲为。