首页 > 解决方案 > 如何在 C++ 中内联汇编?

问题描述

我正在尝试将一些程序集注入到应用程序中,但在这一行出现错误:这是完整的代码

#define _TOJUMP 0xCDFA43 

BYTE bak_InitDamageBuff[6];

void unHook(BYTE* from, BYTE* backup, size_t size) {
    DWORD protect;
    VirtualProtect(from, size, PAGE_EXECUTE_READWRITE, &protect);
    memcpy(from, backup, size);
    VirtualProtect(from, size, protect, &protect);
}

void Hook(BYTE* from, void* to, BYTE* backup, size_t size) {
    DWORD protect;
    VirtualProtect(from, size, PAGE_EXECUTE_READWRITE, &protect);
    memcpy(backup, from, size);
    DWORD diff = ((DWORD)to - (DWORD)from) - size;
    memset(from, 0x90, size);
    *(BYTE*)from = 0xE9;
    *(DWORD*)((DWORD)from + 1) = diff;
    VirtualProtect(from, size, protect, &protect);
}

DWORD return_address = _TOJUMP + 0x6;
static __declspec(naked) void NewInitDamageBuff() {
    _asm {
        mov [edx + 0x29D0], 0x‭0F4240‬;    <-------------
        jmp return_address;
    }
}

void Main_thread() {
    while (1) {
        Hook((PBYTE)_TOJUMP, &NewInitDamageBuff, bak_InitDamageBuff, 6);
    }
}

它有什么问题?

编译器是 Visual Studio

我在葡萄牙语中使用它,但我会尝试翻译错误

- 号码的后缀不正确

-整数 litarals 必须至少有一个数字

标签: c++visual-studioassemblyinline-assembly

解决方案



推荐阅读