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