我知道


动态程序分析是对计算机软件的分析,该软件是通过在真实或虚拟处理器上执行程序来执行的。

<




静态程序分析是对没有真正执行程序的计算机软件的分析
我不明白,为什么有人会使用像ida pro这样的静态反汇编程序,而不是像ollydbg这样的动态反汇编程序或调试器,反之亦然。静态反汇编和动态反汇编之间的区别?

因为这不是在要求差异,而是在询问为什么有人选择静态反汇编程序而不是动态反汇编程序的原因和好处,反之亦然恶意软件分析。

评论

那么调试器和反汇编器之间有什么区别

#1 楼

在大多数情况下,您不会只局限于其中之一。而是同时使用两者。

动态分析意味着可以运行软件。除了在受控环境中,您不想使用怀疑是恶意软件的软件来执行此操作。

另外,在运行该软件之前,您想了解一点。可执行文件是否以某种方式打包?是否使用反调试技术?该软件是否包含某些知名/开源库的任何内容?有很多工具可以回答其中的一些问题-Ida pro只是其中的一个。部分。二进制文件的哪些部分实际上是代码,哪些是数据?如果软件包含字符串或其他数据,看起来很有趣,那么在哪里引用?哪个函数在哪里叫?在这里,可以方便地使用IDA的交叉引用。

另一方面,在很多情况下,您并不需要真正理解子例程的每条指令来了解其作用。您可能想知道软件将读取和写入哪些文件和哪些注册表项。或者,您可能想知道它是否访问互联网以及它连接到哪些站点。运行启用了procmonwireshark之类的东西的软件是找出最快的方法-即使procmonwireshark都不是调试器,我也会考虑进行动态分析。或者,在分析软件时,您会遇到一个包含很多位操作的函数-这可能是某种加密或散列。启动调试器,在函数上设置断点,并检查其参数和返回值。与尝试理解该功能相比,这可以更快地确认您的假设。

现在,您已经确认该函数确实可以解密某些内容,并且想知道其工作原理。您可能需要用注释来注释各个操作码,例如:“此时,eax包含输入字符串的所有字节,或者彼此“异或”,或者“这什么也没做,而且似乎只是混淆而已”。像IDA之类的工具可以让您做到这一点。分析软件包括许多任务。对于某些应用程序而言,静态分析更容易,对于其他应用程序而言,动态分析更容易。任何自尊的逆向工程师都会有很多工具可供使用,并根据手头的任务选择合适的工具,而且经常会编写自己的工具,以解决他在使用正确的特定软件时遇到的一些问题。现在。

请注意,我从来没有一直使用software而不是malware这个词,因为这涉及到任何类型的逆向工程,而不仅仅是恶意软件分析。