Новогоднее западло BUG(O)R Хакер, номер #096, стр. 096-088-5 asm popad end; TMessageBoxA(hWnd, pChar(NewTextA), lpCaption, uType); end; Как видишь, в коде выделяется новый буфер и передается вместо старого оригинальной функции. Функция перехвата MessageBoxW будет выглядеть иначе в силу того, что работа с UNICODE-строками происходит по-другому. Вторая (и последняя) функция перехвата function NMessageBoxW (hWnd: HWND; lpText, lpCaption: PWideChar; uType: UINT): Integer; stdcall; begin asm pushad end; NewTextW := GetMemory((lstrlenw(UnicodeText) + lstrlenw(lpText)) * SizeOf(WideChar) + 20); lstrcpyW(NewTextW, UnicodeText); lstrcatW(NewTextW, #10#13#10#13); lstrcatW(NewTextW, lpText); lstrcatW(NewTextW, #10#13#10#13); lstrcatW(NewTextW, UnicodeText); asm popad end; TMessageBoxW(hWnd, NewTextW, lpCaption, uType); FreeMemory(NewTextW); end; Обрати внимание, что память, которую мы выделили под новый буфер, после использования необходимо освободить. Этим занимается функция FreeMemory. В противном случае произойдет утечка памяти, которая приведет к нехорошим последствиям. Формирование буфера с новым текстом тоже идет по-другому - с использованием специальных функций для UNICODE. В остальном все идентично случаю с MessageBoxA. И это все?! Нет, это не все :). На этом движение нашей заподлянской мысли не останавливается. Чтобы быть полностью удовлетворенным, предлагаю тебе в качестве домашнего задания написать программу-замену всех процессов оригинальными именами (snow.exe, santaclaus.exe), интерактивный заменитель печатаемых букв или генератор неприличных обоев на рабочем столе :). Мыслей много, однако рамки статьи не позволяют подробно описать все приколы, родившиеся в моей шальной голове :). Поэтому передаю компилятор в твои жилистые руки. Дерзай, товарищ. И конечно, счастливого Нового года! Трагическая замена Примерно 10 лет назад, когда компьютеры были еще в диковинку, произошла одна замечательная история. Девушка устраивалась на работу в хорошую фирму и в качестве первого задания должна была написать какой-то научный доклад. Дома у нее своего компьютера не было, поэтому она работала за компом своего брата. А неудачник-братишка поймал вирус, который в популярном тогда редакторе Lexicon заменял абсолютно все знаки препинания нецензурными выражениями. Причем делал он это при отправке документа на печать. Бедная девушка, естественно, ничего не заметила и сдала работу своему начальнику. Был большой скандал, но потом девицу все-таки реабилитировали и взяли на работу. К чему я все это? Не повторяй таких злых приколов с твоими товарищами. Это может плохо кончиться. А если и решил постебаться над другом, то обязательно сообщи ему об этом в кратчайшие сроки, пожалей бедолагу :). DANGER Используй мои наработки лишь в благих целях, иначе можешь загреметь по статье 273 УК РФ. Ни автор, ни редакция за последствия таких «приколов» ответственности не несут. DVD Все исходники и бинарники моих «веселых» программ ты можешь найти на нашем диске. |