Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 制作一个简单的汇编仿真器_Assembly_Antivirus_Virus_Disassembly - Fatal编程技术网

Assembly 制作一个简单的汇编仿真器

Assembly 制作一个简单的汇编仿真器,assembly,antivirus,virus,disassembly,Assembly,Antivirus,Virus,Disassembly,我正在从事检测未知病毒的项目,因此我将构建我的小型仿真器,该仿真器模拟可执行文件的汇编代码,以便通过将其模拟到虚拟寄存器,然后观察发生的情况来检测它是否为病毒。 因此,我需要帮助获取c中每个汇编指令的代码。如果您想创建x86仿真器,可以查看以下完整的操作码列表: . 但这似乎不是检测病毒的好方法。您正在寻找的是x86 ISA和通用硬件的LGPL仿真程序。寄存器值中没有任何表示恶意的内容。你最好放弃。大多数试图检测恶意行为的沙盒所做的是拦截系统/库调用 使用上下文%eax=1%ebx=4000%e

我正在从事检测未知病毒的项目,因此我将构建我的小型仿真器,该仿真器模拟可执行文件的汇编代码,以便通过将其模拟到虚拟寄存器,然后观察发生的情况来检测它是否为病毒。
因此,我需要帮助获取c

中每个汇编指令的代码。如果您想创建x86仿真器,可以查看以下完整的操作码列表:
. 但这似乎不是检测病毒的好方法。

您正在寻找的是x86 ISA和通用硬件的LGPL仿真程序。

寄存器值中没有任何表示恶意的内容。你最好放弃。大多数试图检测恶意行为的沙盒所做的是拦截系统/库调用

使用上下文%eax=1%ebx=4000%ecx=3F调用ftable+1可能意味着发射核导弹,正如它可能意味着打印hello world一样。 现在,如果您将自己的函数放在系统和可执行文件之间,您就可以知道发生了什么(将其识别为恶意的并不容易)


这当然不需要仿真器,所以你最好重新考虑一下,因为编写一个精确的仿真器非常非常困难。

如果你这样问,我只能建议你做一些简单的项目并学习。到目前为止你做了什么?你希望如何通过检查寄存器来检测病毒?另外,最先进的防病毒程序使用已知病毒的定义文件。“自动”检测以前未分类的病毒需要人工智能。这听起来像是一个家庭作业问题——使用C实现一个基本的x86仿真器。祝你好运!我记得上世纪90年代初有一家公司这么做(我的一个朋友参与了早期开发版本的测试)。我相信AV软件被称为Victor Charlie。由于它们似乎不再存在,我猜这比看起来要难实现得多。。。我的意思是,如果我们甚至不能通过编程来确定给定的代码序列是否“完成”,那么正确地确定恶意意图似乎也是不可能的。实际上,这是一种进行行为启发式和堆栈模式匹配的极好方法。你可以使用一些恶意软件,识别它在解包过程中推送到堆栈中的数据模式,然后为其构建签名并模拟应用程序。如果push/pop的模式相同,则是启发式匹配。您只需足够聪明,以避免陷阱(例如,SEH技巧在EP使用API调用)。