Предположим, что я выделил адрес, на котором размещена моя кодовая пещера, с помощью VirtualAllocEx
(он возвращает адрес), и я записал свой код на этот адрес с помощью WriteProcessMemory()
.
Вот вопрос:
Как мне написать переход к моей кодовой пещере? Я знаю, что переходы начинаются с "E9
", но как мне преобразовать адрес, возвращенный VirtualAllocEx
, в правильный UInt32 (dword), чтобы отладчик / компилятор понимал инструкцию?
Например:
Я нахожусь по адресу 00402020
(OEP нативного приложения). Я пишу прыжок к 004028CF
(пустое место) "JMP 004028CF
". Инструкция в байтах выглядит так:
CPU Disasm
Address Hex dump Command Comments
00402020 E9 AA080000 JMP 004028CF
«E9
» - это то, как мы указываем JMP. Как насчет "AA080000
", как мне сгенерировать это?
Мне нужно сделать нечто подобное, чтобы я мог инициализировать JMP для моей кодовой пещеры, которая будет расположена по адресу, возвращаемому VirtualAllocEx()
.
Любая помощь будет с благодарностью!
Заранее спасибо.