gpt4 book ai didi

c++ - 在 C++ 中调用 ASM 函数

转载 作者:行者123 更新时间:2023-11-28 08:16:59 24 4
gpt4 key购买 nike

我昨天问了一个问题,如何调用 __fastcall 函数,效果很好。

现在我要调用的最后一个函数遇到了一些困难。

这里是ASM函数。

seg000:0043671F                 push    0AA2BAD1Bh
seg000:00436724 lea ecx, [ebp+var_14]
seg000:00436727 call sub_458E90

IDA PRO 将其标记为。

int __thiscall sub_458E90(void *this, int a2)

是这样称呼的

sub_458E90(&v9, -1439978213);

现在这是我试过的代码,它只是在运行时给了我一个异常

   int addr = 0x458E90;

__declspec(naked) void sub_458E90(int buffer, int key)
{
__asm{
push key
mov ecx, buffer
call [addr]
retn
}
}

也试过

__declspec(naked) void sub_458E90_1(int buffer, int key)
{
__asm{
push key
mov ecx, buffer
jmp [addr]
}
}

都给我

应用程序错误“0x00458e93”处的指令引用了“0x00000000”处的内存。无法“读取”内存。

最佳答案

已解决 ebx must of be used for key。就这么简单。

void 也必须更改为 int 忘记了。 (很可能不重要)

关于c++ - 在 C++ 中调用 ASM 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7409656/

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