我的一个朋友从Facebook上下载了一些恶意软件,我很好奇它在不感染我自己的情况下是怎么做的。我知道你不能真正地反编译。exe,但是我至少可以在程序集中查看它或附加调试器吗?
编辑说它不是. net可执行文件,没有CLI头文件。
我的一个朋友从Facebook上下载了一些恶意软件,我很好奇它在不感染我自己的情况下是怎么做的。我知道你不能真正地反编译。exe,但是我至少可以在程序集中查看它或附加调试器吗?
编辑说它不是. net可执行文件,没有CLI头文件。
当前回答
当然,看看IDA Pro。他们提供了一个评估版本,所以你可以尝试一下。
其他回答
在汇编中查看它可能会得到一些信息,但我认为最简单的方法是启动虚拟机,看看它做了什么。确保你没有未公开的股份或类似的东西,它可以跳过;)
如果你只是想弄清楚恶意软件在做什么,在像Process Monitor这样的免费工具下运行它可能会更容易,它会在它试图访问文件系统、注册表、端口等时报告…
此外,使用像免费的VMWare服务器这样的虚拟机对这类工作非常有帮助。您可以创建一个“干净”映像,然后每次运行恶意软件时都返回到该映像。
如果你没有时间,提交恶意软件到cwsandbox:
http://www.cwsandbox.org/
http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/
HTH
psoul的精彩帖子回答了你的问题,所以我不会复制他的好工作,但我觉得它有助于解释为什么这是一个完全有效但也非常愚蠢的问题。毕竟,这是一个学习的地方,对吧?
现代计算机程序是通过一系列转换产生的,从人类可读的文本指令体(称为“源代码”)的输入开始,到计算机可读的指令体(也称为“二进制”或“机器代码”)结束。
计算机运行一组机器码指令的方式归根结底是非常简单的。处理器可以采取的每个操作(例如,从内存中读取,添加两个值)都由一个数字代码表示。如果我告诉你数字1代表尖叫,数字2代表傻笑,然后举着写着1或2的卡片,期待你尖叫或傻笑,我所使用的系统本质上与计算机使用的系统相同。
二进制文件只是这些代码(通常称为“操作码”)和操作码所作用的信息(“参数”)的集合。
汇编语言是一种计算机语言,其中每个命令字恰好代表处理器上的一个操作码。在汇编语言命令和处理器操作代码之间有直接1:1的转换。这就是为什么为x386处理器编写程序集与为ARM处理器编写程序集不同的原因。
反汇编很简单:程序读取二进制(机器代码),用等价的汇编语言命令替换操作代码,并将结果作为文本文件输出。理解这一点很重要;如果您的计算机可以读取二进制文件,那么您也可以读取二进制文件,可以手动使用操作代码表(ick),也可以通过反汇编程序。
反汇编程序有一些新的技巧,但重要的是要理解反汇编程序最终是一个搜索和替换机制。这就是为什么任何禁止它的EULA最终都是在夸夸其谈。你不能既允许计算机读取程序数据,又禁止计算机读取程序数据。
(不要误解我的意思,已经有人试图这么做了。它们和DRM一样适用于歌曲文件。)
但是,对于拆卸方法有一些注意事项。变量名不存在;这样的东西对你的CPU不存在。库调用非常混乱,通常需要进一步分解二进制文件。即使在最好的条件下,组装也很难阅读。
大多数专业程序员在阅读汇编语言时都会感到头疼。对于一个业余爱好者来说,这是不可能发生的。
不管怎样,这是一种有些粉饰的解释,但我希望它能有所帮助。任何人都可以随意纠正我的错误陈述;已经有一段时间了。;)
我想说,在2019年(甚至在2022年),Ghidra (https://ghidra-sre.org/)值得一看。它是开源的(免费的),具有惊人的代码分析能力,包括反编译到相当可读的C代码的能力。