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

Динамическое смещение


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

В общем происходит динамическое смещение на некое ESI*4 значение ESI обычно от 2B до С8

Как найти статический указатель на эту штуку? :( Искал где хранится это 0000002B но адресов 15к

 

3chA6i8.png

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

В данном случае ESI - это индекс какого-то массива. Невнимательно ты уроки читаешь и смотришь. А для поиска указателя тебе нужно искать содержимое EDX.

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

К EDX у меня есть статический указатель, к нему без проблем обращаюсь,

но для конечного определения данных надо определить какое же все таки смещение

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

Значение esi ты сам написал, оно у тебя в диапозоне от 2B до С8.

Так именно регистр esi можно будет использовать для фильтра, примерно так:

cmp esi,2bjne originalcodemov [edx+esi*4],.... // и здесь значение соответствующей характеристики, а характеристика соответствует esi
Ссылка на комментарий
Поделиться на другие сайты

Так на С++ думаю ещё проще будет. 

Просто найди какое значение ESI соответствует твоей нужной характеристики (ну допустим Healts - при esi равной 2b) и расчитай смещение вручную 2b*4 = ac, а дальше подставляй [edx + ac] и всё.

А для edx ты написал, что указатели уже нашёл.

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

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

(довольно странно, остальные смещения характеристик от другого сохранения персонажа не меняются)

Статический адрес к ESI нельзя узнать что ли?

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

Если тебе нужно изменить характеристику для всех персонажей, то тоже довольно просто.

Диапозон у тебя есть  от 2B до С8. Опять же рассчитываешь смещение вручную. И делаешь от и до. от [edx +2b*4] и до [edx +с8*4] с шагом 4 байта.

 

Если для конкретного персонажа, то ставишь конкретное значение esi.

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

Статический адрес к ESI нельзя узнать что ли?

 

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

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

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

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

 

Еще я нашел другой указатель без постоянного смещения, но не смог добраться до статического значения 

Потому что через 2 указателя я прихожу к этим 3 адресам, и игра вылетает при попытке дебага, перепробовал все отладчики в CE

FpEbWnh.png

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

Так что ребят, не подскажете как к таким адресам обратиться

Через указатели прихожу к ним, но при БП вылетает игра конкретно на них, в любом дебагере CE

FpEbWnh.png

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

Через указатели прихожу к ним, но при БП вылетает игра конкретно на них, в любом дебагере CE

Попробуй DBVM задействовать, хотя он нестабилен, и гарантий не дает, но я так понимаю, в твоем случае - стоит попробовать.
Ссылка на комментарий
Поделиться на другие сайты

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

это kernelmode? у меня с ним синий экран выбивало

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

×
×
  • Создать...

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

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