3 回答
TA贡献1835条经验 获得超7个赞
psoul的出色帖子可以回答您的问题,因此我不会重复他的出色著作,但是我认为这有助于解释为什么这一次既是完全有效的又是非常愚蠢的问题。毕竟,这是一个学习的地方,对吧?
现代计算机程序是通过一系列转换产生的,从输入人类可读的文本指令主体(称为“源代码”)开始,到以计算机可读指令主体(称为“二进制”或“机器”)结束码”)。
计算机运行一组机器代码指令的方式最终非常简单。处理器可以执行的每个动作(例如,从内存中读取,添加两个值)均由数字代码表示。如果我告诉您数字1表示尖叫,数字2表示咯咯笑,然后举起上面印有1或2的卡片,希望您相应地尖叫或咯咯笑,那么我将使用与计算机所使用的基本相同的系统操作。
二进制文件只是这些代码(通常称为“操作代码”)和操作代码所作用的信息(“参数”)的集合。
现在,汇编语言是一种计算机语言,其中该语言中的每个命令字正好代表处理器上的一个操作码。汇编语言命令和处理器操作码之间直接进行1:1转换。这就是为什么x386处理器的编码程序集与ARM处理器的编码程序集不同的原因。
反汇编就是这样:程序读取二进制文件(机器代码),用等效的汇编语言命令替换操作码,然后将结果输出为文本文件。了解这一点很重要;如果您的计算机可以读取二进制文件,那么您也可以通过用手(op)手动操作(ick)或通过反汇编程序来读取二进制文件。
反汇编器具有一些新的技巧,但必须了解反汇编器最终是一种搜索和替换机制,这一点很重要。这就是为什么任何最终禁止它的EULA最终都会吹热风的原因。您不能一次允许计算机读取程序数据,也不能禁止计算机读取程序数据。
(请不要误会我,已经尝试过这样做。它们在歌曲文件上的作用和DRM一样好。)
但是,拆卸方法有一些注意事项。变量名不存在;您的CPU不存在这种情况。库调用就像地狱一样令人迷惑,并且经常需要拆卸其他二进制文件。在最好的条件下,汇编是很难读的。
大多数专业程序员都不会坐下来阅读汇编语言而感到头疼。对于业余爱好者而言,这只是不可能的事情。
无论如何,这是一个有点掩盖的解释,但我希望它会有所帮助。每个人都可以随意纠正我的任何错误陈述;有一阵子了。;)
TA贡献1893条经验 获得超10个赞
如果您只是想弄清楚恶意软件的作用,那么在免费工具Process Monitor之类下运行它可能会容易得多,该工具会在每次尝试访问文件系统,注册表,端口等时进行报告。
此外,使用虚拟机(例如免费的VMWare服务器)对于此类工作非常有帮助。您可以制作一个“干净”的图像,然后在每次运行恶意软件时都返回到该图像。
- 3 回答
- 0 关注
- 886 浏览
添加回答
举报