|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Результаты опроса: как вы ловите API функции? | |||
не ловлю | 2 | 50.00% | |
dll'кой | 1 | 25.00% | |
руками | 1 | 25.00% | |
прямой записью | 0 | 0% | |
Голосовавшие: 4. Вы ещё не голосовали в этом опросе |
|
Опции темы | Поиск в этой теме |
28.04.2010, 20:32 | #1 |
Пользователь
Регистрация: 18.04.2010
Сообщений: 24
|
расшифровать начальный код API
затираю начальный код функции glColor4f push-ret'ом на функцию my_proc
my_proc: 1. выполняет мой код 2. восстанавливает начальный код glColor4f 3. вызывает glColor4f с её родными параметрами 4. затирает начальный код glColor4f push-ret'ом на функцию my_proc таким образом каждый вызов glColor4f будет сопровождаться выполнением моего (полезного)кода (пункт 1) при этом всём проявляется значительная потеря производительности что неможет быть связано с п.2 и п.4 так как в них используются только mov'ы(а не ReadProcessMemory(тормоза жуткие) и т.д), регистры сохраняю и восстанавливаю в пунктах 1,2,4 я знаю что затирать нач.код апей опасно, так как могу чегото повредить, поэтому решил расшиффровать её нач.код : Hex 64 A1 18 00 00 00 FF A0 20 08 00 00 64 A1 18 00 00 00 помогите пожалуста: Последний раз редактировалось ассемблер123; 28.04.2010 в 21:20. Причина: байты начиная с 7-го вначале написал неправильно |
28.04.2010, 20:40 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,695
|
Дизассемблер вам в руки...
|
28.04.2010, 20:44 | #3 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
А дизассемблировать не пробовали?
Код:
IDA Pro Freeware
"Тяжело в учении, легко в бою" - А.В. Суворов
Последний раз редактировалось Ivan_32; 28.04.2010 в 20:47. |
28.04.2010, 20:47 | #4 |
Пользователь
Регистрация: 18.04.2010
Сообщений: 24
|
я нашёл
glColor4f ========= :19CC197C 64A118000000 mov eax, dword fs:[00000018] :19CC1982 FFA020080000 jmp dword[eax+00000820] я так понял здесь ничего критичного не затирается? Последний раз редактировалось ассемблер123; 28.04.2010 в 20:51. |
28.04.2010, 20:52 | #5 | |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
Насколько я понял из гугла FS указывет на некую структуру - TEB.
Цитата:
SomeProc: pushad call MySomeProc popad bla bla bla То что стек важен, думаю и так понятно.
"Тяжело в учении, легко в бою" - А.В. Суворов
Последний раз редактировалось Ivan_32; 28.04.2010 в 20:57. |
|
28.04.2010, 21:02 | #6 |
Пользователь
Регистрация: 18.04.2010
Сообщений: 24
|
со стеком всё правильно, а если даю повод то стэку кранты сразу(программа вылетает) и регистры pushad popad где их изменяю
короче здесь без магии не обошлось пункт 2 и пункт 4 занимают слишком много тактов процессора поэтому и тормоза хотя и состоят из нескольких mov'ов, поэтому я зделал по другому : записал первые 12 байт начала апи в буффер и вызываю буффер после выполнения моего (полезного)кода теперь fps вообще не падает!!! Последний раз редактировалось Stilet; 29.04.2010 в 11:23. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[Delphi] Вычислить расположение и начальный кластер заданного каталога на диске. | KrL^^ | Помощь студентам | 3 | 22.04.2010 20:12 |
расшифровать виженера!!! | Anenya.K | Помощь студентам | 4 | 06.03.2010 13:09 |
Расшифровать цикл | Golovastik | Общие вопросы C/C++ | 4 | 02.09.2009 23:12 |
Неработает код для перехвата API-функции в Vista 64bit | artemvyrtosu | Win Api | 0 | 30.06.2009 18:31 |
Начальный уровень C++ | Valento | Свободное общение | 3 | 15.03.2009 22:27 |