eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: forever_ (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› Помогите найти адрес переменной в игре "Скайрим"
Посл.ответ Сообщение

Ранг: 0.8 (гость)
Статус: Участник

Создано: 6 апреля 2015 16:25 New!
Цитата · Личное сообщение · #1

Добрый день.
Нужна помощь в анализе кода игры. В первую очередь хотелось бы узнать у знающих людей сам алгоритм анализа и какими инструментами пользоваться. С чего нужно начать в первую очередь.

Есть игрушка - Скайрим. Для неё мод-мейкерами написана специальная программа, называемая SKSE, которая позволяет подгружать свои DLL-ки в игру, добавляя таким образом новые функции или меняя поведение самого движка.
У меня сейчас есть такая DLL-ка, которая меняет скорость падения персонажа (99,9% её кода не мои, я просто случайно наткнулся на исходники, делающие почти то, что мне было нужно, и вставил там несколько строк своего кода).
Моя цель: прочитать в своей DLL переменную самой игры, и в зависимости от её значения менять скорость падения.

Задача же состоит в том, чтобы найти адрес этой переменной, имеющей имя "fJumpHeightMin", который можно было бы использовать в качестве указателя из моей DLL, для получения её значения.


Не бейте больно сразу, описал как мог. Думаю в данном случае ЕХЕ-шник Скайрима прикладывать не нужно.
Просто я раньше никогда не занимался анализом других программ, но сейчас очень захотелось в это вникнуть.


Ранг: 1003.6 (!!!!)
Статус: Участник

Создано: 6 апреля 2015 17:04 New!
Цитата · Личное сообщение · #2

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

Ранг: 95.7 (постоянный)
Статус: Участник

Создано: 6 апреля 2015 17:06 New!
Цитата · Личное сообщение · #3

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


Ранг: 1003.6 (!!!!)
Статус: Участник

Создано: 6 апреля 2015 17:08 New!
Цитата · Личное сообщение · #4

ой
ну адрес переменной при наличии исходников тоже легко
берете ИДА ПРО, загружаете свою программу, и ищете нужные переменные

Ранг: 0.8 (гость)
Статус: Участник

Создано: 6 апреля 2015 19:47 · Поправил: Anton01 New!
Цитата · Личное сообщение · #5

reversecode:
Программировать умею, но чужие программки практически не разбирал.
Когда то пробовал SoftIce осваивать, но как то не пригодилось и забылось.

unknownproject:
CheatEngine это типа ArtMoney ? А найденный адрес можно будет прямо указать в своей DLL ?
В моём случае значение этой переменной не меняется динамически, но я её могу поменять игровым скриптом. Что собственно и делаю. А моя DLL-ка должна отследить это изменение и включить пониженную скорость падения (типо уменьшения гравитации).

reversecode:
Не не не, переменная храниться в коде игры (TesV.exe). Я сейчас открыл этот ЕХЕ файл просмотрщиком и по поиску нашёл её имя внутри. Будет просто чудесно, если IDA сможет сразу, по имени, найти мне её адрес.

Ранг: 92.3 (постоянный)
Статус: Участник

Создано: 6 апреля 2015 19:59 New!
Цитата · Личное сообщение · #6

Надеюсь за рекламу не посчитают. Что бы получить хотя бы основы создания "модов" вбейте в гугл ->
forum gamehacklab

Ранг: 95.7 (постоянный)
Статус: Участник

Создано: 6 апреля 2015 20:55 · Поправил: unknownproject New!
Цитата · Личное сообщение · #7

Anton01 пишет:
CheatEngine это типа ArtMoney ?

В разы лучше и бесплатный абсолютно + имеется встроенный дизассемблер, анализатор структур и скриптовый язык.Есть поиск многоуровневых указателелей, возможность установки бряка на доступ или запись (отладочные функции).

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

Ранг: 0.8 (гость)
Статус: Участник

Создано: 7 апреля 2015 13:17 New!
Цитата · Личное сообщение · #8

vovanre спасибо, почитаю.

unknownproject понял, уже качаю . Модкит - это имеется в виду CreationKit, редактор от Бесезды для создания модов, или это набор анализаторов, заточенных под Скайрим ?

Ранг: 95.7 (постоянный)
Статус: Участник

Создано: 7 апреля 2015 13:38 · Поправил: unknownproject New!
Цитата · Личное сообщение · #9

От бесезды.Я открыл в нем главный архив игры и нашел нужную Вам функцию по ID.


Ранг: 534.6 (!)
Статус: Uploader
retired

Создано: 7 апреля 2015 14:28 New!
Цитата · Личное сообщение · #10

unknownproject пишет:
Все никак не дойдут руки ни пройти игру, ни глянусь, что он из себя представляет.

А что вы понимаете под пройти что-то с серии TES? ))) Там же есть простые бесконечные задания. Я в свое время наиграл более 300 часов в скайрим, основные сюжетные линии проходятся быстро, но я их откладывал на потом и проходил минорные квесты. После того как больше не мог найти новых квестов тупо бегал и открывал всю карту за это и люблю игры с большим открытым миром. )))


Ранг: 259.2 (наставник)
Статус: Участник
RBC

Создано: 7 апреля 2015 16:09 · Поправил: Kindly New!
Цитата · Личное сообщение · #11

Ранг: 0.8 (гость)
Статус: Участник

Создано: 8 апреля 2015 00:09 New!
Цитата · Личное сообщение · #12

unknownproject Вы имени в виду переменную ? (я переменную искал). Но мне нужно получить значение этой переменной в своей DLL, подгружаемой через SKSE к "TesV.exe", тут Creation Kit не помощник (или я чего то не понимаю ?).

Я тут почитал немного, выходит план моих действий должен быть таким:
1. Запустить CheatEngine и найти значение, которое хранит эта переменная (должно быть 300.0f)
2. Полученный адрес памяти записать (например адрес=0х112233), и потом обратиться к этой памяти из своей DLL следующим образом: float JumpHeight = (float *)(0х112233).

Что скажете, я на верном пути ?
 eXeL@B —› Вопросы новичков —› Помогите найти адрес переменной в игре "Скайрим"

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS