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

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


1st

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

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

 

Научился находить поинтеры. Ищу значение, затем выполняю pointer scan, выгружаю игру, снова ищу значения и отсеиваю по новому адресу и так в цикле пока не доберусь до нужных результатов. С 4-байтовыми значениями в памяти проблем нет, так же с float, но когда дело доходит до получения поинтеров с 1-байтовыми и 2-байтовыми значениями начинаются приколы: любо после отсеивания я получаю 0 результатов, либо когда сканирую получаю смещение в 1 байт и значение уже совершенно другое в таблице указателей.

 

Я разумеется гуглил, читал, но так нифига и не понял, что я делаю не так. Может подкрутить настройки при поиске какие-то нужно? Всем кто поможет, от меня огромный респект. 

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

Хочу еще добавить. Не на 1 байт смещение, это я оговорился, а на 2 байта.
Вот пример: ["game.exe"+00298B70]+476 это руками я уже поправил
А в таблице найденных поинтеров было ["game.exe"+00298B70]+474 при поиске 1-байтовых значений

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

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

Двигаюсь от простого к сложному.

И в ненадежности вообще поинтеров я уже тоже осведомлен, но пока еще ни разу не сталкивался, чтобы какой-то из них не работал на другой машине

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

17 минут назад, Antonshka сказал:

Не помню как там ищутся указатели в СЕ, но что если искать четырех байтовое, а после нахождения, просто сменить тип, на 1 байт?

Спасибо. Конечно меняю, но это влияет только на отображаемое значение.

Кстати при отсеивании по новому значению (не по новому адресу) в списке указателей стоит только 4 байт, float и double

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

17 минут назад, 1st сказал:

Спасибо. Конечно меняю, но это влияет только на отображаемое значение.

Кстати при отсеивании по новому значению (не по новому адресу) в списке указателей стоит только 4 байт, float и double

Кажется я не так выразился, и ты меня не понял.

Вот пример - есть адрес, 0041A510. Его можно использовать как для 1 байтового значения, так и для четырех, смотря на выставленный тип.

Когда ты делаешь сканирование, сканируй значение этого адреса как 4 байтовое, а затем, когда уже добавишь верный указатель в таблицу, выстави его на 1 байт.

Также, если у тебя адрес не выравнен по четырем байтам, то есть не 0041A510, а 0041A511, или 0041A512. То сканируй значение выравненного адреса, то есть значение адреса 0041A510, или 0041A514. Затем, в конце, просто сместишь указатель на один, два, или три байта.

 

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

21 минуту назад, Antonshka сказал:

Кажется я не так выразился, и ты меня не понял.

Вот пример - есть адрес, 0041A510. Его можно использовать как для 1 байтового значения, так и для четырех, смотря на выставленный тип.

Когда ты делаешь сканирование, сканируй значение этого адреса как 4 байтовое, а затем, когда уже добавишь верный указатель в таблицу, выстави его на 1 байт.

Также, если у тебя адрес не выравнен по четырем байтам, то есть не 0041A510, а 0041A511, или 0041A512. То сканируй значение выравненного адреса, то есть значение адреса 0041A510, или 0041A514. Затем, в конце, просто сместишь указатель на один, два, или три байта.

 

Вооот, это уже интересно. Про выравнивание. Сейчас буду пробовать.

Спасибо)

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

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

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

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