Сейчас на форуме: tyns777, zds, JustLife, 2nd, morgot (+5 невидимых)

 eXeL@B —› Программирование —› Перехват DeviceIoControl в 64-битной ОС
Посл.ответ Сообщение

Ранг: 49.6 (посетитель), 9thx
Активность: 0.030
Статус: Участник

Создано: 06 июля 2009 16:36 · Поправил: huckfuck
· Личное сообщение · #1

В-общем, мне нужно поменять результат работы DeviceIoControl

В 32-битном kernel32.dll мой инлайн-патчер перехватывает DIC методом сплайсинга
т.е. записывает в начало функции

Code:
  1. push Hook_Addr
  2. ret


Code:
  1. Hook_Addr:
  2. ~
  3. здесь мой код
  4. ~


Мой код чекает dwIoControlCode, если он равен заданному, то выполняет мою функцию и выходит через RET 20h

Но в 64-битном kernel32.dll мало того, что регистры другие (rax и т.п.), и непонятно, как передаются параметры для DIC (через регистры ??), так ещё и выход из функции осуществляется через RET

Таким образом, мой патчер работает только на 32-битных системах

Подскажите, если кто знает, как правильно перехватить DIC, чтобы можно было патчить выходные данные




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

Создано: 06 июля 2009 18:05
· Личное сообщение · #2

Читай и просвещайся, чтоб регистры стали понятными и параметры www.codeproject.com/KB/vista/vista_x64.aspx Когда разберёшься с конвенцией вызова и регистрами, садись писать.



Ранг: 49.6 (посетитель), 9thx
Активность: 0.030
Статус: Участник

Создано: 06 июля 2009 18:31
· Личное сообщение · #3

Archer спасибо за инфу, буду курить



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 06 июля 2009 20:02
· Личное сообщение · #4

msdn.microsoft.com/en-us/library/ms235286.aspx




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 06 июля 2009 20:31
· Личное сообщение · #5

www.microsoft.com/Rus/Msdn/Magazine/2006/05/pietrek_x64.mspx

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




Ранг: 49.6 (посетитель), 9thx
Активность: 0.030
Статус: Участник

Создано: 06 июля 2009 20:43 · Поправил: huckfuck
· Личное сообщение · #6

что-то там как-то все непонятно

чувствую я, что мне терпения не хватит все это освоить

ладно, пускай инлайн-патчер остаётся только для 32-битных осей

Coderess
спасибо, по-русски уже понятней


 eXeL@B —› Программирование —› Перехват DeviceIoControl в 64-битной ОС
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати