gpt4 book ai didi

C - 运行时内联 asm 修补

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:50 29 4
gpt4 key购买 nike

我正在用 C 编写程序,并且使用内联汇编。在内联汇编代码中有一些地址,我想在运行时修补它们。

代码的快速示例是这样的:

void __declspec(naked) inline(void)
{
mov eax, 0xAABBCCDD
call 0xAABBCCDD
}

假设我想修改主 C 程序中的 0xAABBCCDD 值。我试图做的是调用 VirtualProtect 一个是函数的指针以使其可写,然后调用 memcpy 将适当的值添加到代码中。

DWORD old;
VirtualProtect(inline, len, PAGE_EXECUTE_READWRITE, &old);

但是 VirtualProtect 失败并且 GetLastError() 返回 487,这意味着访问无效地址。任何人都知道这个问题?谢谢

最佳答案

这行不通吗?

int X = 0xAABBCCDD;

void __declspec(naked) inline(void)
{
mov eax, [X]
call [X]
}

关于C - 运行时内联 asm 修补,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8608848/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com