Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Проверка установки хука и бряков на API. (https://forum.antichat.xyz/showthread.php?t=128029)

Sunzer 02.07.2009 19:18

Проверка установки хука и бряков на API.
 
Делать было нечего вот написал код. Полностью независимый. Достаточно поставить на таймер его вызов.
Сам ищет таблицу импорта и проверяет первые байты всех импортируемых API.
В случае если будет установлен программный бряк на API или JMP в начале(хук). Программа падает.
Знаю что от крякера мало спасет делал просто так) Сильно ногами не бить.

Код:

{ Код проверки установки програмного бряка на всех 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;


slesh 02.07.2009 19:52

1) Обход запросто:
push XXXXXXXX
ret

или
mov reg,XXXXXXXX
jmp/call reg

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

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

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

slesh 02.07.2009 19:54

P.S. Если в проге будет установлен обработчик SEH или данные будут проверять внутри конструкции try except то смысла от этого будет мало )

Sunzer 02.07.2009 21:20

P.S. Если в проге будет установлен обработчик SEH или данные будут проверять внутри конструкции try except то смысла от этого будет мало )

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

Sunzer 02.07.2009 21:24

PS Где кнопка редактирования поста?

[n]-c0der 02.07.2009 23:23

Цитата:

Сообщение от Sunzer
PS Где кнопка редактирования поста?

Сбоку. Справа.
тут

Sunzer 02.07.2009 23:56

http://s47.radikal.ru/i117/0907/f6/1844882f2b2e.png
Где ?

[n]-c0der 03.07.2009 00:30

Браузер свой сожги...

ex3me 04.07.2009 13:37

:D:D:D браузер просто на собственном двигле


Время: 21:18