Достать данные из уже запущенного процесса [help]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by login999, 12 Jun 2010.

  1. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Собственно сабж, имеется процесс и из него необходимо вытянуть данные, если подробнее то это онлайн игруха, в которую нужно внести немного автоматизации.
    Все бы ничего, но ...
    AutoIt Info Tool говорит о окне как :
    Code:
    >>>> Window <<<<
    Title:	...
    Class:	...
    Position:	109, 68
    Size:	806, 632
    Style:	0x14CA0000
    ExStyle:	0x00040100
    Handle:	0x004208F4
    
    >>>> Control <<<<
    Class:	ViewPort Window
    Instance:	1
    ClassnameNN:	ViewPort Window1
    Name:	
    Advanced (Class):	[CLASS:ViewPort Window; INSTANCE:1]
    ID:	
    Text:	
    Position:	0, 0
    Size:	800, 600
    ControlClick Coords:	523, 112
    Style:	0x56000000
    ExStyle:	0x00000000
    Handle:	0x005A08B4
    
    >>>> Mouse <<<<
    Position:	635, 209
    Cursor ID:	0
    Color:	0xD2FFFF
    
    >>>> StatusBar <<<<
    
    >>>> ToolsBar <<<<
    
    >>>> Visible Text <<<<
    
    
    >>>> Hidden Text <<<<
    
    Получить идентификатор какой-либо кнопки хз как, ибо тулза их не видит вообще. Необходимо тыкать по кнопкам, и (очень хотелось бы) ловить всплывающие подсказки.
    Просьба ногами не пинать, ибо с такими вещами не сталкивался и слабо представляю как оно работает.
    Ткните в нужном направлении плиз...
    Просьба описать как это необходимо сделать именно в принципе, так как код на компиллируемых ЯП мне многого не скажет.
     
  2. Sunzer

    Sunzer Member

    Joined:
    17 May 2008
    Messages:
    29
    Likes Received:
    9
    Reputations:
    2
    ReadProcessMemory, WriteProcessMemory ?
     
    1 person likes this.
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    login999 Несколько вариантов:
    1) редкоработающий метод: c помощью ArtMoney найти области памяти с интересующими данными, а дальше ReadProcessMemory - недостатком является то, что смещение может быть всегда разным, а найти указатель на эту область не всегда получается быстро
    2) Написать аналог UOpilot - читаем цвета пикселей на экране, и в зависимости от этого посылаем клики в приложение, с помощью винапи SendMessage PostMessage - тут сложно получать эффективные и точные данные
    3) Ну и самый очевидный для онлайн игр - расковырять хотя бы частично сетевой протокол игры, а дальше - промежуточный сокс прокси с правкой пакетов на лету. Получаем полный контроль над всеми действиями
     
    _________________________
    1 person likes this.
  4. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    у игр интерфейс реализован своими руками, без виндовых окон, поэтому об аутоит по сути можешь забыть. прокатят протокол или реверсинг и патчинг самого ехе.
     
    1 person likes this.
  5. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Всем откликнувшимся спасибо :)