Проверка установки хука и бряков на API.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Sunzer, 2 Jul 2009.

  1. Sunzer

    Sunzer Member

    Joined:
    17 May 2008
    Messages:
    29
    Likes Received:
    9
    Reputations:
    2
    Делать было нечего вот написал код. Полностью независимый. Достаточно поставить на таймер его вызов.
    Сам ищет таблицу импорта и проверяет первые байты всех импортируемых API.
    В случае если будет установлен программный бряк на API или JMP в начале(хук). Программа падает.
    Знаю что от крякера мало спасет делал просто так) Сильно ногами не бить.

    Code:
    { Код проверки установки програмного бряка на всех API из таблицы }
    // Так же проверка на хук апи , (jmp в начале)
    procedure CheckAPIBreakPoint;
    asm
    PUSHAD
    PUSHF
    MOV EAX,DWORD PTR FS:[$18]
    MOV EAX,DWORD PTR DS:[EAX+$30]
    MOV EAX,DWORD PTR DS:[EAX+$8] // Get ImageBase by PEB
    MOV ECX,DWORD PTR DS:[EAX+$3C]
    ADD ECX,EAX // PEHeaderOffset
    MOV EDI,DWORD PTR DS:[ECX+$80] // ImportTable Addr
    ADD EDI,EAX // ImportTable + ImageBase
    
    // Обробатываем IMAGE_IMPORT_DESCRIPTOR'ы
    MOV EDX,$10
    JMP @START
    @LOOP:
    ADD EDX,$14
    @START:
    MOV ESI,[EDI+EDX]
    TEST ESI,ESI
    JE @EXIT
    ADD ESI,EAX
    CMP DWORD PTR DS:[ESI],0
    JE @EXIT // конец
    
    @LOOP_API:
    CMP DWORD PTR DS:[ESI],0
    MOV EBP,[ESI]
    JE @END
    CMP BYTE PTR DS:[EBP],$CC // Program BreakPoint
    JE @DETECT
    CMP BYTE PTR DS:[EBP],$EB // JMP Short
    JE @DETECT
    CMP BYTE PTR DS:[EBP],$E9 // JMP Long
    JE @DETECT
    ADD ESI,4
    JMP @LOOP_API
    
    @END:
    JMP @LOOP // Обрабатываем следующий IMAGE_IMPORT_DESCRIPTOR
    @DETECT:  // В случае детекта
    MOV FS:[0],0
    JMP ESP
    @EXIT:
    POPF
    POPAD
    end;
     
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,223
    Reputations:
    455
    1) Обход запросто:
    push XXXXXXXX
    ret

    или
    mov reg,XXXXXXXX
    jmp/call reg

    или
    NOP NOP NOP А далее стандартная вешь.

    2) Если попадется функция в которой и так идет jmp в начале, то будет облом.

    По этому лучший способ для проверки - грузить в винта либу и сверять по оригинальным опкодам.
     
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,223
    Reputations:
    455
    P.S. Если в проге будет установлен обработчик SEH или данные будут проверять внутри конструкции try except то смысла от этого будет мало )
     
  4. Sunzer

    Sunzer Member

    Joined:
    17 May 2008
    Messages:
    29
    Likes Received:
    9
    Reputations:
    2
    P.S. Если в проге будет установлен обработчик SEH или данные будут проверять внутри конструкции try except то смысла от этого будет мало )

    Даже если обработчик поставишь программа падает, SEH и try except end одно и тоже.
    Про первую твою месагу это верно, но я же сказал что от нечего сделать написал.
    Бряк ведь ставят на первую инструкцию. Про хук это понятно. У каких API в самом начале JMP ?
     
  5. Sunzer

    Sunzer Member

    Joined:
    17 May 2008
    Messages:
    29
    Likes Received:
    9
    Reputations:
    2
    PS Где кнопка редактирования поста?
     
  6. [n]-c0der

    [n]-c0der Member

    Joined:
    3 Feb 2009
    Messages:
    83
    Likes Received:
    24
    Reputations:
    -1
    Сбоку. Справа.
    тут​
     
  7. Sunzer

    Sunzer Member

    Joined:
    17 May 2008
    Messages:
    29
    Likes Received:
    9
    Reputations:
    2
    http://s47.radikal.ru/i117/0907/f6/1844882f2b2e.png
    Где ?
     
  8. [n]-c0der

    [n]-c0der Member

    Joined:
    3 Feb 2009
    Messages:
    83
    Likes Received:
    24
    Reputations:
    -1
    Браузер свой сожги...
     
    #8 [n]-c0der, 3 Jul 2009
    Last edited: 3 Jul 2009
  9. ex3me

    ex3me Member

    Joined:
    7 Jan 2009
    Messages:
    0
    Likes Received:
    63
    Reputations:
    0
    :D:D:D браузер просто на собственном двигле
     
Loading...