Вопрос насчёт использования функций в полноэкранных приложениях(играх)

Тема в разделе "WASM.BEGINNERS", создана пользователем hunt, 7 ноя 2009.

  1. hunt

    hunt New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    16
    Всем привет! Помогите пожалуйста. Проблема касается игры Counter-Strike.
    Вообщем хотел бы узнать, каким образом можно из своей программы отправить команду на выполнение в консоль CS, т.е. можно ли каким-нибудь образом проследить, какую функцию вызывает cs при вводе консольной команды и сделать так, чтобы моя программа смогла бы сэмулировать выполнение этой команды в самом CS.
    Пробовал эмуляцию нажатия клавиш, но этот способ неэффективный :dntknw:
     
  2. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    Это не просто.

    Нужно точно понять как программа выполняет процесс - на пример, после того как комманда напечатана юзером в консоле, и юзер нажимает энтер - что происходит? Пересылается ли запрос на другую нить? Или запрос добаляется в какой-то очередной список (job queue)?

    После этого уже размышлять как в этот процесс внедрится...
     
  3. hunt

    hunt New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    16
    Сама команда называется "playdemo" или другой вариант "viewdemo".
    При вводе команды должна воспроизвестить демка, т.е. должен произойти доступ к демо-файлу.
    Тут я не понял к сожалению.
    Я пробовал в Olly что-нибудь найти, но там ошибка появляется "Exception: **** Press Shift+F7/F8/F9 to pass" - что-то в этом роде.
    Также пробовал через API Logger v1.0 [black ninja], и там есть зацепка - функция "OutputDebugStringA", т.к. если запустить кс с параметром "+playdemo", то в консоли контера появляется надпись "Playing demo ****.dem".
    API Logger показал мне вот это:
    Теперь надо проверить эту функцию, но я, к сожалению, не знаю как это сделать (внедриться в процесс hl.exe и выполнить там эту функцию).
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Ты что английский совсем не знаешь. Это просто вывод отладочного сообщения. Либо ты на поймал нужного API, либо вызов происходит "внутри" программы-игры и никакого специального API нет.
     
  5. tex32

    tex32 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2009
    Сообщения:
    202
    valterg[\b] просто человек пытается сразу решить задачу не имея общих знаний о данной области. Таких людей тысячи и большинство бросает это дело сразу, осознав свою малограмотность в этом вопросе.

    hunt[\b] начни с простого, почитай статьи и изучи инструмент. Ломать игры это не так просто, как придумывать идеи их модернизации.
     
  6. mikityak

    mikityak Забанен

    Публикаций:
    0
    Регистрация:
    5 авг 2007
    Сообщения:
    160
    hunt[\b] ..я делаю перехват функции в Контре.. хоть нету что тебе надо, но представления есть что как и почем.. Лучше ты скажи зачем это всьо надо тебе ?

    В OpenGL – wglSwapBuffers
    В DirecX8 - Present

    ...
    InjHdc.zip
     
  7. hunt

    hunt New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    16
    _mikityak_ Плеер демок хочу сделать.
     
  8. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Из общих соображений запуск демки - это запуск экзешника игры с какими-то ключами.
    Осталось найти их имена и формат задания :) Думаю эта инфа давно уже опубликована, т.к. не предсавляет "опасности"...
     
  9. mikityak

    mikityak Забанен

    Публикаций:
    0
    Регистрация:
    5 авг 2007
    Сообщения:
    160
    ..а стільки шуму.. [​IMG]
     
  10. hunt

    hunt New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    16
    Вы не так поняли. Про параметры запуска я и так давно знаю про это.
    Мне нужно в уже в уже запущенный Counter-Strike отправить команду на выполнение.
     
  11. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Ну так вам сначала и написали, что это делается внутри программы и вряд ли там какие-то API.
    Просто команда анализируется и игра идет туда же(грубо говоря), куда она идет при вызове с ключом. Наверняка там есть простые антиотладочные приемы, вот Олли у вас глючит. А чтобы с Олли что-то найти надо хотя в общих чертах уметь программировать(или понимать принципы программирования). Все API которые там были "замурованы" в бинарный код и могут быть найдены именно глубоким анализом. Правда если есть какие-то "примочки" к игре, то можно их поизучать.
    Например читеры.
    Попробуйте для начала проанализировать что делает экзешник при запуске с ключом - это относительно просто. Если и это не получится, то как говорил тов. Бендер "плюньте товарищ ...".
    Если получится - вы найдете процедуру выполняющую демо. Теперь делает многотонный дизасм или ищем Олей вызов этой функции в экзешнике и трудимся дальше.
     
  12. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Ну и есть дедовский способ работы - по сообщениям об ошибках. Сначала смотрим какие ошибки бывают в консоли и лучше, связанные с ситаксисом команд. Далее по дизасму опять ищем где они вызываются - это и будет обработчик консоли(возможно придется делать более глубокий анализ).
    Ну а далее, либо вы станете подмастерье, либо займетесь делом, которое умеете делать. Либо будете досаждать очередными глупыми вопросами.