Создание шеллкода - PullRequest
       97

Создание шеллкода

0 голосов
/ 18 июня 2020

В моем классе я хочу создавать экземпляр Vectored Exception Handler каждый раз, когда создается экземпляр класса.

Чтобы добиться этого, я решил попробовать написать функцию обратного вызова VEH Мне нужно было, затем преобразовать код в шелл-код и выделить память, записать его и передать его AddVectoredExceptionHandler каждый раз, когда я хочу создать VEH.

Дело в том, что я не знаю, как создать шелл-код этого кода.

Вот функция (просто скелет, не весь код, который у меня внутри):

long __stdcall VEH(EXCEPTION_POINTERS*) {
    return EXCEPTION_CONTINUE_EXECUTION;
}

Вот что такое мой компилятор (Visual Studio) давая мне:

//private:

    static long __stdcall _veh(EXCEPTION_POINTERS* except_ptr) {
002B2C80  push        ebp  
002B2C81  mov         ebp,esp  
002B2C83  sub         esp,0C0h  
002B2C89  push        ebx  
002B2C8A  push        esi  

//private:

    static long __stdcall _veh(EXCEPTION_POINTERS* except_ptr) {
002B2C8B  push        edi  
002B2C8C  lea         edi,[ebp-0C0h]  
002B2C92  mov         ecx,30h  
002B2C97  mov         eax,0CCCCCCCCh  
002B2C9C  rep stos    dword ptr es:[edi]  
002B2C9E  mov         ecx,offset _9F70A5B3_main@cpp (02BF035h)  
002B2CA3  call        @__CheckForDebuggerJustMyCode@4 (02B1244h)

Прежде всего, почему прототип здесь дважды?

Во-вторых, что это за __CheckForDebuggerJustMyCode вызов?

Кажется, что VS добавляет что-то в мой код. Я знаю, что делает компилятор: добавляет, удаляет и заменяет элементы в моем коде для оптимизации, благодаря библиотекам VSC ++ (распространяемые компоненты), которые добавляют такие вещи, как самопроверка ошибок и т. Д.,

.. .но для создания шелл-кода мне не нужны эти вещи.

Итак,

Как мне go создавать шелл-код? К счастью, со всем остальным я справлюсь

...