|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.12.2015, 11:39 | #1 |
Пользователь
Регистрация: 06.09.2015
Сообщений: 31
|
Расчет адреса. Вставка инструкции.
Доброго дня, подскажите как правильно реализовать код:
Код:
Можно пример перехвата в 64 битной системе на делфи. |
06.12.2015, 12:25 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Рекомендую следующую статью: http://ms-rem.narod.ru/hook/ApiHook1/apihook.htm
Только сильно не увлекайся )
I'm learning to live...
|
06.12.2015, 21:09 | #3 | |
Пользователь
Регистрация: 06.09.2015
Сообщений: 31
|
Цитата:
Размер прыжка для 32 бит расчитал. Код:
Код:
Код:
потому что я так понимаю в 64 битной системе не получиться прыгнуть по адресу через jmp? только через подобную конструкцию. http://www.programmersforum.ru/showthread.php?t=110979 Вопрос как получить OpCode команды самой втсавки, я хочу понять не просто данный пример, а именно где и как брать эти коды для 64 битных процессоров и 32 битных как их получать. Пробовал просто писать код на ассемблере (вставки в делфи) и смотреть в отладчике что получилось, но не догоняю как написать свой опкод с правильным адресом хотя бы для такой просто конструкции что описал выше. Последний раз редактировалось JPCool; 06.12.2015 в 21:16. |
|
06.12.2015, 21:16 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
А еще лучше скачать МАСМ для 64, с хорошим хелпом.
I'm learning to live...
|
|
06.12.2015, 21:34 | #5 |
Пользователь
Регистрация: 06.09.2015
Сообщений: 31
|
Ок гугл! я понял надо выучить ассемблер ))
А кроме гугл кто не буть понимает может объяснить, сложно говорить с машиной если ты не знаешь ее язык ))... Последний раз редактировалось JPCool; 06.12.2015 в 22:09. |
07.12.2015, 03:08 | #6 |
Пользователь
Регистрация: 06.09.2015
Сообщений: 31
|
Итак немного подучив ассемблер получилось реализовать что описывал выше, появился ряд вопросов.
В Fasm собрал код: Код:
Код:
Про расчет прыжка, в прошлом примере кода я рассчитывал размер прыжка таким методом (Функция Перехватчика)-(Функция Оригинал)-(Размер Вставки) по итогу я получал отрицательное смешение и вызывал jmp по нему. опкодом $E8 я так понимаю прыжок происходил по значению смешения, а сейчас когда я делаю FF E0 этот прыжок происходит именно по адресу лежащему в rax так как JMP может работать в разных режимах? (Не догоняю этот момент). И второй момент, хотелось бы перехватывать функции методом хотпачь, вставкой короткого и длинного прыжка так как функции от (микрософт) имеют nop перед их началом туда можно записать прыжок с адресом DWORD а в начало короткий прыжок с адресом на длинный прыжок. Собственно вопрос про память, как мне выделить память рядом с перехватываемой функции что бы можно было разместить большой прыжок в виде mov rax, qword_jump jmp rax и сделать перехват в 3 прыжка. что даст возможность работы с много поточностью так как не будет необходимости перезаписи jmp... Или есть более простые варианты работы с 64 бит? (IDA 64 разобрала c:\windows\system32\user32.dll в win 8 64 bit и количество nop не изменилось) работа через RAX тоже не есть хорошо я верно понимаю? Какой функцией выделить, и как правильно посчитать самый ближайший и свободный адрес? Последний раз редактировалось JPCool; 07.12.2015 в 03:10. |
07.12.2015, 03:08 | #7 |
Пользователь
Регистрация: 06.09.2015
Сообщений: 31
|
Код для работы с 32 битным перехватом методом хотпачь.
Код:
Последний раз редактировалось JPCool; 07.12.2015 в 03:19. |
07.12.2015, 05:26 | #8 |
Форумчанин
Регистрация: 29.10.2015
Сообщений: 273
|
|
07.12.2015, 09:51 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Почитай про команду JMP подробнее.
I'm learning to live...
|
|
07.12.2015, 18:04 | #10 | |
Пользователь
Регистрация: 06.09.2015
Сообщений: 31
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
расшифровка инструкции | alinash | HTML и CSS | 4 | 22.06.2015 20:31 |
Си инструкции | Praud | Помощь студентам | 7 | 01.03.2013 16:13 |
Инструкции IL | stenl1 | C# (си шарп) | 6 | 05.12.2011 22:39 |
Известны фамилии,адреса и телефоны 25-ти человек,Найти фамилии и адреса людей,чей телефон начинается с цифры 3. Расмотреть два слу | salomon93 | Паскаль, Turbo Pascal, PascalABC.NET | 11 | 01.12.2011 23:36 |