2013-07-21 6 views
-6

Я хочу немного помочь. Я знаю java и немного C++. Я видел тренеров для игр, которые могут настроить здоровье игроков и машин для икры и т. Д. Я хочу сделать что-то похожее на это.Как управлять одной программой из других

Например, у нас работает тральщик. когда я запускаю свою программу java и нажимаю кнопку, она должна вызывать функцию теневиков, а игра тральщика должна показать, что я выиграл. Итак, мой вопрос заключается в том, как установить соединение или что-то в другую запущенную программу и вызвать функции программы путем передачи аргументов. как это возможно. Я слышал об обратном проектировании и загрузил программу под названием OllyDBG. И инжектор dll winject. я не знаю что делать. Объединив все это, как я могу сделать программу. Пожалуйста, дайте мне идеи, коды или ресурсы, полезные.

+1

Java, безусловно, неправильным язык для этого. Удаление тега. –

+0

Это гораздо более глубокое поле, чем вы ожидаете, на мой взгляд. Google Reverse Engineering. –

ответ

1

Ну, ваше начальное предложение было следующим: «Я видел тренеров для игр, которые могут установить здоровье игрока и появления машин и т. Д. Я хочу сделать что-то похожее на это».

Вот очень хороший справочник код, который делает то, что вы говорили в C++ http://www.codeproject.com/Articles/7468/Game-Wizard

Сначала укрепить C++ навыки, а затем изучить то, что он там делает.

Общее описание состоит в том, что память процесса «жертва» выполняет поиск определенного значения. Обычно что-то, что представляет ценность, о которой вы знаете, например, количество пуль вашего персонажа. Обычно сначала открывается большой список местоположений в памяти. Но тогда вы стреляете в пулю, и теперь список, который вы ранее нашли (и только он!), Ищет новое значение. Каждый шаг отбрасывает «ложноположительные» находки, пока в конце вы не узнаете местоположение переменной, которую вы искали. После этого вы также можете изменить его.

Теперь, перейдя к общей теме - эта техника является лишь конкретным подходом, и в то же время очень полезна в некоторых случаях, вам нужны более сильные и разные инструменты.

Вот очень похожий вопрос: How can I find the data structure that represents mine layout of Minesweeper in memory?

Я лично считаю IDA быть удивительным инструментом для обратного проектирования и анализа приложения (статически и динамически). В сочетании с «idapython» (привязка ida для python) он чувствует себя неустойчивым :)

Для обратной инженерии требуется, по крайней мере, базовое знание архитектуры вашей целевой машины - например, инструкции x86.

Ищите учебники IDA, чтобы их повесить. Существует много плавающих «трещин», это проблемы для взлома (для образовательных целей) различных видов защиты приложений. Это научит вас многому.

Вы также можете найти google для «обратного проектирования для начинающих». В Интернете есть масса ресурсов на эту тему. Объем информации может быть пугающим сначала, поэтому убедитесь, что вы нашли базовый сайт, который поможет вам постепенно наращивать свои навыки.

Другим важным термином, который вы должны знать, является «зацепление». Если вы сами это сделаете, вы научите вас больше всего, есть библиотеки, которые выполняют эту операцию для вас. Идея состоит в том, чтобы получить контроль над определенной функцией. Всякий раз, когда кто-либо вызывает эту функцию, элемент управления сначала передается вашему коду, и вы можете решить, что делать. Например, вы можете просто зарегистрировать этот вызов в файле и вызвать исходную функцию, , или вы можете делать более сложные вещи.

Я нашел http://tuts4you.com/, чтобы содержать множество полезных уроков и фрагментов информации.

О, и, как говорят люди, Java не является вашим другом в этом случае. C/C++/Assembly, вероятно, есть.

Запуск совершенно новой темы, особенно обратное проектирование в начале, но я могу заверить, что это очень полезно.

Edit: У меня есть для вас сюрприз: http://www.uninformed.org/?v=1&a=7

я просто гугл обратных инженерного учебника тральщик;)

удачи :)

+0

Действительно хороший ответ, позор, это не отмечено как ответ. –

+0

Спасибо, ZeDuS, Нитрид и Доминик. (хотя и немного поздно :)). Я изучаю язык ассемблера и обратное проектирование с thelegendofrandom.com и чувствую больше интереса к этой области. (также, что сюрприз был большим !.) –

3

Прежде всего вам нужно обратить внимание на триангулятор, чтобы узнать расположение памяти разных переменных. Помните, что вы, вероятно, не сможете выполнять функции тральщика из-за контекста, но вы можете на него наложить код для их запуска. Однако вы можете читать память.

Чтобы ввести код, вы должны собрать его отдельно, а затем записать его в виртуальном пространстве процесса.

В API окон есть несколько функций, которые позволяют открывать процесс и получать доступ к его памяти, но для этого у вас должны быть привилегии.

Таким образом, первое, что вам нужно изучить, это разобрать и понять программу. Только тогда вы поймете, насколько легкий тральщик должен понять.

BTW: тральщик хранит карту, необработанную в памяти. Простой инспектор памяти позволит вам получить его карту.