Простой пример грабления форм. Mодуль при внедрении в процессы браузеров, названия которых перечислены в заголовке темы, перехватывает данные пользователя(в основном нас интересуют данные из форм регистрации) и записывает в файл C:\test.txt с атрибутом скрытый. Поддерживает SSL соединения. Описание.Перехват методом переписывания первых пяти байт функции и перенаправления на свою. Для это имеется специальный класс Splice. Его методы: Code: SetSplicingHook(char* funcname,char* modulename, void* pfnHook) - Устанавливает перехват на экспортируемую функцию с именем funcname, из модуля с названием modulename, перенаправляя на адрес заменяющей функции pfnHook SetSplicingHookByAdr(void* pfnDst, void* pfnHook,bool SetTramp=true) - Устанавливает перехват на функцию которая находиться по адресу pfnDst, перенаправляя её на pfnHook. SetTramp - параметр по умолчанию, и если он не задан или =true, то функция будет "думать" что перехватывает pfnDst в первый раз. UnsetSplicing() - Снимает перехват, возвращая оригинальные байты функции на место. ReSplice() - Аналог SetSplicingHook и SetSplicingHookByAdr. Используется после UnsetSplicing. GetHookedFunc() - Возвращает адрес перехватываемой функции т.е. pfnDst. GetBuffer() - Возвращает адрес буфера где храняться оригинальные байты перехватываемой функции. Можно использовать в качестве "трамплина". После завершения вашей функции просто написать, не используя UnsetSplicing и ReSplice : XXX.GetBuffer(); __asm jmp eax; Запись в лог ведётся из функции WriteLog(const char * Filename,char * Text) где Filename полный путь до файла куда будут записываться логи и Text строка для записи в файл Filename. Записи не фильтруются. Константа LogFile используется в качестве Filename и равна "C:\\text.txt" Описание функций из module_disasm можно посмотреть на сайте автора . Функции перехвата имею 2 варианта: С методом снятия перехвата(UnsetSplicing) и его переустановки(ReSplice). С методом трамплина(trampoline) . Смотрите описание GetBuffer. Название фукций имеет постфикс "_tramp". Используются по умолчанию. Пост написан исключительно в поучительных целях, а именно чего делать нельзя и как именно это сделать В качестве бонуса к DrunkenBear прикрепляю исходники Zeus Bot. Formgrabbers (Password: blotlore.blogspot.com ) deposit 2share DLL Injector (Работает с Chrome и FireFox, а с IE тем более) deposit 2share Credits Great, slesh, and all antichat. ;-) Оригинал
Как известно формграббер для хрома с шифрованием трафика (ssl) уже не работает, думал из-за обновления хрома(соответственно и сигнатуры функции). Найти новую сингатуру функции sslclientsocketnss::write удалось. но формграббер так же продолжает молчать на https запросах. может сигнатуру изменить недостаточно? роль "маски" в функции FindPattern так и не понял. Если кто-нибудь знает , откликнитесь пжл. Сижу на этом уже как неделю.