我的一个朋友从Facebook下载了一些恶意软件,我很想知道它的作用而不会感染自己.我知道你不能真正反编译.exe,但我至少可以在Assembly中查看它或附加调试器吗?
编辑说它不是.NET可执行文件,没有CLI标头.
使用调试器,您可以交互式地执行程序组装.
使用反汇编程序,您可以更详细地查看程序组件.
使用反编译器,您可以将程序重新转换为部分源代码,假设您知道它的内容(您可以通过PEiD等免费工具找到它 - 如果程序已打包,则必须先将其解压缩如果你无法在任何地方找到PEiD,或者检测它很容易 .DIE 目前在github上有一个强大的开发者社区.
OllyDbg,免费,一个精美的32位调试器,你可以找到许多用户自制的插件和脚本,使它更有用.
WinDbg,免费,是一款功能强大的微软调试器.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,free,将.NET 1.0-4.5程序集反编译为C#.支持.dll,.exe,.zip,.vsix,.nupkg和.winmd文件.
无论你正在做什么,一些相关的工具都可能派上用场,它们是资源编辑器,如ResourceHacker(免费)和一个好的十六进制编辑器,如Hex Workshop(商业).
此外,如果您正在进行恶意软件分析(或使用SICE),我全心全意地建议在虚拟机内部运行所有内容,即VMware Workstation.在SICE的情况下,它将保护您的实际系统免受BSOD的攻击,并且在恶意软件的情况下,它将保护您的实际系统免受目标程序的影响.您可以在此处阅读有关VMware的恶意软件分析.
就个人而言,我使用Olly,WinDbg和W32Dasm以及一些较小的实用工具.
另外,请记住,反汇编甚至调试其他人的软件通常都是针对EULA的:)
psoul的优秀帖子回答了你的问题,所以我不会复制他的好作品,但我觉得这有助于解释为什么这既是一个完全有效但又非常愚蠢的问题.毕竟,这是一个学习的地方,对吧?
现代计算机程序是通过一系列转换产生的,从输入人类可读的文本指令(称为"源代码")开始,以计算机可读的指令体(称为"二进制"或"机器")结束.码").
计算机运行一组机器代码指令的方式最终非常简单.处理器可以采取的每个动作(例如,从存储器读取,添加两个值)由数字代码表示.如果我告诉你,数字1意味着尖叫,而数字2意味着傻笑,然后拿着1或2的卡片,期待你相应的尖叫或咯咯,我会使用与计算机使用的本质相同的系统经营.
二进制文件只是一组代码(通常称为"操作代码")和操作代码所依据的信息("参数").
现在,汇编语言是一种计算机语言,其中语言中的每个命令字恰好代表处理器上的一个操作码.汇编语言命令和处理器操作码之间存在直接的1:1转换.这就是为什么x386处理器的编码组件与ARM处理器的编码组件不同的原因.
反汇编就是这样的:程序读取二进制文件(机器代码),用等效的汇编语言命令替换操作码,并将结果输出为文本文件.理解这一点很重要; 如果您的计算机可以读取二进制文件,那么您也可以手动使用手中的操作码表(ick)或通过反汇编程序读取二进制文件.
反汇编程序有一些新的技巧和所有,但重要的是要理解反汇编程序最终是一个搜索和替换机制.这就是为什么任何禁止它的EULA最终会吹热空气的原因.您不能立即允许计算机读取程序数据,也禁止计算机读取程序数据.
(不要误解我的意思,尝试过这样做.它们与歌曲文件上的DRM一样有效.)
但是,反汇编方法有一些警告.变量名称不存在; 你的CPU不存在这样的事情.图书馆电话令人困惑,经常需要拆解更多的二进制文件.在最好的条件下阅读装配很难.
大多数专业程序员不会坐下来阅读汇编语言而不会头疼.对于业余爱好者来说,这不会发生.
无论如何,这是一个有点掩盖的解释,但我希望它有所帮助.每个人都可以随意纠正我的任何错误陈述; 有一阵子了.;)
好消息.IDA Pro现在实际上是免费的旧版本:http: //www.hex-rays.com/idapro/idadownfreeware.htm
任何体面的调试器都可以做到这一点 试试OllyDbg.(编辑:它有一个很好的反汇编程序,甚至可以将参数解码为WinAPI调用!)
x64dbg
是一个积极维护的优秀的开源调试器.
当然,看看IDA Pro.它们提供了一个eval版本,因此您可以尝试一下.
你想要的是一种叫做"反汇编器"的软件.
快速谷歌收益率:http://www.geocities.com/~sangcho/disasm.html
如果您只是想弄清楚恶意软件的作用,那么在免费工具Process Monitor下运行它可能要容易得多,它会在尝试访问文件系统,注册表,端口等时报告...
此外,使用像免费VMWare服务器这样的虚拟机对这种工作非常有帮助.您可以制作一个"干净"的图像,然后每次运行恶意软件时再回到它.