Сейчас на форуме: igorcauret, Rio (+6 невидимых)

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

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

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

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

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

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


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




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

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

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



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

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

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

-----
TEST YOUR MIGHT





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

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

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



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

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

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

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

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



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

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

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



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

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

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

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

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

-----
TEST YOUR MIGHT




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

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

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

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



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

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

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

-----
TEST YOUR MIGHT





Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

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

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

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

-----
Лучше быть одиноким, но свободным © $me





Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

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


--> Скайрим <--

-----
Array[Login..Logout] of Life




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

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

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

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

Что скажете, я на верном пути ?


 eXeL@B —› Вопросы новичков —› Помогите найти адрес переменной в игре "Скайрим"
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати