> 5) на мой вопрос про соглашение stdcall ты сам ответил, что > должны сохраняться esi, edi, ebx, edx > так что нужно их сохранять и восстанавливать > а уж это сделать не на чистом асме не получится
это делает компиллер.
Вставить код прописывающий обратно код заглушки не проблема :))), я просто показал "сырец" .. минимум того что нужно... Код абсолютно рабочий и универсальный.. насчет извлечения параметров - ты прав, твой метод наверное лучше...
Вот оно, свершилось! После долгих и продолжительных родов с Божьей помощью и помощью умелых акушеров ;) удалось таки произвести на свет красивую(вроде бы!), универсальную и маленькую процедурку перехвата вызовов API:
1) всё-таки способ доступа к аргументам который я предложил более универсальный:
void Stub(unsigned arg)
{
unsigned* arg1 = &arg;
// unsigned* arg_i = arg1+i;
мало ли чего там компилятор навставляет вначале функции
а так компилятор сам всегда пропишет правильный адрес
2) а ты пробовал запустить точно то, что ты тут написал ?
может быть сказывается бессонная ночь и я просто не въезжаю в код :)
но по-моему некоторые вещи немного странные
> mov eax,[ebp] > mov eax,dwRetAddr > lea eax,[ebp+8]
3) в такой реализации ловушка будет вызвана только один раз,
а у меня ловушка снималась только когда нужно её снять
4) вот высплюсь и попробую родить ловушку на асме, как положено :)
тогда уж точно она будет работать под разными компиляторами и с разными функциями
если кто-нить до меня не родит :)
Или я тупой или исчо что-то...22.10.01 16:07 Автор: Heromantor Статус: Незарегистрированный пользователь
5) на мой вопрос про соглашение stdcall ты сам ответил, что должны сохраняться esi, edi, ebx, edx
так что нужно их сохранять и восстанавливать
а уж это сделать не на чистом асме не получится
Перехват API - окончание22.10.01 23:24 Автор: NeuronViking Статус: Незарегистрированный пользователь
> 5) на мой вопрос про соглашение stdcall ты сам ответил, что > должны сохраняться esi, edi, ebx, edx > так что нужно их сохранять и восстанавливать > а уж это сделать не на чистом асме не получится
это делает компиллер.
Вставить код прописывающий обратно код заглушки не проблема :))), я просто показал "сырец" .. минимум того что нужно... Код абсолютно рабочий и универсальный.. насчет извлечения параметров - ты прав, твой метод наверное лучше...