Как вставить байты с помощью OllyDbg?


0

Я развиваю игру в GameMaker: Studio и столкнулся с незначительной проблемой. Независимо от того, что я делаю, загружается полезная нагрузка игр, называется и называется как data.win. Я хотел бы назвать его чем-то отличным от data.win и все еще иметь возможность запускать его. Я смог точно указать ссылку на полезную нагрузку в исполняемом файле игры с помощью OllyDbg, но я, конечно, ограничен модификацией значения только с восемью байтами. Я знаю, что можно вставить байты в OllyDbg, но я не могу понять, как это сделать.

Here is the value I found in referenced strings

Я был в состоянии успешно изменить расширение, но только что. Я сделал это, чтобы убедиться, что изменение этого значения напрямую фактически работает.

Да, я полностью осознает, что это имеет потенциал сломать исполняемый файл, но это риск, который я готов сделать. Я уже использовал Binary edit как с, так и без флажка Keep size. Я до сих пор несколько новичок в OllyDbg, поэтому любая помощь приветствуется.

2

Итак, вы пытаетесь изменить строку, увеличив ее размер? Фактически вы можете вставить там более 8 байтов, если снять флажок «Сохранить размер» и продолжить ввод байтов как обычно (не забудьте вставить 0 байт в конце строки), но в итоге вы получите повреждение следующих данных (следующая строка в вашем случае)

Здесь у вас есть 2 решения:

  1. забыть о вашей следующей строке, коррумпированного это
  2. создания вы подаете имя строку в другом пустом пространстве в памяти, изменить все ссылки вашу исходную строку «data.win» для ссылки на вашу новую строку (вы можете найти все ссылки по ссылке RMB в начале строки -> Найти ссылки на -> Выбранный блок) и сохранить измененный исполняемый файл
  0

Я изменил строку, используя первый метод (обычно это то, что я делаю), но если он превышает восемь байтов, исполняемый файл больше не может найти полезную нагрузку. Переписывание соседней строки не кажется идеальным. Есть ли способ вставить дополнительные байты, которые будут перемещать остальную часть данных на столько байтов, которые вставлены? Второй вариант звучит многообещающе, но я даже не знаю, с чего начать. 06 авг. 172017-08-06 18:26:05

  0

Как вы думаете, вы можете переместить данные? Это невозможно. Если ваша программа знает, что какая-то конкретная переменная находится по адресу 1D400, вы не можете просто ее переместить, вы будете недействительны в основном ВСЕ. «исполняемый файл больше не может найти полезную нагрузку» - что это значит? Можете ли вы объяснить более подробно? Все должно быть хорошо, просто перепишите эту следующую бесполезную строку. Или, если вы этого не хотите, у вас есть чрезвычайно сложное решение. Если вы все еще заинтересованы в этом, я могу попытаться объяснить это, но вам все равно придется делать работу самостоятельно 06 авг. 172017-08-06 22:50:50

  0

Если полезная нагрузка остается как 'data.win', игра будет запускаться автоматически и обычно. Если, однако, полезная нагрузка называется чем-то _other than_ "' data.win', исполняемый файл вызывает 'explorer.exe' и просит пользователя вручную просмотреть полезную нагрузку. Теперь этот метод работает, но, очевидно, не является потоковым. Я перезаписал следующую строку, но при этом исполняемый файл просит снова просмотреть. Я считал, что перенос данных был необходим, потому что я считаю, что значение data.win должно находиться в том месте, в котором оно находится, сохраняя при этом байты между следующей строкой. 07 авг. 172017-08-07 08:51:54

  0

Строка - это переменная, состоящая из символов, заканчивающихся специальными байтами 0x00 0x00, чтобы указать конец строки (в вашем случае это может быть 4 0 байта, как 00000000, потому что это зависит от компилятора). Если вы удлинили длину, все должно работать правильно.Если ваш исполняемый файл не может найти файл, есть много причин, почему он не может. Может быть, есть еще одна строка «data.win», которая ссылается на этот файл, или файл просто не существует 07 авг. 172017-08-07 13:53:47

  0

Пожалуйста, предоставьте несколько скриншотов, я понятия не имею, что вы изменили, поэтому я не могу правильно помочь вам 07 авг. 172017-08-07 14:00:14