@pqgg7nwkd4

Как узнать где будет располагаться кода в памяти EXE?

Добрый день.

Делаю патч для EXE файла.
Нашел необходимое место в EXE файле по смещению O1.
В новом коде имеется команда:
CPU Disasm
Address   Hex dump          Command                                  Comments
008058D1    D80D F24C8000   FMUL DWORD PTR DS:[804CF2]               ; FLOAT 4472.420

По адресу 804CF2 должно находится число 100.00.

Это число я кладу за кодом:
CPU Disasm
Address   Hex dump          Command                                  Comments
008058F0   /EB 08           JMP SHORT 008058FA
008058F2   |0000            ADD BYTE PTR DS:[EAX],AL
008058F4   |C8 4290 90      ENTER 9042,90
008058F8   |90              NOP
008058F9   |90              NOP
008058FA   \90              NOP

0000C842 - это 100.00.

Но на этапе патча я не могу определить этот адрес и записать его в файл.
Я прибавляю к смещению: O1 + $00400000, но все-равно "промахиваюсь".
Как это сделать?
Спасибо?
  • Вопрос задан
  • 452 просмотра
Пригласить эксперта
Ответы на вопрос 2
@vilgeforce
Раздолбай и программист
В общем, непонятно что именно из чего вы хотите получить. У вас есть некий "адрес" - 0x804CF2 и вы хотите найти смещение в этом EXE-файле, которое соответствует этому адресу?
Ответ написан
@none7
Вот говорил же злые хакеры всё уже сделали за Вас. Утилита PE Tools, выбрать процесс, выбрать исполняемый файл, ПКМ, PE editor -> read only, FLC(File Location Calculator), RVA, VA, file offset, считает, что угодно из чего угодно. Делать подсчёт в патчере смысла нет, если это не тот самый исполняемый файл, что и у Вас, то Вы его своим RVA to FO попросту сломаете. Просто запишите хеш файла и смещение в файле в исходник патчера. Кстати нагуглить код функции было проще простого rva to file offset
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы