Конференция "Игры" » Как получить данные из игрового окна? [C++ Builder, Windows]
 
  • _romm (11.02.09 15:27) [0]
    В игровом окошке есть панелька, на которой отображаются данные персонажа(жизнь, мана и броня). Хочу узнать эти цифры.
    Каким способом это можно осуществить?

    У меня пока одна нормальная идея - графически определять текст(правда не знаю как^^).
    Еще есть мысль - если можно каким то образом получить адреса памяти, где хранятся эти данные, то будет вообще шикарно, но боюсь что адреса выделяются динамически, и их невозможно будет узнать.

    У кого есть опыт подобной работы, или просто пожелания -
    буду очень рад любым советам.

    Заранее спасибо.
  • @!!ex © (11.02.09 22:30) [1]
    Есть идеи. Но только после того, как узнаю ЗАЧЕМ?
  • Сергей М. © (12.02.09 11:56) [2]
    На дворе кризис, а им все бирюльки)
  • _romm (12.02.09 15:18) [3]
    2ex, делаю автокликер для игры. действие должно выполнится при достижении параметрами определенного уровня(например при падении жизни < 50% пьется элексир жизни)
  • _romm (13.02.09 11:41) [4]
    Можно ли получить хандл этой менюшки, впринципе не знания никакой информации о ней(только положение на экране)?
  • Сергей М. © (13.02.09 12:21) [5]

    > Можно ли получить хандл


    А кто тебе сказал, что эта "менюшка" является объектом опер.системы и посему обязана иметь хэндл ?
  • _romm (13.02.09 12:27) [6]
    Да вот беда что никто не говорил)
    Я просто наивно перебераю все возможные варианты)
  • Сергей М. © (13.02.09 13:01) [7]

    > жизнь, мана и броня


    Стесняюсь спросить, "мана" - это, наверно, запас манной каши ?)
  • _romm (13.02.09 13:47) [8]
    не важно :) пусть будет так :)

    Сергей, у вас есть какая-нибудь мысль по моей проблеме?)
  • Сергей М. © (13.02.09 14:02) [9]

    > _romm   (13.02.09 13:47) [8]


    Мысль я уже в [2] изложил)

    Ну а если абстрагироваться от бирюлек, то тут любые идеи/средства будут хороши и не лишние - от сканирования образа процесса средствами какой-нить  ArtMoney и/или исследования "жертвы" под отладчиком до использования неких алгоритмов распознавания текстово-символьных графических образов.

    Быстрота и сложность достижения результата напрямую зависит и от сложности/скрытности внутренней организации "жертвы" и от знаний/умений в пользовании вышеупомянутых средств.
  • Asteroid (13.02.09 14:32) [10]
    Если игра сетевая, то порой проще перехватывать пакеты и анализировать их, но навыки, описанные в [9] лишними не будут :)
  • _romm (13.02.09 14:46) [11]
    игра сетевая, с пакетами я работать не умею :)
  • @!!ex © (13.02.09 14:46) [12]
    > [3] _romm   (12.02.09 15:18)

    Так и знал, что читерство.


    > [10] Asteroid   (13.02.09 14:32)

    Не получится. в MMORPG крутятс ябольшие бабки, поэтому канал нехило шифруется.
  • _romm (13.02.09 15:54) [13]
    ex, не читерство, а автоматизация :)
    выкладывай свою идею :)
  • @!!ex © (13.02.09 17:22) [14]
    Есть два реализуемых способа:
    1) С помощью некой утилиты(АrtMoney, например, которую здесь уже упоминали) ищется адрес переменной. Минус в том, что при перезапуске адрес скорее всего переместится и заморачиваться придется по ноаой. Плюс в том, что любой идиот справится.
    2) С помощь дизасемблера, отладчика и внедрения своих дллек ищем переменную в коде. Если даже по коду не удастся узнать где она будет располагаться в памяти, скорее всего это значение в каком то виде передается во внешние длл(простой пример: жизнь рисуется квадом. соответственно по размеру квада мы можем узнать количество жизни. Выясняем момент, когда рисуется квад(с помощью дизассемблера, отладчика и экспериментов), перехватываем координаты и получаем значение жизни.)
  • _romm (13.02.09 17:52) [15]
    по второму способу не подскажешь литературу?
  • _romm (13.02.09 19:07) [16]
    Побаловался с АртМаней,
    выяснил, что жизни хранятся в неком адресе хххххххх.
    после перезапуска игры, адрес оказался тот же, что порадовало :)

    Всем спасибо за советы, пока попробую прочитать оттуда данные...
    ЗЫ тему не закрывайте, не может все так просто оказаться :)
  • @!!ex © (13.02.09 20:37) [17]
    > ЗЫ тему не закрывайте, не может все так просто оказаться
    > :)

    Почему не может? Если статик переменная, но у ней адрес фиксированный в пределах билда.
  • Asteroid (13.02.09 23:28) [18]

    > Не получится. в MMORPG крутятс ябольшие бабки, поэтому канал
    > нехило шифруется.

    Вот тут-то и пойдут в дело инструменты обратного "инженеринга" :)

    Но раз адреса в памяти хватило, то тем проще :)
  • _romm (15.02.09 16:12) [19]

    > адрес оказался тот же

    пф, видимо совпадение, адрес все же меняется :(
    из той же артмани узнал указатель на структуру(не уверен что это структура, но указатель на текущие жизни, и максимальные жизни одинаковый).

    Подскажите как теперь используя этот указатель узнать адрес конкретного значения
 
Конференция "Игры" » Как получить данные из игрового окна? [C++ Builder, Windows]
Есть новые Нет новых   [134427   +34][b:0][p:0]