unixoid > Aha )) В таком случае делается проще.. Сохраняются сигнатуры нужных функций для 2k и XP, соответственно по ним проверяется соответсвие функции заранее известному коду, а также место для безопасного патча будет заранее известно. А также можно поставить хук через таблицу импорта, всё зависит от того на какие API ставится хук.
Asterix Я же Уже писал,что через таблицу не идет - нажна 100% вероятность...А те функции,что я буду хучить ооочень изредка вызываются через эту таблицу..они даже не всегда вызываются даже через LoadLibraryA/GetProcAddress...и на прямую некоторые,те call _addr_... Они не всегда одинаковы для разных версий 2к\хр...или одинаковы? или мне брать каждую версию винды и под Идой\софтайсом смотреть что там те функции из себя представляют? ) Смотрел тот detours... спасибо...там та же идея,те двычисляем длинну инструкции и все,что более 5и байт суем себе в буффер или еще кудато... Так и сделаю..дасм до ума доведу и все
unixoid > А те функции,что я буду хучить ооочень изредка вызываются через эту таблицу Какие это функции? > Они не всегда одинаковы для разных версий 2к\хр...или одинаковы? Думаю в большинстве случаев одинаковы для разных версий одной винды, будь то 2k или XP, между 2k и XP будут различия. Сколько тебе функций нужно 50? 100? Если не более 10-и то можно и в дизассемблере составить для каждой сигнатуру.
В том то и дело,что прога должна работать и на 2к,и на хр..и на нт4... Функции - на пример NtQuerySystemInformation LordPE вызывает не через таблу импортов... Или вирь один,не знаю как называется, гдет в рунете поймал..могу выложить сюда,если интересно...он адреса апи сам ищет,не используя таблов импорта и GetProcAddress... Я пишу либу,которая будет хучить и пременять ее буду х3 где...и ессно функций может понадобится разное колличество..
> Я пишу либу Так бы сразу и говорил, тогда юзай дизасм, а вообще есть готовые либы API Hooks by EliCZ или вот например http://www.gold-software.com/WindowsAPIhookingSDK-file4312.html
prosto eti liby uzhe vsem izvestnye i WinAPI oni ispol`zuyut....a moya liba budet tol`ko preryvaniya kernel`a ispol`zovat`... spasibo,posmotryu sam pishu...
unixoid > moya liba budet tol`ko preryvaniya kernel`a ispol`zovat Тогда можно хучить функции в импорте kernel32, например Native API, изящно через таблицу иморта.
Нужно,чтобы либа умела хучить любую функцию....И сама не использовала винапи функций... Типа ей(проце моей) даешь hProcess,hModule,hNameOfFunctionToHook,hMyObrabotchik И она возвращала адрес той функции,которую я хукнул или если хук не удался - возвратим 0. Вобщем дасм и эта вся бадяга уже готова... Большое спасибо всем!
Если кому надо, могу дать код определения размера процедуры на delphi, писал его для своей Api hook библиотеки.