[ 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. MASM

    MASM New Member

    Joined:
    8 Jun 2011
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    У меня такой вопрос. Я перехватываю функцию CreateProcessW из kernel32.dll на Delphi 7.
    Но почему то перехват не работает на Windows 7. В чем дело ?
    Вот код DLL:
    library wh;

    uses
    Windows,
    advApiHook,
    Dialogs;

    type
    NTStatus = cardinal;
    far_jmp = packed record
    push:byte;
    PProc:pointer;
    ret:byte;
    end;

    OldCode = packed record
    one:dword;
    two:word;
    end;

    PUnicodeString = ^TUnicodeString;
    TUnicodeString = packed record
    Length: Word;
    MaximumLength: Word;
    Buffer: PWideChar;
    end;

    PObjectAttributes = ^TObjectAttributes;
    TObjectAttributes = packed record
    Length: DWORD;
    RootDirectory: THandle;
    ObjectName: PUnicodeString;
    Attributes: DWORD;
    SecurityDescriptor: Pointer;
    SecurityQualityOfService: Pointer;
    end;

    PClientID = ^TClientID;
    TClientID = packed record
    UniqueProcess:cardinal;
    UniqueThread:cardinal;
    end;

    const
    STATUS_ACCESS_DENIED = NTStatus($C0000022);

    Function CreateProcessW(lpApplicationName: PWideChar; lpCommandLine: PWideChar;
    lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
    bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer;
    lpCurrentDirectory: PWideChar; const lpStartupInfo: TStartupInfo;
    var lpProcessInformation: TProcessInformation): BOOL; stdcall; external 'kernel32.dll' name 'CreateProcessW';

    var
    TCreateProcessW: Function (lpApplicationName: PWideChar; lpCommandLine: PWideChar;
    lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
    bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer;
    lpCurrentDirectory: PWideChar; const lpStartupInfo: TStartupInfo;
    var lpProcessInformation: TProcessInformation): BOOL; stdcall;

    function NCreateProcessW(lpApplicationName: PWideChar; lpCommandLine: PWideChar;
    lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
    bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer;
    lpCurrentDirectory: PWideChar; const lpStartupInfo: TStartupInfo;
    var lpProcessInformation: TProcessInformation): BOOL; stdcall;
    begin
    ShowMessage('Hooked: '+lpCommandLine);
    TCreateProcessW(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes,
    bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation);
    end;

    procedure DLLEntryPoint(dwReason: DWord);
    begin
    case dwReason of
    DLL_PROCESS_ATTACH:
    begin
    HookProc('kernel32.dll', 'CreateProcessW', @NCreateProcessW, @TCreateProcessW);
    end;
    DLL_PROCESS_DETACH:
    begin
    UnhookCode(@TCreateProcessW);
    end;
    end;
    end;

    begin
    DllProc := @DLLEntryPoint;
    DLLEntryPoint(DLL_PROCESS_ATTACH);
    end.
    /////
     
  2. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    В семерке такое не прокатит, там это блокирует сама система. Код походу из пользовательского кольца выполняется? Так же там теперь не пропатчить SSDT, каждую секунду система проверяет контрольные суммы, и если они не совпадают - сразу бсод.
     
  3. MASM

    MASM New Member

    Joined:
    8 Jun 2011
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    А как можно перехватить ? Желательно без драйвера.
     
  4. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    Вряд ли можно без драйвера, да и любая уважающая себя проактивка спалит перехват ядерных функций.
    Есть книга - "Руткиты. Внедрение в Ядро Windows", советую прочитать, там описываются некоторые примеры внедрения в ядро с примерами кода, но требуемый уровень знаний для понимания весьма высокий. Да и способы, описанные там вряд ли теперь актуальны, так как книга еще 2005 года.
     
  5. MASM

    MASM New Member

    Joined:
    8 Jun 2011
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    Это будет работать на семерке ? Код в книги на Д7 ?
     
  6. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    Неее :D
    Драйвер на делфи не напишешь)) Примеры только на чистом Си. На счет работать не знаю, я не проверял.
     
  7. MASM

    MASM New Member

    Joined:
    8 Jun 2011
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    Мне надо именно на Д7 и для Win 7.
    Не знаешь как реализовать ?
     
  8. Goodwin_

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

    Joined:
    29 May 2008
    Messages:
    61
    Likes Received:
    6
    Reputations:
    0
    подскажите пожалуйста как на indy послать запрос вот такого вида:
    [​IMG]

    интересует поле user

    вот raw-stream как должно быть:
    [​IMG]

    я уже как только не изъ****ся:
    (на картинках код и результат raw-stream из httpanalyzer'а. data - TStringList):

    [​IMG]

    [​IMG]

    [​IMG]

    и ещё кучу других способов...
     
    #8608 Goodwin_, 29 Oct 2011
    Last edited: 29 Oct 2011
  9. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    2Goodwin_
    Попробуйте UrlEncode.
     
  10. Goodwin_

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

    Joined:
    29 May 2008
    Messages:
    61
    Likes Received:
    6
    Reputations:
    0
    решил сам с помощью дебагера:
    1. юнит source\Indy\Indy10\Protocols\IdURI.pas
    2. функция ParamsEncode(const ASrc: string): string;
    добавляем в UnsafeChars символ который хотим чтоб тоже конвертился.
    у меня получилось вот так: UnsafeChars = '*#%<> []+';
    3. сохраняем. компилируем (в той же папке IndyProtocols.dpk - открываем в Delphi, ищем кнопку Compile. у меня вот так: [​IMG]
    4. появляется файл в той же папке IdURI.dcu. перемещаем его в lib\Indy10\

    может кому-то пригодится.
     
    #8610 Goodwin_, 29 Oct 2011
    Last edited: 29 Oct 2011
  11. AtomoS

    AtomoS New Member

    Joined:
    17 Feb 2010
    Messages:
    88
    Likes Received:
    1
    Reputations:
    0
    Возник следующий вопрос. Как с помощью Delphi запустить приложение и получить его hwnd?
     
  12. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    запуск через shellexecute или winexec, получение хэндла через findwindow.
     
  13. ITdocer

    ITdocer New Member

    Joined:
    23 Aug 2011
    Messages:
    80
    Likes Received:
    0
    Reputations:
    -5
    а какая разница (в Паскале) между sin(); и sqrt();???
     
  14. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Такая же как и в математике между Синусом (sin) и корнем квадратным (Sqrt)
     
  15. Dron1993

    Dron1993 New Member

    Joined:
    30 Oct 2011
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    как сделать чтоб CommViev на бродкоме делал ресоаризацию (взлом ВПА) делал все как по видео не хочет делать ресоаризацию. Или скинте силку на нормальный комвиер (у меня сетевой адаптер бродкомовской а по видео атхерос )
     
  16. Rastamanka

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

    Joined:
    26 Nov 2008
    Messages:
    429
    Likes Received:
    11
    Reputations:
    7
    Подскажите где взять FAQ по компонентам Indy с примерами желательно на русском языке?
    Особенно для IdHttpProxyServer
     
  17. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    держи http://vvova15.ucoz.com/load/doki_knizhki_manualy/glubiny_indy/5-1-0-26
     
  18. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,663
    Likes Received:
    916
    Reputations:
    363
    как через випапи удалить что-либо из автозагрузки?
    нужен пример, у меня не выходит
    Code:
          RegOpenKey(HKEY_LOCAL_MACHINE,'software\microsoft\windows\currentversion\run',KEY);
          RegDeleteValue([B]???[/B]);
          RegCloseKey(key);
    получилось:
    Code:
          RegOpenKey(HKEY_LOCAL_MACHINE,'software\microsoft\windows\currentversion\run',KEY);
          RegDeleteValue(key, 'name');
          RegCloseKey(key);
     
    _________________________
    #8618 yarbabin, 2 Nov 2011
    Last edited: 2 Nov 2011
  19. InfectedM

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

    Joined:
    4 Nov 2007
    Messages:
    155
    Likes Received:
    12
    Reputations:
    0
    Есть картинка 100 на 100 *.bmp 8bit
    1)Как определить цвет пикселя с координатами 0,0 и вывести его код(название цвета) в showmessage?
    2)как закрасить 0,0 пиксель в красный цвет.
    через scanline
    Скиньте, пожалвйста кто-нибдуь простейший примерчик
     
  20. Degger

    Degger New Member

    Joined:
    20 Aug 2010
    Messages:
    34
    Likes Received:
    0
    Reputations:
    0
    Проблема в том что решил написать простенький чат..вот код:

    procedure TForm4.FormCreate(Sender: TObject);
    begin
    tcpclient1.connect;
    end;
    procedure TForm4.Button1Click(Sender: TObject);
    begin
    tcpclient1.Open;
    tcpclient1.Sendln(edit1.text) ;
    tcpclient1.Close;
    end;
    procedure TForm4.TcpServer1Accept(Sender: TObject;
    ClientSocket: TCustomIpClient);
    begin
    edit2.Text:=(clientsocket.Receiveln);
    end;
    procedure TForm4.FormDestroy(Sender: TObject);
    begin
    tcpclient1.Disconnect;
    end;
    end.

    точно такой же код у другого человека..с измененными айпи серверами и клиента..
    Общаются они по 3000 порту..а сообщения не доходят..в чем проблема?
    Сервер и клиент активируются при запуске программы
     
Thread Status:
Not open for further replies.