Перейти к содержанию

Как узнать адрес переменной в чужой программе и использовать его в своей DLL ?


Рекомендуемые сообщения

Помогите мне пожалуйста начать анализ программы в правильном направлении.

 

Вот моя задача:

Есть такая игрушка "Скайрим" (я для неё делаю мод).

Мне хочется получить значение её переменной "fJumpHeightMin" в своей DLL, подгружаемой через "SKSE_loader.exe" к запускаемому файлу игры "TesV.exe".

 

Я тут почитал, и выходит план моих действий должен быть таким:

1. Запустить CheatEngine для "TesV.exe" и найти адрес памяти (например: 0х11223344), который хранит определённое значение этой переменной (должно быть 300,0f)

2. Из своей DLL прочитать этот адрес следующим образом: 

"float JumpHeight = (float *)(0х11223344)"

 

И ещё два уточняющих вопроса:

- может ли отладчик IDA или OllyDbg сразу найти переменную по её имени ?

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

 

Заранее спасибо.

 

Ссылка на комментарий
Поделиться на другие сайты

Помогите мне пожалуйста начать анализ программы в правильном направлении.

 

Вот моя задача:

Есть такая игрушка "Скайрим" (я для неё делаю мод).

Мне хочется получить значение её переменной "fJumpHeightMin" в своей DLL, подгружаемой через "SKSE_loader.exe" к запускаемому файлу игры "TesV.exe".

Без напряга можно это сделать на с++. Для начала найди указатели на своё значение. В уроках Coder'a есть тема, как перегнать указатели на с++ (конкретно в формате .dll) вот и займись этим.

Насколько я понял, там это делается следующим образом: 

1. Получается базовый адрес модуля, в котором хранится твой адрес

2. Что-то прибавляем к чему-то, примешиваем оффсетиками

3. Магия, шурум бурум аха ваха лаха.

4. Готово!

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

Видео это скорее из ранних его уроков, где он FC1 ломал. Еще без голоса.

 

И ещё два уточняющих вопроса:

- может ли отладчик IDA или OllyDbg сразу найти переменную по её имени ?
- нужно ли как то преобразовывать адрес памяти, полученный с помощью CheatEngine, чтобы обратиться к нему из DLL, подгруженной к анализируемой программе ?

1. Ну незнаю... Может ли сантехник починить кран, зная, кто его изначально устанавливал?

2. Щта? Окей, побуду телепатом: если тип твоего значения, к примеру, float - то ты можешь получаемое значение привести к типу флоат. Можно это сделать, когда уже получишь его. Вывести, к примеру, в консоль через printf("Значение переменной: %f", peremennaya); Я не помню как нужно обозначать такое, знаю только что 16 ричка это %X.

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

Ссылка на комментарий
Поделиться на другие сайты

Спасибо.

Всё действительно оказалось достаточно просто (особенно когда есть такие хорошие туториалы !)

Переменная нашлась, прочиталась в DLL и работает прям как мне надо :)

 

ПС: я дольше обучалку по "Cheat Engine" проходил, чем переменную искал (обучался пол дня, а переменная нашлась за 5 секунд :D )

Изменено пользователем Anton
Ссылка на комментарий
Поделиться на другие сайты

Спасибо.

Всё действительно оказалось достаточно просто (особенно когда есть такие хорошие туториалы !)

Переменная нашлась, прочиталась в DLL и работает прям как мне надо :)

 

ПС: я дольше обучалку по "Cheat Engine" проходил, чем переменную искал (обучался пол дня, а переменная нашлась за 5 секунд :D )

Зер гуд. Тему можно закрывать? 

P.s. это нужно для модеров

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.