良性应用程序可以有这样的 API 吗?

逆向工程 登录 恶意软件 良性
2021-06-19 09:46:35

我是恶意软件分析的新手 .. 我正在分析一些“Windows”应用程序并发现我认为它只存在于恶意软件中的功能,这可能还是我的分析有问题?我正在使用 Cuckoo 沙箱 .. 功能是:SetWindowsHookExA, IsDebuggerPresent.. 和其他

应用程序示例之一是AcroRd32.exe: 它调用IsDebuggerPresent..,这是它在virustotal 上的页面,包括与样本相关的所有信息以及 MD5。 https://www.virustotal.com/en/file/9e702e7b53f6f00e344a1cb42c63eaf4d52ed4adb5407744a654753569044555/analysis/

2个回答

IsDebuggerPresent在大多数使用 Visual C++ 编译的可执行文件中,在 main 函数之前执行的安装代码中都可以找到。也有合法的用例SetWindowsHookExA,因此您经常会在干净的可执行文件中看到它们。

是的,对于IsDebuggerPresentSetWindowsHookExA常见的 Windows 函数肯定有合法的用例

我建议你做一个简单的实验,你可以尝试一下,拿我的这个合法的 C++ 片段:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

void main(int argc, char* argv[]) {
    printf("Hello world\n");
    while(true) {
        printf("Debugger present: %d\n", IsDebuggerPresent());
        Sleep(200);
    }
    system("pause");
}

使用您最喜欢的 c++ windows 编译器构建它并运行它。现在,使用你最喜欢的调试器,我推荐你x64dbg并试试这个:

  • 附加和分离到正在运行的进程以查看 IsDebuggerPresent 如何变化
  • 附加后,尝试隐藏调试器

通过这样做,您将了解有关 IsDebuggerPresents 的基础知识。

关于 SetWindowsHookExA,我已经无数次看到它在合法的应用程序上使用过,所以我可以保证你绝对不是一个旨在用于“顽皮”应用程序的微软函数:)