WindowsHook Delphi

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Ivanushka, 18 Jul 2010.

  1. Ivanushka

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

    Joined:
    4 Apr 2008
    Messages:
    39
    Likes Received:
    1
    Reputations:
    0
    Добрый вечер. Понадобилось написать программку, которая будет перехватывать выводимый текст на экран. Хотел спросить, как это сделать? как написать такой Hook, чтобы перехватывал Апи функции вывода текста? Заранее спасибо за ответ.
    P.S. Буду рад, если объясните, как это сделать на делфях
     
  2. h(f)ucker

    h(f)ucker Member

    Joined:
    11 Jul 2009
    Messages:
    81
    Likes Received:
    84
    Reputations:
    32
    "Delphi глазами хакера" Михаил Фленов.
    По оглавлению ищи, там все понятно описано. + примеры в гугле, там навалом...
     
  3. Ivanushka

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

    Joined:
    4 Apr 2008
    Messages:
    39
    Likes Received:
    1
    Reputations:
    0
    Если бы все так было просто, я бы не спрашивал) Фленов прочитан почти от корки до корки. Конечно, про хуки там есть, но того, что меня интересует, там нет. Меня интересует именно как выцепить текст. Ну может я конечно глуп и у меня просто не получается найти. Тыкните носом тогда, пожалуйста.
     
  4. Ivanushka

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

    Joined:
    4 Apr 2008
    Messages:
    39
    Likes Received:
    1
    Reputations:
    0
    Немножко уточню вопрос. Как перехватывать api функции DrawText, ExtTextOut и др.?
     
  5. Ivanushka

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

    Joined:
    4 Apr 2008
    Messages:
    39
    Likes Received:
    1
    Reputations:
    0
    Если никто не знает, то хотя бы расскажите, как получить информацию из текстового окошка. Например - это окно чата.
     
  6. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Есть к примеру в окошке текст "Добро пожаловать"
    качаешь cheatengine, ищешь с помощью него текст "Добро пожаловать", как нашел: запоминаешь на каком месте/оффсете этот текст, манипулируешь winapi командами: ReadProcessMemory, OpenProcess

    Естественно вроде как новый текст (т.е. при новом запуске программы) будет хранится на том же оффсете что ты запоминал
     
    #6 wolmer, 20 Jul 2010
    Last edited: 20 Jul 2010
  7. Ivanushka

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

    Joined:
    4 Apr 2008
    Messages:
    39
    Likes Received:
    1
    Reputations:
    0
    Идея конечно интересная... но что-то мне не получается искать там строку.. Ищется только целые значения) Спасибо за интересное предложение. Может еще кто что подскажет?
     
  8. FairHawk

    FairHawk Member

    Joined:
    16 Mar 2010
    Messages:
    46
    Likes Received:
    6
    Reputations:
    0
    Ivanushka
    Получаешь хендл окна, затем нужного едита, функции смотри в гугле, ну а потом шлешь сообщение для получения из него текста, GetItemTextA как то так вроде, там и буфер указан, куда текст сохранить

    Code:
     Hnd:= FindWindow(nil, 'Заголовок окна');
       if Hnd <> 0 then begin
           windows.SetForegroundWindow(Hnd);
           HndControl:=FindWindowEx(Hnd, 0, 'TEdit', nil); // получение хендла едита
           SendMessage(HndControl ... как то так
     
    #8 FairHawk, 20 Jul 2010
    Last edited: 20 Jul 2010