c++ - 如何在 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], 0x0F4240; <-------------
jmp return_address;
}
}
void Main_thread() {
while (1) {
Hook((PBYTE)_TOJUMP, &NewInitDamageBuff, bak_InitDamageBuff, 6);
}
}
它有什么问题?
编译器是 Visual Studio
我在葡萄牙语中使用它,但我会尝试翻译错误
- 号码的后缀不正确
-整数 litarals 必须至少有一个数字
- 坏东西
解决方案
推荐阅读
- php - POST 请求被重定向到 GET 请求
- mysql - MySql Connect 用 Kemal 迷失在 Crystal 语言中
- python - 从发布者接收数据后,如何在 Tkinter 窗口上触发图像更改?
- c++ - 为什么 C 中的 double 打印的十进制数字比 C++ 少?
- prolog - 数字列表的序言模式识别
- api - Icinga2 API - 从模板中获取特定主机
- visual-c++ - 如何使子树项目响应 MFC 中的单击事件
- java - Matlab 代码到 Java 程序的转换
- javascript - 页面重定向不适用于 Android 设备
- r - R - 带有字符列到 json 的数据框