Фрилансеры предложат решение вашей задачи уже через несколько минут!

Публикация заказа на фриланс бирже не займет много времени.

11 лет назад
Artem Razin
Гость
38 лет, Россия
12 лет в сервисе
Был онлайн 2 года назад
11 лет назад

Требуется написать функцию на C++, предназначенную для переноса блока кода с одного адреса в другой.

Пример:

SomeAddress : mov eax, 0x4000
SomeAddress + 5 : jmp offset
...

после переноса на другой адрес:

SomeAddress1 : mov eax, 0x4000
SomeAddress1 + 5 : jmp offset1
...

в данном случае меняется offset1.

Таким образом, при переносе кода сохраняется его функциональность. Если операнд представляет из себя смещение от текущей инструкции, то он пересчитывается и т.д.

Надо, чтобы, функция умела обрабатывать как можно большее число инструкций.

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

Можно в качестве основы взять код из Microsoft Detours, файл %ProgramFiles%\Microsoft Research\Detours Express 2.1\src\disasm.cpp (я приложил этот файл).

Нужна поддержка как x86 так и x64.

Собираться должно под Visual C++ 6.0

  1. Прием заявок
  2. Выбор исполнителя
  3. Выполнение заказа
  4. Обмен отзывами
  • Рекламное место свободно
    23 дня за $8
  • Рекламное место свободно
    23 дня за $8
  • Рекламное место свободно
    23 дня за $8

Нет заявок

Другие заказы в категории «Системное программирование»

Здесь заказчик и фрилансеры могут обсуждать заказ до начала его выполнения.
Фрилансеры могут участвовать в обсуждении только после подачи заявки.
Здесь заказчик будет контролировать выполнение заказа и общаться с исполнителем.
Доступ к этому разделу имеют только заказчик и выбранный исполнитель.
Все материалы этого раздела закрыты от поисковых систем.