Answers:
使用调试器,您可以交互地完成程序汇编。
使用反汇编程序,您可以更详细地查看程序汇编。
使用反编译器,您可以将程序重新转换为部分源代码,前提是您知道该程序是用什么编写的(可以使用PEiD等免费工具来查找 -如果该程序已打包,则必须先将其解压缩或者检测-IT-容易,如果你不能找到PEID任何地方。DIE具有较强的开发者社区上github上目前)。
无论您正在做什么,都可能会方便使用的一些相关工具是资源编辑器(例如ResourceHacker(免费))和良好的十六进制编辑器(例如Hex Workshop(商业))。
此外,如果您要进行恶意软件分析(或使用SICE),我会全力建议在虚拟机(即VMware Workstation )中运行所有程序。对于SICE,它将保护您的实际系统免受BSOD的侵害;对于恶意软件,它将保护您的实际系统免受目标程序的侵害。您可以在此处阅读有关使用VMware进行恶意软件分析的信息。
我个人使用Olly,WinDbg和W32Dasm,以及一些较小的实用工具。
另外,请记住,拆卸或调试其他人的软件通常至少是违反EULA的:)
psoul的出色帖子可以回答您的问题,因此我不会重复他的出色著作,但我认为这有助于解释为什么这一次既是完全有效的又是非常愚蠢的问题。毕竟,这是一个学习的地方,对吧?
现代计算机程序是通过一系列转换产生的,从输入人类可读的文本指令主体(称为“源代码”)开始,到以计算机可读的指令主体(称为“二进制”或“机器”)结束码”)。
计算机运行一组机器代码指令的方式最终非常简单。处理器可以执行的每个动作(例如,从内存中读取,添加两个值)均由数字代码表示。如果我告诉您数字1表示尖叫,数字2表示咯咯笑,然后举起上面印有1或2的卡片,希望您相应地尖叫或咯咯笑,那么我将使用与计算机所使用的基本相同的系统操作。
二进制文件只是这些代码(通常称为“操作代码”)和操作代码所作用的信息(“参数”)的集合。
现在,汇编语言是一种计算机语言,其中该语言中的每个命令字正好代表处理器上的一个操作码。汇编语言命令和处理器操作码之间直接进行1:1转换。这就是为什么x386处理器的编码程序集与ARM处理器的编码程序集不同的原因。
反汇编很简单:程序读取二进制文件(机器代码),用等效的汇编语言命令替换操作码,然后将结果输出为文本文件。了解这一点很重要;如果您的计算机可以读取二进制文件,那么您也可以通过用手(op)手动操作(ick)或通过反汇编程序来读取二进制文件。
反汇编程序具有一些新技巧,但要理解反汇编程序最终是一种搜索和替换机制,这一点很重要。这就是为什么任何最终禁止它的EULA最终都会吹热风的原因。您不能一次允许计算机读取程序数据,也不能禁止计算机读取程序数据。
(不要误会我,已经尝试过这样做。它们与歌曲文件上的DRM一样有效。)
但是,拆卸方法有一些注意事项。变量名不存在;您的CPU不存在这种情况。库调用就像地狱一样令人迷惑,并且经常需要拆卸其他二进制文件。在最好的条件下,汇编是很难读的。
大多数专业程序员都不会坐下来阅读汇编语言而感到头疼。对于业余爱好者来说,这只是不可能的事情。
无论如何,这是一个有点掩盖的解释,但我希望它会有所帮助。每个人都可以自行纠正我的任何错误陈述;有一阵子了。;)
好消息。实际上,IDA Pro的旧版本实际上是免费的:http : //www.hex-rays.com/idapro/idadownfreeware.htm
任何体面的调试器都可以做到这一点。试试OllyDbg。(编辑:它具有出色的反汇编程序,甚至可以将参数解码为WinAPI调用!)
如果您只是想弄清楚恶意软件的作用,那么在免费工具Process Monitor之类下运行它可能会容易得多,该工具会在每次尝试访问文件系统,注册表,端口等时进行报告。
此外,使用虚拟机(例如免费的VMWare服务器)对于此类工作非常有帮助。您可以制作一个“干净”的图像,然后在每次运行恶意软件时都返回到该图像。
您可能会在汇编中查看一些信息,但我认为最简单的方法是启动虚拟机并查看其功能。确保您没有公开共享或类似的东西可以跳过;)
我不敢相信还没有人对Immunity Debugger说话。
Immunity Debugger是一个功能强大的工具,可用于编写利用,分析恶意软件和反向工程二进制文件。它最初基于Ollydbg 1.0源代码,但是修复了名称重命名错误。它具有受良好支持的Python API,可轻松扩展,因此您可以编写python脚本来帮助您进行分析。
另外,Corelan团队的一位Peter写了一个很好的工具btw,名为mona.py。
如果没有时间,请将恶意软件提交给cwsandbox:
http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/
高温超导
我想说的是在2019年,Ghidra(https://ghidra-sre.org/)值得一试。它是开源的(免费的),并且具有惊人的代码分析功能,包括从反编译到相当易读的C代码的能力。