Разделы сайта
Реклама
Авторизация
Главные новости
- Сайт на реконструкции
-
Сайт долго время был мёртв и сейчас останется в качестве доброй памяти у старых игроков, которые могут вспомнить о его существовании и зайти сюда для ностальгии.
- убрана вся реклама
- исправлены кодировки чата, комментариев и т.д.
- исправлены ошибки при переходе на новую версию php
- исправлена регистрация
Если вдруг вы заметите, что что-то не работает, можете написать в эту тему или же мне в личку.Для игры на тестовом сервере и в целом новый сайт - wormixtest.com
- Внимание! Нам требуется Главный редактор
Друзья! Внимание ! Нам требуется Главный редактор для развития сайта !
Если Ты:
-ответственный
-аккуратный
-умеешь играть в wormiks
-способен администровать сайт и добавлять новости, то напиши нам в личку
- Типо помощь и конкурса)))
- Всё в средине))
- Как вытащить Auth key с Вормикса, два метода!
- И так знаю, что всем известно, но для нубов пойдет! =)
{sl2}
Опросы Вормикс.ру
Какой босс Вормикс Вами убивался сложнее всего?
В процессе игры мы видим какие значения есть у нашего героя (может быть и другого, это не важно на данный момент), есть еще те значения, которые должны быть присвоены, вот о них и пойдет речь.
Для пущей наглядности, я буду рассматривать известную если не всем то большинству игру С.Т.А.Л.К.Е.Р. с которой многие знакомы, многие пользовались хаками с помощью так называемой подменой геймдаты поэтому будет проще понять.
Итак. Когда вы начинаете игру, то главный герой появляется (рождается) у него есть определенные характеристики, предметы и т.д., с потолка это все не падает, при рождении например у него есть точная установка скорости при беге, высота прыжка, сопротивляемость падению ну и еще куча всего. Мы остановимся на последних двух.
Все характеристики присваемые ГГ хранятся в конфигурации игры, в каком виде существует сама конфигурация в принципе не важно, но в данном случае (для СТАЛКЕРа) это набор .ltx файлов, в которых прописано название параметра и его значение, например jump_speed = 6; это коэфициент высоты прыжка. Потом эти данные считываются из файлов конфигурации программой, и прописываются в создаваемый в памяти процесса объект (структуру данных (характеристик) как хотите называйте) главного героя, а дальше он уже живет с присвоенными ему характеристиками. Так вот, хитрость в том, что эти данные можно подменить в момент либо считывания из конфигурации, либо присвоения в объект, пока для нас это не существенно.
Чтобы это сделать, нам понадобится уже более серьзеный инструментарий - отладчик (его же называют дебаггер от англ. debugger) и конечно же нам нужно знать что искать, можно и не знать, но для этого нужно уже владеть определенным опытом работы с разными инструментами и хорошо понимать логику построения программ и их работы, я надеюсь все кому действительно интересно, смогут прийти к этому с помощью статей которые я напишу. Мы возьмем отладчик Olly, он не сложный в понимании и обладает достаточным набором функций которые могут потребоваться.
Давайте рассмотрим его интерфейс.
1. Слева вверху секция кода программы - это секция дизассемблированного исполняемого байт-кода, т.е. сама программа
2. Слева внизу секция данных - это секция которая позволяет просматривать участок памяти с любым набором данных или кода, в нескольких предствлениях, обычно представление это шестнадцатиричный вьювер (просмотрщик) байт.
3. Справа вверху секция регистров - это секция где представлены регистры процессора, математического сопроцессора, SSE, 3DNow и т.д.
4. Справа внизу секция стека - стек, это вообщем-то не замудренная штука, но некоторым трудно понять что это такое, но несомненно очень важная, которую игнорировать нельзя. Это мы во всяком случае не будем включать в урок.
Чтобы работать с игрой, запустите игру, затем запустите Olly. В Olly нам нужно подцепиться к процессу, для этого выбирите меню "File -> Attach", в списке процессов выбирите xrEngine.exe, это непосредственно процесс СТАЛКЕРА, когда выбрали и он загрузился и загрузил все библиотеки, нужно выбрать библиотеку которая с наибольшей вероятностью отвечает за игровой процесс. В случае со СТАЛКЕРом это xrGame.dll, для этого выбирите меню "View -> Executable Modules", в нем выбирите упомянутую DLLку.
Если вы знакомы с программированием, то понять будет просто что я сейчас хочу объяснить, если не знакомы, то настоятельно рекомендую ознакомиться, иначе вы рискуете просто непонять что я хочу до вас донести.
Для того чтобы из конфига считать какой-то параметр, и записать его в память программы, в большинстве случаев используются функции, которые упрощают хранение этих параметров и получение их из конфигов. Ну например, предствим себе кусочек программы такого вида:
1. [перем]переменная_указывающая_на_файл = [функция]открыть_файл([текстовая_строка]"X:\somepath\somefile.ltx");
2. [перем]переменная_параметр_jump_speed = [функция]получить_параметр([текстовая_строка]"jump_speed", [перем]переменная_указывающая_на_файл);
3. [функция]закрыть_файл([перем]переменная_указывающая_на_файл);
Вот примерно таким образом получается значение характеристики игрока из конфигурации игры. Это не конкретно взятый язык программирования, но в целом отражает примерно как это происходит в языках программирования высокого уровня, так сказать на экране программиста пищущего игру. Если бы у нас была возможность подправить этот участок кода, мы бы сделали в строке №2 просто что-то типа такого
2. [перем]переменная_параметр_jump_speed = [число]нужное_нам_значение;
Но такого счастья у нас нет. Исходники нам никто не даст. В нашем случае, мы можем себе только представлять как все это выглядит у него, поскольку исходников у нас нет! :-( Нам прийдется спуститься до начала начал, и смотреть на язык Ассемблера, который наверное большинство из вас испугает и навсегда заставит оставить эту дурацкую затею - писать читы.
Ассемблер, не смотря на то что язык низкого уровня, все-же в нем соблюдается та же последовательность что и у программиста в исходниках, но здесь оно разбито на более мелкий и детальный код, такой, который сможет понимать процессор вашего компьютера. Здесь есть те же переменные, только они выступают не как удобоваримые глазу в языке высокого уровня, а в виде регистров процессора которых у нас ограниченное число и стека, той непонятной пока для вас штуки, к которой мы прийдем в других уроках. И конечно же никуда не деваются от нас текстовые строки. Давайте посмотрим строку №2 нашего блока, как примерно это выглядит на ассемблере
PUSH [перем]переменная_указывающая_на_файл
PUSH [текстовая_строка]"jump_speed"
CALL [функция]получить_параметр
Примерно вот так (понимать не буквально, а логически) это будет выглядеть под дизассемблером для большинства программ написанных на языке Си. Т.е. сначала в стек передаются параметры для функции, потом идет вызов самой функции, ну а дальше будет производится уже манипуляция с полученным значением из конфигурации, запись его куда-нибудь в память объекта или в промежуточную область памяти для последующей записи в объект, не важно.
Из приведенного выше блока видно, что текстовая строка в ассемблерном коде тоеж есть, и она послужит нам отправной точкой! Мы найдем то место, где считывается параметр!
Нажатием правой кнопки мыши где-нибудь на пустом месте в секции №1 отладчика, выбираем меню "Search for ... -> All referenced text strings", далее в появившемся окне снова на пустом месте жмем правую кнопку мыши и выбираем "Search for text", в открывшемся окне, набираем нужную нам строку "jump_speed", когда мы ее найдем, нажимаем на на клавиатуре клавишу F2, для того чтобы поставить точку останова программы на исполнение. Точка останова сработает в тот момент времени, когда программа дойдет до выполнения инструкции ассемблера находящейся в этой строке (по этому адресу). Когда мы поставили точку останова, мы можем нажать F9, для того чтобы продолжить выполнение программы. Когда снова произойдет остановка, нажимая клавишу F8 (но без фанатизма, не нужно жать 1000 раз, обычно то что нас интересует происходит рядом, в ближайших 10-15 инструкций, по крайней мере в большинстве случаев), просмотрите что происходит, будут меняться значеня в секции №3, будут меняться значения в секции №4, и обратите внимание на секцию которая находится слева по центру, между секциями №1 и №2, это информационная секция, которая упрощает жизнь, в ней часто видны цифры и не только, в удобоваримом виде. Так вот, как только вы в ней увидите ST0=6.0000000 (это значение высоты прыжка заданное конфигурацией, в данном случае интересует именно это), нажмите на этой строчке правой кнопкой мыши, и выбирите "Modify value", в открывшемся окошке введите например 50, нажмите "ok", и затем на клавиатуре F9, если же вы не увидели ST0=6.00000000, то скорее всего нужно поискать в другом месте. Если же увидели и исправили, попробуйте прыгнуть, скорее всего получится. Если не получилось, ищите следующую строку, возможно эта была для одиночной игры, а вы пробуете подправить для сетевой, или же наоборот, ниходитесь в сетевой, а подправить пробуете для одиночной. Параметры для сетевой игры и одиночной могут быть разными. Если не нашли нужную строку, пробуйте искать в других модулях и библиотеках и т.д. (c) CheatON.ru
Автор оригинальной статьи ShadowAGT
Для пущей наглядности, я буду рассматривать известную если не всем то большинству игру С.Т.А.Л.К.Е.Р. с которой многие знакомы, многие пользовались хаками с помощью так называемой подменой геймдаты поэтому будет проще понять.
Итак. Когда вы начинаете игру, то главный герой появляется (рождается) у него есть определенные характеристики, предметы и т.д., с потолка это все не падает, при рождении например у него есть точная установка скорости при беге, высота прыжка, сопротивляемость падению ну и еще куча всего. Мы остановимся на последних двух.
Все характеристики присваемые ГГ хранятся в конфигурации игры, в каком виде существует сама конфигурация в принципе не важно, но в данном случае (для СТАЛКЕРа) это набор .ltx файлов, в которых прописано название параметра и его значение, например jump_speed = 6; это коэфициент высоты прыжка. Потом эти данные считываются из файлов конфигурации программой, и прописываются в создаваемый в памяти процесса объект (структуру данных (характеристик) как хотите называйте) главного героя, а дальше он уже живет с присвоенными ему характеристиками. Так вот, хитрость в том, что эти данные можно подменить в момент либо считывания из конфигурации, либо присвоения в объект, пока для нас это не существенно.
Чтобы это сделать, нам понадобится уже более серьзеный инструментарий - отладчик (его же называют дебаггер от англ. debugger) и конечно же нам нужно знать что искать, можно и не знать, но для этого нужно уже владеть определенным опытом работы с разными инструментами и хорошо понимать логику построения программ и их работы, я надеюсь все кому действительно интересно, смогут прийти к этому с помощью статей которые я напишу. Мы возьмем отладчик Olly, он не сложный в понимании и обладает достаточным набором функций которые могут потребоваться.
Давайте рассмотрим его интерфейс.
1. Слева вверху секция кода программы - это секция дизассемблированного исполняемого байт-кода, т.е. сама программа
2. Слева внизу секция данных - это секция которая позволяет просматривать участок памяти с любым набором данных или кода, в нескольких предствлениях, обычно представление это шестнадцатиричный вьювер (просмотрщик) байт.
3. Справа вверху секция регистров - это секция где представлены регистры процессора, математического сопроцессора, SSE, 3DNow и т.д.
4. Справа внизу секция стека - стек, это вообщем-то не замудренная штука, но некоторым трудно понять что это такое, но несомненно очень важная, которую игнорировать нельзя. Это мы во всяком случае не будем включать в урок.
Чтобы работать с игрой, запустите игру, затем запустите Olly. В Olly нам нужно подцепиться к процессу, для этого выбирите меню "File -> Attach", в списке процессов выбирите xrEngine.exe, это непосредственно процесс СТАЛКЕРА, когда выбрали и он загрузился и загрузил все библиотеки, нужно выбрать библиотеку которая с наибольшей вероятностью отвечает за игровой процесс. В случае со СТАЛКЕРом это xrGame.dll, для этого выбирите меню "View -> Executable Modules", в нем выбирите упомянутую DLLку.
Если вы знакомы с программированием, то понять будет просто что я сейчас хочу объяснить, если не знакомы, то настоятельно рекомендую ознакомиться, иначе вы рискуете просто непонять что я хочу до вас донести.
Для того чтобы из конфига считать какой-то параметр, и записать его в память программы, в большинстве случаев используются функции, которые упрощают хранение этих параметров и получение их из конфигов. Ну например, предствим себе кусочек программы такого вида:
1. [перем]переменная_указывающая_на_файл = [функция]открыть_файл([текстовая_строка]"X:\somepath\somefile.ltx");
2. [перем]переменная_параметр_jump_speed = [функция]получить_параметр([текстовая_строка]"jump_speed", [перем]переменная_указывающая_на_файл);
3. [функция]закрыть_файл([перем]переменная_указывающая_на_файл);
Вот примерно таким образом получается значение характеристики игрока из конфигурации игры. Это не конкретно взятый язык программирования, но в целом отражает примерно как это происходит в языках программирования высокого уровня, так сказать на экране программиста пищущего игру. Если бы у нас была возможность подправить этот участок кода, мы бы сделали в строке №2 просто что-то типа такого
2. [перем]переменная_параметр_jump_speed = [число]нужное_нам_значение;
Но такого счастья у нас нет. Исходники нам никто не даст. В нашем случае, мы можем себе только представлять как все это выглядит у него, поскольку исходников у нас нет! :-( Нам прийдется спуститься до начала начал, и смотреть на язык Ассемблера, который наверное большинство из вас испугает и навсегда заставит оставить эту дурацкую затею - писать читы.
Ассемблер, не смотря на то что язык низкого уровня, все-же в нем соблюдается та же последовательность что и у программиста в исходниках, но здесь оно разбито на более мелкий и детальный код, такой, который сможет понимать процессор вашего компьютера. Здесь есть те же переменные, только они выступают не как удобоваримые глазу в языке высокого уровня, а в виде регистров процессора которых у нас ограниченное число и стека, той непонятной пока для вас штуки, к которой мы прийдем в других уроках. И конечно же никуда не деваются от нас текстовые строки. Давайте посмотрим строку №2 нашего блока, как примерно это выглядит на ассемблере
PUSH [перем]переменная_указывающая_на_файл
PUSH [текстовая_строка]"jump_speed"
CALL [функция]получить_параметр
Примерно вот так (понимать не буквально, а логически) это будет выглядеть под дизассемблером для большинства программ написанных на языке Си. Т.е. сначала в стек передаются параметры для функции, потом идет вызов самой функции, ну а дальше будет производится уже манипуляция с полученным значением из конфигурации, запись его куда-нибудь в память объекта или в промежуточную область памяти для последующей записи в объект, не важно.
Из приведенного выше блока видно, что текстовая строка в ассемблерном коде тоеж есть, и она послужит нам отправной точкой! Мы найдем то место, где считывается параметр!
Нажатием правой кнопки мыши где-нибудь на пустом месте в секции №1 отладчика, выбираем меню "Search for ... -> All referenced text strings", далее в появившемся окне снова на пустом месте жмем правую кнопку мыши и выбираем "Search for text", в открывшемся окне, набираем нужную нам строку "jump_speed", когда мы ее найдем, нажимаем на на клавиатуре клавишу F2, для того чтобы поставить точку останова программы на исполнение. Точка останова сработает в тот момент времени, когда программа дойдет до выполнения инструкции ассемблера находящейся в этой строке (по этому адресу). Когда мы поставили точку останова, мы можем нажать F9, для того чтобы продолжить выполнение программы. Когда снова произойдет остановка, нажимая клавишу F8 (но без фанатизма, не нужно жать 1000 раз, обычно то что нас интересует происходит рядом, в ближайших 10-15 инструкций, по крайней мере в большинстве случаев), просмотрите что происходит, будут меняться значеня в секции №3, будут меняться значения в секции №4, и обратите внимание на секцию которая находится слева по центру, между секциями №1 и №2, это информационная секция, которая упрощает жизнь, в ней часто видны цифры и не только, в удобоваримом виде. Так вот, как только вы в ней увидите ST0=6.0000000 (это значение высоты прыжка заданное конфигурацией, в данном случае интересует именно это), нажмите на этой строчке правой кнопкой мыши, и выбирите "Modify value", в открывшемся окошке введите например 50, нажмите "ok", и затем на клавиатуре F9, если же вы не увидели ST0=6.00000000, то скорее всего нужно поискать в другом месте. Если же увидели и исправили, попробуйте прыгнуть, скорее всего получится. Если не получилось, ищите следующую строку, возможно эта была для одиночной игры, а вы пробуете подправить для сетевой, или же наоборот, ниходитесь в сетевой, а подправить пробуете для одиночной. Параметры для сетевой игры и одиночной могут быть разными. Если не нашли нужную строку, пробуйте искать в других модулях и библиотеках и т.д. (c) CheatON.ru
Автор оригинальной статьи ShadowAGT
| |
- Комментов [3]
- Просмотров: 2932
|
Уважаемый посетитель, Вы зашли на сайт, как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо авторизоваться на сайте под своим ником.
Мы рекомендуем Вам зарегистрироваться либо авторизоваться на сайте под своим ником.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.