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

как заморозить все значения инструкции?


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

допустим скрипт

fstp dword ptr [edi+000001C8]

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

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

Что за игра?

скидывай инструкцию полностью, название игры тоже желательно

как помочь если не ясно откуда ты этот код взял, с какой игры? :-D

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

Если инструкция только читает данные, то нет. Если пишет, то да. Я так ступил когда делал левитацию, заморозку высоты. Нопил инструкцию чтения и ничего в игре не происходило, ни вылета, ни заморозки. Занопил инструкцию записи и вуаля, начал левитировать)

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

а разве занопить инструкцию это не то самое что заморозить значение ?

зависит от того что мы нопим, в данном случае, если занопить, в стеке fpu, в часности ST(0), останется висеть значение, которого там быть не должно. Поэтому занопливание, замену инструкций следует делать очень осторожно, или хотябы прочитать предварительно про то, что эта инструкция делает.


fst копирует значение ST(i) в указанный адрес памяти. Чтобы получить округлённое целое - fist

fstp передача вещественного ЧИСЛА из FPU в ячейку памяти, и вызывает смещение ST(i) выталкивая операнд из стека

Точность будет такая, какая укажешь (dword/qword/tword) причем REAL4, REAL8 и REAL10 в памяти, REAL10 в регистрах FPU


В данном случае fstp, значит операнд выпадет из стека и редактировать ST(0) не требуется, а только значения переданные в ячейку памяти


fstp dword ptr [edi+000001C8]
mov [edi+000001C8],#0

В случае fst dword ptr [edi+000001C8]


fstp dword ptr [edi+000001C8]
mov [edi+000001C8],#0
fld dword ptr [edi+000001C8]

или же пролистать вверх по коду и найти инструкцию которая последней оказывает влияние на st(0) и там шаманить.


Если инструкция только читает данные, то нет. Если пишет, то да. Я так ступил когда делал левитацию, заморозку высоты. Нопил инструкцию чтения и ничего в игре не происходило, ни вылета, ни заморозки. Занопил инструкцию записи и вуаля, начал левитировать)

По сути дела вы правы, суть в записи и чтении значения. Однако в версии CE 6.3 существует доступ и запись, я как правло ставлю оба бряка, а там по ситуации.

Я за изменение входных/выходных данных, а не ломание исходного кода.

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

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

Остается только повторить и немного добавить.

fstp действительно нежелательно нопить. Скорее всего, придется делать новую инъекцию кода и дописывать после fstp интструкцию mov[адрес], значение.

Ну и добавлю из того, что не было написано. Не нужно ставить цель делать инъекцию кода только по адресу, которую показал отладчик в окне срабатывания брейкпоинтов. Посмотрите инструкции выше и даже ниже. Возможно какие-то из них можно занопить или заменить. Может так получиться, что даже прыгать на новую память не нужно будет.

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

Остается только повторить и немного добавить.

fstp действительно нежелательно нопить. Скорее всего, придется делать новую инъекцию кода и дописывать после fstp интструкцию mov[адрес], значение.

Ну и добавлю из того, что не было написано. Не нужно ставить цель делать инъекцию кода только по адресу, которую показал отладчик в окне срабатывания брейкпоинтов. Посмотрите инструкции выше и даже ниже. Возможно какие-то из них можно занопить или заменить. Может так получиться, что даже прыгать на новую память не нужно будет.

Полностью с тобой согласен, я слишком ленив, чтобы пользоваться АА, но иногда просто без вариантов.

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

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

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

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