Это мой первый пост, и я новичок в сборке и отладке, так что поддержите меня, пожалуйста.
Я пытался внедрить некоторый код (небольшой вызов MessageBoxA) в исполняемый файл Блокнота Windows 7. Однако столкнулся с проблемой адресов. Сначала я открыл исполняемый файл в OllyDbg, затем перешел к строке, содержащей ASCII-текст «notepad.pdb». Затем я помещаю под ней строку ASCII (например, «ИНЖЕКЦИОННЫЙ БЛОКНОТ»). Далее, ниже, я ввел этот ассемблерный код:
PUSH 0
PUSH address_of_ASCII_string ; In this case, 00A6B668C
PUSH address_of_ASCII_string ; In this case, 00A6B668C
PUSH 0
CALL MessageBoxA
Далее я перешел к первой строке кода в программе (просто щелкнув правой кнопкой мыши и нажав Go to Origin (или просто нажав * на цифровой клавиатуре)) Затем я заменил первую строку с инструкцией JMP на адрес первой PUSH 0 в моем введенном коде. Затем я помещаю инструкцию, которую я заменил, в конец введенного кода. После этого я помещаю инструкцию JMP в строку кода после моей инструкции JMP, которая переходит к моему внедренному коду (да, я только что описал кодовую пещеру или что-то в этом роде). Все работает нормально, когда я запускаю его. Однако когда я сохраняю измененный код в новый исполняемый файл и снова запускаю его с помощью OllyDbg, он не работает. Когда я пытаюсь сослаться на введенную строку ASCII, адрес совершенно неверен. Пример на картинках ниже:
Как видите, я запихиваю строку в стек, но когда я снова загружаю измененную программу в отладчик, адрес строки меняется, а мой код — нет. Поэтому, когда я вызываю функцию MessageBoxA, она выдает ошибку, потому что я загрузил неправильный адрес для аргументов Text и Caption. Как я могу это исправить?
.relocs
. один из способов заставить ваш патч работать - отключить relocs на exe. для этого вам нужно установить флагIMAGE_FILE_RELOCS_STRIPPED
вIMAGE_FILE_HEADER.Characteristics
- после этого exe всегда будет загружаться по постоянному адресу, а возможные хардкодные абсолютные адреса - person RbMm   schedule 23.12.2016ASLR
. exe всегда будет загружаться по собственному базовому адресу. это ничего не ломает ни в одном exe. но вы способ исправления .. - person RbMm   schedule 23.12.2016