Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 15:56   #1
ассемблер123
Пользователь
 
Регистрация: 18.04.2010
Сообщений: 24
По умолчанию перехват API функций

нужно подменить начальный код api функции не на:

push offset myproc
ret (работает как jmp myproc)

а на чтонибудь работающее как call myproc (чтоб api функция могла продолжить свою работу)


или нужно будет восстанавливать затёртые мною байты и заново её вызывать?

Последний раз редактировалось ассемблер123; 22.04.2010 в 16:13.
ассемблер123 вне форума Ответить с цитированием
Старый 22.04.2010, 16:23   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Зависит от ваших целей. Если хотите, чтобы вызывающие эту апи функцию проги работали нормально и не реализуете функциональность этой апи, то восстанавливать нужно.
p51x вне форума Ответить с цитированием
Старый 22.04.2010, 16:25   #3
ассемблер123
Пользователь
 
Регистрация: 18.04.2010
Сообщений: 24
По умолчанию

я имел в виду нужно:

перехватить api и в зависимости от её аргументов разрешить или не разрешить её выполнение
ассемблер123 вне форума Ответить с цитированием
Старый 22.04.2010, 16:26   #4
ассемблер123
Пользователь
 
Регистрация: 18.04.2010
Сообщений: 24
По умолчанию

второй способ работает, кому интересно

есть окно которое бипает двумя разными звуками
и если запустить intercept.exe один из них будет отфильтровываться
Вложения
Тип файла: rar rar.rar (1.9 Кб, 18 просмотров)

Последний раз редактировалось ассемблер123; 22.04.2010 в 17:09.
ассемблер123 вне форума Ответить с цитированием
Старый 29.04.2010, 11:53   #5
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

ну и что тут такого сложного?
да, перехватывается функция.. ну просто аццки паливно перехватывается причем - любое нормальное средство личной гигиены не особо любит всяки "ВрайтыМемыри"
если интересна тема можем попереписываться - мой ойсыкю 585999274
или можешь почитать есчо вот туто хорошо написано на енту тему
http://wasm.ru/article.php?article=green2red03
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Старый 29.04.2010, 11:55   #6
ассемблер123
Пользователь
 
Регистрация: 18.04.2010
Сообщений: 24
По умолчанию

я уже разобрался и уже давно не применяю ReadProcessMemory и т.д так как они очень медленные
ассемблер123 вне форума Ответить с цитированием
Старый 29.04.2010, 12:00   #7
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

при перехвате функций не думаю что это создает очень уж большую проблему...
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Старый 29.04.2010, 12:02   #8
ассемблер123
Пользователь
 
Регистрация: 18.04.2010
Сообщений: 24
По умолчанию

Цитата:
Сообщение от yuran666666 Посмотреть сообщение
при перехвате функций не думаю что это создает очень уж большую проблему...
а если апя вызывается очень часто к примеру 1000 раз в сек тормоза жуткие возникают
ассемблер123 вне форума Ответить с цитированием
Старый 29.04.2010, 12:07   #9
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

а зачем с такой частотой писать в процесс(-ы)?
ну есть в системе процессов энное количество (уж никак не тысча ) - бабам позаписал тудым сюдым чего надо и готово... количество записываемых байтов в выделенную в чужом процессе памать может быть довольно большим какбе...
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Старый 29.04.2010, 12:13   #10
ассемблер123
Пользователь
 
Регистрация: 18.04.2010
Сообщений: 24
По умолчанию

всё что я написал не относится к тому примеру с двумя окнами (то просто демонстрация идеи)
я имел в виду что только в одном процессе тыща перехватов в сек, ладно я разобрался, это у меня алгоритм не очень был,

я в своей функции:
убирал перехват на апю
вызывал апю с нужными параметрами
и устанавливал перехват на апю

получалось очень много хуков унхуков, сейчас я делаю по другому :

один раз хукну и дальше всё в моих руках

почему я унхукал и хукал при каждом перехвате а не один раз ? - потому что это наиболее безопасный метод, но наиболее тормозной (даже если применять чистые mov и т.д)

Последний раз редактировалось ассемблер123; 29.04.2010 в 12:32.
ассемблер123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Внедрение DLL и перехват API-функций Doom_Rooster Win Api 4 01.04.2010 03:37
Перехват функций 123321 Общие вопросы C/C++ 5 15.02.2009 10:54
обновление в блоге - Перехват API функций. Основы Pblog Обсуждение статей 0 20.01.2009 10:40
API перехват Irat Помощь студентам 13 11.02.2008 12:04
Перехват API функций satana Win Api 4 21.08.2007 20:12