Посл.ответ |
Сообщение |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 07 декабря 2011 21:16 · Личное сообщение · #1
Есть ли какие то методы или техники,перехвата функций? Универсальные как сплайсинг.Но ПОТОКОБЕЗОПАСНЫЕ.
| Сообщение посчитали полезным: |
|
Ранг: 127.3 (ветеран), 44thx Активность: 0.09↘0 Статус: Участник
|
Создано: 07 декабря 2011 21:46 · Поправил: zeppe1in · Личное сообщение · #2
Yotsiвсё зависит от ваших задач и условий, я сплайсил, и всё было ПОТОКОБЕЗОПАСНО)
----- zzz | Сообщение посчитали полезным: |
Ранг: 301.4 (мудрец), 194thx Активность: 0.17↘0.01 Статус: Участник
|
Создано: 07 декабря 2011 21:59 · Поправил: Veliant · Личное сообщение · #3
Использовать например InterlockedExchange при патче или lock rep movsb
| Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 07 декабря 2011 22:00 · Личное сообщение · #4
У меня спецефическая задача - нада перехватывать начало создания потока ,и его завершение до деинициализации лоадером.
| Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 07 декабря 2011 22:12 · Личное сообщение · #5
Veliant пишет: lock rep movsbProtected Mode Exceptions: ... #UD If the LOCK prefix is used. З.Ы. InterlockedExchange64 есть ещё, 8 байтов должно хватить.
| Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 08 декабря 2011 00:16 · Поправил: Yotsi · Личное сообщение · #6
Archer пишет: З.Ы. InterlockedExchange64 есть ещё, 8 байтов должно хватить. А так что б еще и на win2k работало возможно?
| Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 08 декабря 2011 12:13 · Личное сообщение · #7
А чем винда то смущает, если оно при возможности на интринзиках делается. Я не проверял, но полагаю, что на CMPXCHG8B.
| Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 10 декабря 2011 21:07 · Поправил: Yotsi · Личное сообщение · #8
Что то я непонимаю ,каким образом CMPXCHG8B может помочь в таком случае
Когда любой поток в момент выполнения кода между А и Б.Может вызвать оригинальную функцию.
| Сообщение посчитали полезным: |
Ранг: 301.4 (мудрец), 194thx Активность: 0.17↘0.01 Статус: Участник
|
Создано: 10 декабря 2011 22:37 · Поправил: Veliant · Личное сообщение · #9
А в чем смысл убирать хук, выполнять и ставить на место? Обычно для этого и воруют команды или имея в наличии оригинальный адрес, обращаемся непосредственно через него. Все кроме нас при этом будут ходить через хук
| Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 10 декабря 2011 23:26 · Личное сообщение · #10
А как тогда оригинальную ф-цию вызывать,если первые 5 байт "пропатчены"?
| Сообщение посчитали полезным: |
Ранг: 527.7 (!), 381thx Активность: 0.16↘0.09 Статус: Участник Победитель турнира 2010
|
Создано: 10 декабря 2011 23:30 · Поправил: OKOB · Личное сообщение · #11
Yotsi пишет: А как тогда оригинальную ф-цию вызывать,если первые 5 байт "пропатчены"? у себя в теле хука краденые байты исполнять и передовать управление на остальное тело функции. Только не 5, а от пяти кратно длине команды.
----- 127.0.0.1, sweet 127.0.0.1 | Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 11 декабря 2011 03:09 · Поправил: Yotsi · Личное сообщение · #12
Что то я опять до конца непонимаю Нада из оригинальных 5 байт сформировать "шеллкод" с джампом на телом функции,которое находиться после той 5 байтной заглушки?
| Сообщение посчитали полезным: |
Ранг: 301.4 (мудрец), 194thx Активность: 0.17↘0.01 Статус: Участник
|
Создано: 11 декабря 2011 10:01 · Поправил: Veliant · Личное сообщение · #13
Копируешь 5 байт из оригинального кода. Если последние байты попадают на середину команды, то копируешь еще несколько, чтоб было выровнено на команду. Для этого обычно используется дизассемблер длин. После них у себя в буфере генерируешь jmp в оригинальный код. Вот собственно и все
| Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 11 декабря 2011 10:03 · Личное сообщение · #14
Почитал бы статьи лучше, как хук делается, а? Было: 1 байт: push ebp 2 байта: mov ebp,esp другие_команды_на_Н_байтов func_next: ... Стало: 5 байтов: jmp/call allocked_mem возможно_пара_байтов_от_старых_инструкций func_next: ... allocked_mem (сначала все затёртые инструкции, потом переход обратно): 1 байт: push ebp 2 байта: mov ebp,esp другие_команды_которые_затёрты_5_байтами_перехода jmp func_next
| Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 11 декабря 2011 15:46 · Личное сообщение · #15
Все что мне удавалось найти было с восстановлением тех 5 байт
| Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 11 декабря 2011 23:25 · Личное сообщение · #16
То ли у меня адрес посчитать не получаеться,то ли еще что то
| Сообщение посчитали полезным: |
Ранг: 162.4 (ветеран), 11thx Активность: 0.06↘0 Статус: Участник
|
Создано: 12 декабря 2011 12:31 · Поправил: SWR · Личное сообщение · #17
я для записи использовал mmx регистр (сразу 8 байт писал)
| Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 12 декабря 2011 23:49 · Личное сообщение · #18
SWR пишет: я для записи использовал mmx регистр (сразу 8 байт писал) Записи чего?Адреса для джампа?
| Сообщение посчитали полезным: |
Ранг: 162.4 (ветеран), 11thx Активность: 0.06↘0 Статус: Участник
|
Создано: 13 декабря 2011 13:06 · Личное сообщение · #19
всей инструкции. +остаток из оригинала.
| Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 14 декабря 2011 00:28 · Личное сообщение · #20
Что то я совсем запуталься(( Как назад прыгнуть то
| Сообщение посчитали полезным: |
Ранг: 301.4 (мудрец), 194thx Активность: 0.17↘0.01 Статус: Участник
|
Создано: 14 декабря 2011 08:58 · Личное сообщение · #21
заменяешь на
в своем буфере
| Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 14 декабря 2011 12:58 · Поправил: Yotsi · Личное сообщение · #22
Есть не условный а абсолютный джамп?Какой его опкод?
| Сообщение посчитали полезным: |
Ранг: 793.4 (! !), 568thx Активность: 0.74↘0 Статус: Участник Шаман
|
Создано: 14 декабря 2011 13:10 · Личное сообщение · #23
Yotsi пишет: Есть не условный а абсолютный джамп? Есть Yotsi пишет: Какой его опкод? SHORT: EB LONG: E9
----- Yann Tiersen best and do not fuck | Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 14 декабря 2011 15:28 · Личное сообщение · #24
Уточню вопрос - если такой вид джампа когда для перехода указываеться четко определенный адрес а не разница между адресами?
| Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 14 декабря 2011 16:06 · Личное сообщение · #25
Простого перехода нет, можно аналоги делать, типа push imm32; ret А вообще почитал бы уже ман, поотлаживал свой софт, что там не работает, и разобрался, чем про каждый опкод спрашивать.
| Сообщение посчитали полезным: tomac, GoldenJoe |
Ранг: 50.0 (постоянный), 31thx Активность: 0.09↗0.1 Статус: Участник
|
Создано: 14 декабря 2011 19:46 · Личное сообщение · #26
Yotsi пишет: Уточню вопрос - если такой вид джампа когда для перехода указываеться четко определенный адрес а не разница между адресами? Переход есть, опкод EA, правда это дальний переход. Впрочем ничто не мешает использовать в качестве целевого селектора тот же селектор, что и текущий. Тогда вся разница между ближиним и дальним переходом будет только в стеке.
| Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 18 декабря 2011 21:19 · Поправил: Yotsi · Личное сообщение · #27
У кого нибудь есть версия детуров посвежее чем здесь http://pastebin.com/RCJ896TM ? ЗЫ: я правильно понимаю что детуры используют выше описанную технику с выполнением затертого кода и прыжком ы тело ф-ции?
| Сообщение посчитали полезным: |