Добрый день. Подскажите, максимально простой и рабочий под все перечисленные ОС, метод перехвата API вызова. Надо перехватить BeginPaint и EndPaint только для одного процесса, Моя Dll уже живет в его адрессном пространстве. И скажите, пожалуйста, как на это среагируют антивирусы. Нужно для того чтобы окно отрисовалось на моем HDC, пробовал WM_PRINT и WM_PRINTCLIENT, но не рисуются некоторые состояния окон (напимер перетаскивание элемента в ListView).
Chikanok Обычно BeginPaint() юзается при обработке WM_PAINT. Посмотрите в вашем приложении, это так должно быть. Тогда сабклассинг + трассировка до целевой функции. Можно чтонибудь с apfn попробовать сделать, но это начнётся привязка к версиям.
пожалуй получше сабклассинга будет такого плана код Код (Text): case DLL_PROCESS_ATTACH: { hInstDLL = hinstDLL; hHook = SetWindowsHookEx(WH_GETMESSAGE, HookProc, hInstDLL, GetCurrentThreadId()); }break; и ловишь оконные месиджи в своем процессе
Мне не сабклассинг не хуки не помогут. Мне надо перехватить вызов BeginPaint и EndPaint, скажите есть какой-нибудь метод чтобы он работал в Windows XP/Vista/7 32 и 64 бит?
Chikanok Есть такой отвратительный метод как патч. Запишите туда джамп какойнибудь, мб вам будет достаточно.
А что такого отвратительно в этом методе? Возможны-ли какие-нибудь проблемы в случае разных версии ОС?
Тогда поясните please какие методы скрытны для антивирей? и почему они более скрытны (с jmp конечно ясен хрен, однако, тогда каким образом ставятся хуки, без модификации памяти???)?
Например тотже рку - один клик мышью как все перехваты снимаются, вместе с этим отваливаются все костыли в виде софта, которые испортили кодосекции. featurelles Весьма странный вопрос. Почитайте васм хотябы. Тут я описал множество всяких техник, ни одна не связана с изменением кода. Как такие вопросы могут у вас возникать не понимаю.