Сейчас на форуме: _MBK_, tyns777, UniSoft (+11 невидимых)

 eXeL@B —› Программирование —› Как сделать неперехватываемый вызов?
Посл.ответ Сообщение

Ранг: 20.4 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 27 июля 2012 07:09
· Личное сообщение · #1

Вообщем в жертве стоят хуки на некоторые функции из ntdll. Как сделать так вызов что бы обойти эти хуки?
Слышал про копию ntdll в каждом процессе, мб туда перенаправлять? Или хранить аналог у себя в коде? Вообщем у кого какие идею слушаю. Приму любую помощь.



Ранг: 145.8 (ветеран), 191thx
Активность: 0.140.36
Статус: Участник

Создано: 27 июля 2012 07:39
· Личное сообщение · #2

Вызвать напрямую через sysenter/int2e. Победа.




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 27 июля 2012 07:39 · Поправил: ZaZa
· Личное сообщение · #3

Может проверять начало процедуры/функций и если не совпадает с оригинальной точкой входа в процедуру/функцию, тада менять на оригинальную, а после вызова возвращать все назад?

-----
One death is a tragedy, one million is a statistic.




Ранг: 20.4 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 27 июля 2012 08:54
· Личное сообщение · #4

Code:
  1. void __declspec(naked) FastSystemCall()
  2. {
  3.          __asm   MOV               EDX, ESP
  4.          __asm   __emit     0x0F
  5.          __asm   __emit     0x34
  6.          // возврат будет в ntdll.KiFastSystemCallRet, там находится только RETN и мы как раз выйдем отсюда в SysenterZwReadFile
  7. }
  8.  
  9. void __declspec(naked) SysenterZwReadFile(...)
  10. {
  11.     __asm         MOV         EAX, 0xB7
  12.     __asm         CALL    FastSystemCall
  13.     __asm         RETN
  14. }
  15.  
  16. void __declspec(naked) IntSystemCall()
  17. {
  18.          __asm   LEA               EDX, DWORD PTR SS:[ESP+0x08]
  19.     __asm         INT         0x2E
  20.          __asm   RET
  21. }
  22.  
  23. void __declspec(naked) Int2eZwReadFile(...)
  24. {
  25.          __asm   MOV               EAX, 0xB7
  26.          __asm   CALL       IntSystemCall
  27.          __asm   RETN
  28. }

Странно но у меня почему то неработает, при трассировке команды работают как NOP.



Ранг: 20.4 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 27 июля 2012 08:55
· Личное сообщение · #5

ZaZa пишет:
Может проверять начало процедуры/функций и если не совпадает с оригинальной точкой входа в процедуру/функцию, тада менять на оригинальную, а после вызова возвращать все назад?

Это мне и нужно как раз обойти.




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 27 июля 2012 09:19
· Личное сообщение · #6

Видимо я что-то не понимаю...
Хуки чьи? Твои или чужой программы?
Если чужой проги, тада может восстановить оригинальную точку входа (отменить хук программы), сделать вызов, вернуть хук на место... Может так понятнее??

-----
One death is a tragedy, one million is a statistic.




Ранг: 20.4 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 27 июля 2012 11:16
· Личное сообщение · #7

Стоят чужие хуки, которые чекаются, но я уже разобрался, спасибо за наводку.


 eXeL@B —› Программирование —› Как сделать неперехватываемый вызов?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати