| Посл.ответ | 
Сообщение | 
 Ранг: 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 ? ЗЫ: я правильно понимаю что детуры используют выше описанную технику с выполнением затертого кода и прыжком ы тело ф-ции?
   | Сообщение посчитали полезным:  |