Сейчас на форуме: _MBK_, Adler, asfa, bartolomeo (+9 невидимых)

 eXeL@B —› Вопросы новичков —› Как найти обработчик прерывания?
Посл.ответ Сообщение

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

Создано: 29 сентября 2012 13:35 · Поправил: sooqua
· Личное сообщение · #1

Программа хукнула прерывание "INT 2B".
При выполнении этого опкода, в программе начинает выполняться функция.
Как ёё найти?
Вот скрин, делал для одного человека, который сказал что вектор прерывания должен находится по адресу 000000AC:
http://s002.radikal.ru/i200/1209/80/c6b9115ddc8f.jpg

П.С. После установки программы она не требует перезагрузки (кажется, когда драйвер устанавливаешь комп надо перезагрузить). А значит она не могла влезть в ring0?



Ранг: 65.3 (постоянный), 10thx
Активность: 0.020
Статус: Участник

Создано: 29 сентября 2012 14:59 · Поправил: tomac
· Личное сообщение · #2

Расположение таблицы прерываний в памяти определяется регистром IDTR. В моём понимании, из юзермода его прочитать не дадут.
Записать в IDT из юзермода не дадут точно, так что либо kernel-mode драйвер, либо нет хука. Перезагрузка для загрузки ядерного драйвера, вроде, не необходима.

По адресу 0xAC адрес обработчика прерываний будет только в очень старых процессорах.

В микропроцессорах 8086/80186 таблица векторов прерываний расположена в первом килобайте памяти начиная с адреса 0000:0000 и содержит 256 векторов прерываний в формате сегмент:смещение. Начиная с процессора 80286, адрес в физической памяти и размер таблицы прерываний определяется 48-битным регистром IDTR.

Да, и еще. Память по тому адресу, куда происходит переход по int 2bh, скорее всего, из юзермода прочитать тоже не дадут.

| Сообщение посчитали полезным: sooqua

Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 29 сентября 2012 15:15
· Личное сообщение · #3

Вариант А: программа установила драйвер, который перехватывает int 2b - ковыряй драйвер
Вариант Б: программа установила SEH/VEH обработчик, и по исключению на int 2b переходит выполняться на обработчик. В этом случае смотри адрес SEH в TEB (сегмент FS, последняя из секций в карте памяти), или ставить бряк на AddVectoredExceptionHandler и получать адрес обработчика VEH

| Сообщение посчитали полезным: sooqua


Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 29 сентября 2012 15:40
· Личное сообщение · #4

sooqua, а вас не напрягло, что данное прерываение используется в user32.dll? Что за программа такая, что в целостность системы лезет?

В любом случае ставишь ядерный отладчик(syser тот же самый или WinDbg), читаешь таблицу idt, и смотришь в каком модуле находится обработчик. Потом ковыряешь сам модуль уже с комфортом в IDA + виртуалка.



Ранг: 11.4 (новичок), 8thx
Активность: 0.010
Статус: Участник

Создано: 29 сентября 2012 15:56
· Личное сообщение · #5

>Dart Sergius

стим клиент ето




Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 29 сентября 2012 16:10
· Личное сообщение · #6

Johnny Mnemonic, ну тогда ядерный отладчик с виртуалкой и IDA должны помочь.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 29 сентября 2012 21:35 · Поправил: ARCHANGEL
· Личное сообщение · #7

О господи, какой кошмар. Давайте по-порядку.

sooqua пишет:
Программа хукнула прерывание "INT 2B".

Может, и хукнула. А как вы это определили? Хотя б какой-то детектор руткитов запустили б, или бы в Syser вбили бы idt.

При выполнении этого опкода, в программе начинает выполняться функция.
Какая-то ересь. Когда в коде встречается любоя инструкция, та же int 1, "в программе", как вы выражаетесь, по-любому что-то начинает выполняться, контекст ведь не переключается. Так что предложение это смысловой нагрузки не несёт никакой.

Вот скрин, делал для одного человека, который сказал что вектор прерывания должен находится по адресу 000000AC:

И скрин тоже смысловой нагрузки не несёт. Непонятно, что это за место в недрах user32.dll. Ни отладочных символов, ни меток, ни как вы туда пришли. А то, что там ваша инструкция любимая, так это ещё ничего не значит. Например:

Code:
  1. .text:7C90EAD0 _KiUserCallbackDispatcher@12 proc near
  2. .text:7C90EAD0      add     esp, 4
  3. .text:7C90EAD3      pop     edx              ; Это индекс
  4. .text:7C90EAD4      mov     eax, large fs:18h
  5. .text:7C90EADA      mov     eax, [eax+30h]     ; Указатель на PEB
  6. .text:7C90EADD      mov     eax, [eax+2Ch]     ; На таблицу
  7. .text:7C90EAE0      call    dword ptr [eax+edx*4]; Сам вызов
  8. .text:7C90EAE3      xor     ecx, ecx
  9. .text:7C90EAE5      xor     edx, edx
  10. .text:7C90EAE7      int     2Bh              ; Возврат в ядро
  11. .text:7C90EAE9      int     3
  12. .text:7C90EAEA      mov     edi, edi
  13. .text:7C90EAEA _KiUserCallbackDispatcher@12 endp


Тоже она, но ведь никто это не считает плохим тоном, правда?

После установки программы она не требует перезагрузки (кажется, когда драйвер устанавливаешь комп надо перезагрузить). А значит она не могла влезть в ring0?

Не надо ничего перезагружать, как только ZwLoadDriver вернула управление, значит DriverEntry вернула управление, и если всё прошло успешно, то дровина загружена в память.

tomac пишет:
По адресу 0xAC адрес обработчика прерываний будет только в очень старых процессорах.

Да причём тут старость? Всё зависит от режима работы процессора, а не от его возраста. Про остальное - подтверждаю.

To All
А вообще - стал замечать, что на форум всё чаще приходят люди, которые хотят накодить чит на какую-то игру, притом сами они == NULL, посему предлагаю создать топик с названием типа "Написание читов/ботов", там люди могут оставить заявки, но не так, как это делают сейчас, а по форме в таком виде:
1. Название игры.
2. Размер игры.
3. На чём написана игра.
4. Каков режим игры (Онлайн/оффлайн).
5. Что должен делать чит/бот.
6. Сумма вознаграждения.
7. Желаемые сроки выполнения заказа.

А то так и будем читать, как кому-то что-то там где-то сказали, и он пошёл кодить.

-----
Stuck to the plan, always think that we would stand up, never ran.


| Сообщение посчитали полезным: Flasher-11, plutos, Vnv, sooqua, MasterSoft


Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 30 сентября 2012 15:58
· Личное сообщение · #8

ARCHANGEL пишет:
посему предлагаю создать топик


в котором будут отвечать, что есть специализированные форумы для ебучих читтеров.

| Сообщение посчитали полезным: hlmadip


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 30 сентября 2012 16:30 · Поправил: ARCHANGEL
· Личное сообщение · #9

Gideon Vi
Да, возможно так и будут отвечать, но это сэкономит массу времени и тем, и другим, т.к. напарываешься иногда на людей, которые оставляют заявки в поиске специалистов по параметрам, а там изначально написано что-то типа такого: "есть программа, в ней есть байт, который надо поправить". А потом выясняется, что программа - это игра, которая весит 16 Гиг, + к ней идёт лоадер, на котором навешан ВМпрот, а вот в лоадере нужно запатчить проверку, т.к. лоадер откуда-то спёрли, но вот где эти заветные байты - заказчик не знает, просто ему кто-то сказал, что с этой игрой этот лоадер будет работать (что далеко не факт), но вот только надо запатчить пару байтов. Так что уж пусть сразу будет видно, что это за заказ.

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 30 сентября 2012 16:44
· Личное сообщение · #10

Вообще-то ARCHANGEL прав, я тоже поддерживаю идею создать отдельный топик.

-----
-=истина где-то рядом=-





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 30 сентября 2012 19:16
· Личное сообщение · #11

Если хочется обсудить-вынесите обсуждение в отдельный топик где-нить в оффтопе.
Что же касается создания топика, и так есть поиск специалистов. Проще там правила подкорректировать, по-моему. Чем создавать ещё точно такой же топик, но для ботов. Да и даже при текущих правилах не так уж там и много запросов, чтобы спросить лишний раз целенаправленно, игра там на 16 гб или нет, если так хочется.


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


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