Masm32 перейти к метке в другом модуле после того, как обработчик seh обработал исключение - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь метод анти-отладки.

Сначала я сделал все nessissery и выдал исключение строкой не исправленного кода

    assume fs:nothing
    push offset antiDebug    ;function to deal with exception
    push fs:[0]
    mov fs:[0],esp
    mov eax,offset MENU   ;Menu is the label I want to jump to after the exception handled
    push eax
    call dumpRegs
    mov edx,0
    mov dword ptr[edx],0    ;wrong code

    MENU:                   ;I want to jump here after exception handled

функция antiDebug ↓, в другом модуль из приведенного выше кода

antiDebug proc _lpExceptionRecord:ptr EXCEPTION_RECORD,_lpSEH:ptr SEH,_lpContext:ptr CONTEXT,_lpDispatcherContext:ptr DISPATCHER_CONTEXT 
    mov esi,_lpExceptionRecord
    mov edi,_lpContext
    assume esi:ptr EXCEPTION_RECORD,edi:ptr CONTEXT
    invoke MessageBox,NULL,addr infoUser,NULL,MB_OK
    mov eax,[ebp+638H]       ;I debug many times to find the relative 
                             ;distance,eax gets the location oflable MENU
    mov [edi].regEip,eax
    assume esi:nothing,edi:nothing
    mov eax,ExceptionContinueExecution
    ret
antiDebug endp

проблема в том, что местоположение МЕНЮ находится не в том же модуле функции защиты от отладки. Так что я просто не могу перейти в МЕНЮ на mov [edi].regEip,eax Что я должен делать?

ДОБАВИТЬ ДЕТАЛИ : в моем главном модуле, прежде чем вызвать исключение, я помещаю sh расположение МЕНЮ в стеке, и вы можете видеть в окне отладки, eax получает право значение enter image description here

Я продолжаю отлаживать. В функции antiDebug здесь eax успешно получает местоположение метки и передает его в [edi] .regEip enter image description here

Но тогда возникает проблема. Я уверен, что я получаю правильное местоположение МЕНЮ, но когда эта функция возвращается, я получаю ошибку. enter image description here

затем ошибка в функции обработчика и ошибка в функции обработчика, я просто повторяю выполнение функции обработчика (antiDebug)

PS: если я передаю [edi ] .reg Получите ярлык в том же модуле antiDebug, я могу прыгнуть туда.

Заранее спасибо!

1 Ответ

0 голосов
/ 23 апреля 2020

Через несколько дней я, кажется, выясняю это. Я не могу найти правильное местоположение МЕНЮ (метка). Ключ к решению проблемы - как найти правильное местоположение метки (как экспортировать метку) к другому модулю. Так что мое решение - определить глобальную переменную в главном модуле и определить функцию в главном модуле для mov eax,variable that store location

При вызове этой функции я получаю расположение метки в модуле antiDebug.

...