Сейчас на форуме: zds (+6 невидимых) |
![]() |
eXeL@B —› Программирование —› либа для сплайсинга в ядре |
Посл.ответ | Сообщение |
|
Создано: 12 декабря 2013 09:28 · Личное сообщение · #1 Всем привет я у вас новенький прошу любить и жаловать значит в юзер моде я юзаю libMinHook как готовое решение для сплайсинга она сама все делает и даже фиксит адреса если перемещает команды в трамплин с относительной адресацией ниже пример как я её использую мой вопрос таков а есть ли готовое решение наподобие libMinHook только для сплайсинга в ядре ? спасибо Code:
![]() |
|
Создано: 12 декабря 2013 10:37 · Личное сообщение · #2 |
|
Создано: 12 декабря 2013 11:31 · Поправил: 87nd85 · Личное сообщение · #3 Archer пишет: Забудь про сплайсинг в х64 ядре, там патчгард. Да и зачем там вообще сплайсинг понадобился? просто у меня в юзермоде стоит хук на NtDeviceIoControlFile который ловит AFD_SEND и AFD_RECV для одной программки в коде берется первый буфер и его длинна хотя предположительно их может быть несколько Code:
хотел хукнуть в драйвере дабы посмотреть в рамках всей системы передается ли несколько буферов и где указывается размер сколько реально вернулось байт для каждого буфера... вот не понятно как узнать размер для AFD_RECV ? ведь как я понимаю там указан размер отданных для заполнения буферов а как узнать размер реально отданных байт для каждого буфера ? сейчас в коде что я привел в первом посте для AFD_RECV перед передачей вызова системе я просто обнуляю буфер и то это срабатывает только потому что я логирую некий текст... а если к примеру бинарные данные то где указано сколько вернулось ? или этот параметр len в структуре он in/out ? тоесть на выходе содержит сколько байт вернулось реально ? да и вообще в личных целях обучения у меня ось 32 битная иногда хочется что нить хукнуть в ядре посмотреть в рамках всей системы за чем то... хотелось бы аналог libminhook для простого сплайсинга только в ядре ![]() |
|
Создано: 12 декабря 2013 11:34 · Личное сообщение · #4 |
|
Создано: 12 декабря 2013 11:59 · Личное сообщение · #5 Если это делать нормально, делай драйвер-фильтр. Если на 1 раз на х86 и только посмотреть, патчи сдт. Про параметры-мсдн в зубы. Никакой сплайсинг в ядре тут не нужен. ![]() |
|
Создано: 12 декабря 2013 13:04 · Поправил: 87nd85 · Личное сообщение · #6 |
|
Создано: 13 декабря 2013 01:32 · Личное сообщение · #7 |
|
Создано: 13 декабря 2013 01:55 · Личное сообщение · #8 87nd85 пишет: есть такой на примете Как вариант Code:
![]() |
|
Создано: 13 декабря 2013 02:10 · Личное сообщение · #9 Code:
На говнокод смахивает.. ![]() |
|
Создано: 13 декабря 2013 02:18 · Личное сообщение · #10 Dr0p пишет: На говнокод смахивает.. Чел спрашивал ( если достаточно развита телепатия ) библиотеку для перехватов, но замкнуло на сплайсинге, качество это уже второе, работает и хрен с ней, да и аверы [url=https://www.virustotal.com/ru/file/5687f14a793392c07bdabea77190f0d66726ac1546a3f1b3d0f60946b97ff818/analysis/1386886212/ ]--> Link <--[/url] для нужд ТС сойдет, учитывая упоминание minhook. ![]() |
|
Создано: 13 декабря 2013 02:39 · Поправил: Dr0p · Личное сообщение · #11 F_a_u_s_t Оно если и работает, то с огромной вероятностью крэша - код тупо перетирается без поправок контекста. Если поток свопнулся то получится синька. А это будет по любому в активном коде. Для такой модификации нужно останавливать ось. Блокировать шедулер не поможет. ![]() |
|
Создано: 13 декабря 2013 03:54 · Личное сообщение · #12 |
|
Создано: 13 декабря 2013 04:01 · Личное сообщение · #13 |
|
Создано: 13 декабря 2013 04:07 · Личное сообщение · #14 |
|
Создано: 13 декабря 2013 04:25 · Личное сообщение · #15 |
|
Создано: 13 декабря 2013 17:01 · Личное сообщение · #16 Системный программист, мальчик молодой, Все хотят засплайсить код с тобой. Ах, если бы ты знал женскую тоску По хуку твоему.. ![]() ![]() |
|
Создано: 13 декабря 2013 22:55 · Личное сообщение · #17 Dr0p пишет: Оно если и работает, то с огромной вероятностью крэша Возможно недавняя бага или качал библиотеку от другого разработчика, ветка не одна. В любом случае 87nd85 пишет: есть ли готовое решение наподобие libMinHook Собственно ответ, а остальное уже проблемы ТС. ![]() |
|
Создано: 14 декабря 2013 03:02 · Личное сообщение · #18 |
|
Создано: 14 декабря 2013 11:30 · Поправил: 87nd85 · Личное сообщение · #19 да ладно вам... вот когда я стану (если стану) таким же матерым как и вы у меня тоже взгляды и интересы поменяются а сейчас мне по большому счету пофиг правильно ли я хукаю или нет мне главное сделать хук и наблюдать передаваемые параметры ![]() да и вообще я могу быть как ужасным занудой и педантом так и раздолбаем так что я не придаю особого значения правильности технологии мне важнее цель в данный момент ;)) ![]() |
|
Создано: 15 декабря 2013 03:10 · Поправил: Dr0p · Личное сообщение · #20 87nd85 Ну так чтобы сделать, надо начать. Во первых понадобится процессы и потоки енумить. Нужно найти PsGetNextProcess() и PsGetNextProcessThread(). Хотя возможно сгодится SystemProcessInformation, но не уверен, там проблемы могут быть типо дедлоков. Нужно на время модификации все процессоры остановить. KeFreezeExecution/KeThawExecution(). 1. Описываем страницу через мдл и мапим. Либо сбрасываем WP. 2. Останавливаем ось. KeFreezeExecution(). 3. Енумим все потоки(PsGetNextProcessThread()), проверяем вхождение Ip каждого потока в модифицируемый код. Если входит, то поточная маршрутизация - фиксим Ip на буфер. 4. Патчим код. 5. KeThawExecution(). Но сразу скажу что мне эта затея не нравится, впрочем как и метод выше. Хотя бы просто потому, что осевой код налету так просто не изменить. Придётся брать костыли. ![]() |
|
Создано: 01 мая 2014 03:06 · Поправил: TheNozza · Личное сообщение · #21 |
|
Создано: 01 мая 2014 07:03 · Личное сообщение · #22 |
|
Создано: 01 мая 2014 07:55 · Личное сообщение · #23 |
|
Создано: 01 мая 2014 09:28 · Личное сообщение · #24 |
![]() |
eXeL@B —› Программирование —› либа для сплайсинга в ядре |
Эта тема закрыта. Ответы больше не принимаются. |