我的一位朋友从Facebook下载了一些恶意软件,我很想知道它的作用而不会感染自己。我知道你不能真正反编译.exe,但我至少可以在Assembly中查看它或附加调试器吗?
编辑说它不是.NET可执行文件,没有CLI标题。
答案 0 :(得分:395)
使用调试器,您可以交互式地逐步完成程序组装 使用反汇编程序,您可以更详细地查看程序组件 使用反编译器,您可以将程序重新转换为部分源代码,假设您知道它的内容(您可以使用PEiD等免费工具找到它 - 如果程序如果你无法在任何地方找到PEiD,你必须先解压缩它或Detect-it-Easy。目前DIE在github有一个强大的开发者社区。 p>
在您正在做的任何事情中可能会派上用场的一些相关工具是资源编辑器,例如ResourceHacker(免费)和一个好的十六进制编辑器,例如Hex Workshop(商业)。
此外,如果您正在进行恶意软件分析(或使用SICE),我全心全意地建议在虚拟机内运行所有内容,即VMware Workstation。在SICE的情况下,它将保护您的实际系统免受BSOD的攻击,并且在恶意软件的情况下,它将保护您的实际系统免受目标程序的影响。您可以通过VMware here了解恶意软件分析。
就个人而言,我和Olly,WinDbg& W32Dasm,以及一些较小的实用工具。
另外,请记住,反汇编甚至调试其他人的软件通常都会违反EULA:)
答案 1 :(得分:40)
psoul对你的问题的优秀帖子答案,所以我不会复制他的好作品,但我觉得这有助于解释为什么这既是一个完全有效但又非常愚蠢的问题。毕竟,这是一个值得学习的地方,对吗?
现代计算机程序是通过一系列转换产生的,从输入人类可读的文本指令(称为“源代码”)开始,以计算机可读的指令体结尾(称为“二进制”)或“机器代码”)。
计算机运行一组机器代码指令的方式最终非常简单。处理器可以采取的每个动作(例如,从存储器读取,添加两个值)由数字代码表示。如果我告诉你,数字1意味着尖叫,而数字2意味着傻笑,然后拿着1或2的卡片,期待你相应的尖叫或咯咯,我会使用与计算机使用的本质相同的系统操作。
二进制文件只是一组代码(通常称为“操作代码”)和操作代码所依据的信息(“参数”)。
现在,汇编语言是一种计算机语言,其中语言中的每个命令字恰好代表处理器上的一个操作码。汇编语言命令和处理器操作码之间存在直接的1:1转换。这就是为什么x386处理器的编码组件与ARM处理器的编码组件不同的原因。
反汇编就是这样的:程序读取二进制文件(机器代码),用等效的汇编语言命令替换操作码,并将结果输出为文本文件。理解这一点很重要;如果您的计算机可以读取二进制文件,那么您也可以手动使用手中的操作码表(ick)或通过反汇编程序读取二进制文件。
反汇编程序有一些新的技巧,但重要的是要理解反汇编程序最终是一个搜索和替换机制。这就是为什么任何禁止它的EULA最终会吹热空气的原因。您不能立即允许计算机读取程序数据,也禁止计算机读取程序数据。
(不要误解我的意思,尝试这样做。它们和歌曲文件上的DRM一样好。)
然而,反汇编方法有一些警告。变量名称不存在;你的CPU不存在这样的事情。图书馆电话令人困惑,经常需要拆解更多的二进制文件。在最好的条件下阅读装配很难。
大多数专业程序员都不会坐下来阅读汇编语言而不会头疼。对于业余爱好者来说,这不会发生。
无论如何,这是一个有点掩盖的解释,但我希望它有所帮助。每个人都可以随意纠正我的任何错误陈述;有一阵子了。 ;)
答案 2 :(得分:14)
好消息。 IDA Pro现在实际上是免费的旧版本: http://www.hex-rays.com/idapro/idadownfreeware.htm
答案 3 :(得分:11)
任何体面的调试器都可以做到这一点。试试OllyDbg。 (编辑:它有一个很好的反汇编程序,甚至可以将参数解码为WinAPI调用!)
答案 4 :(得分:10)
x64dbg
是一个积极维护的优秀的开源调试器。
答案 5 :(得分:6)
当然,看看IDA Pro。它们提供了一个eval版本,因此您可以尝试一下。
答案 6 :(得分:5)
您想要的是一种称为“反汇编程序”的软件。
答案 7 :(得分:5)
如果您只是想弄清楚恶意软件的作用,那么在免费工具Process Monitor之下运行它可能要容易得多,它会在尝试访问文件系统,注册表,端口时报告,等...
此外,使用像免费VMWare server这样的虚拟机对这类工作非常有帮助。您可以制作一个“干净”的图像,然后每次运行恶意软件时再回到它。
答案 8 :(得分:4)
您可能会在汇编中查看一些信息,但我认为最简单的方法是启动虚拟机并查看其功能。确保你没有可以跳过的开放份额或类似的东西;)
答案 9 :(得分:4)
Boomerang也可能值得一试。
答案 10 :(得分:3)
我无法相信没有人对Immunity Debugger一无所知。
Immunity Debugger是一个功能强大的工具,用于编写漏洞,分析恶意软件和反向工程二进制文件。它最初基于Ollydbg 1.0源代码,但修复了名称resoution错误。它有一个支持良好的 Python API ,易于扩展,因此您可以编写python脚本来帮助您进行分析。
另外,来自Corelan团队的一位好人Peter写了一篇名为mona.py的优秀工具btw。
答案 11 :(得分:2)
答案 12 :(得分:2)
如果您没有时间,请将恶意软件提交给cwsandbox:
http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/
HTH
答案 13 :(得分:2)
你可以使用dotPeek,非常适合反编译exe文件。这是免费的。
答案 14 :(得分:1)
我想说的是,在2019年,Ghidra(https://ghidra-sre.org/)值得一试。它是开源的(免费的),并且具有出色的代码分析功能,包括能够反编译回到相当易读的C代码的功能。
答案 15 :(得分:0)
explorer suite可以做你想做的事。