Я пытаюсь написать exe-упаковщик / защитник, чтобы узнать больше о ассемблере, c ++ и о том, как работают PE-файлы В настоящее время он работает, поэтому раздел, содержащий EP, XORed с ключом, и создается новый раздел, содержащий мой код дешифрования. Все отлично работает, за исключением случаев, когда я пытаюсь и JMP к оригинальному EP после расшифровки.
В основном я делаю это:
DWORD originalEntryPoint = optionalHeader->AddressOfEntryPoint;
// -- snip -- //
crypted.put(0xE9);
crypted.write((char*)&orginalEntryPoint, sizeof(DWORD));
Но вместо того, чтобы перейти к точке входа, ollydbg показывает, что этот код разбирается на:
00404030 .-E9 00100000 JMP 00405035 ; should be 00401000 =[
и когда я пытаюсь изменить его вручную в olly, новый код операции отображается как
00404030 -E9 CBCFFFFF JMP crypted.00401000
Откуда взялся 0xCBCFFFFF? Как бы я сгенерировал это со стороны C ++?