嘿,所以当我尝试编译我的代码时遇到一个未定义的函数错误,我不知道为什么。
这是我的文件: Api.h
extern "C" NTSTATUS NtWriteVirtualMem(HANDLE ProcessHandle, PVOID BaseAddress, PVOID Buffer, ULONG NumberOfBytesToWrite, PULONG NumberOfBytesWritten);
API_ASM.asm
.code
_NtWriteVirtualMem:
mov r10, rcx
mov eax, 3Ah
syscall
ret
end
它们都编译正确,但我收到一个错误,因为定义了 NtWriteVirtualMem 但我在我的 asm 中定义了它?
编辑 1。
所以我将代码更改为:
PUBLIC NtWriteVirtualMem
_TEXT SEGMENT
NtWriteVirtualMem PROC
mov r10, rcx
mov eax, 3Ah
syscall
ret
NtWriteVirtualMem ENDP
_TEXT ENDS
END
该程序现在可以编译,但写入不起作用。我已经对其进行了测试以查看 writeprocessmemory 是否有效并且确实有效。NtWriteVirtualMem
此外,当我将鼠标悬停在 C 源代码中的名称上时,我的 IDE 显示仍然未定义。
编辑 2。
此外,该操作的 NTSTATUS 返回码是最大负整数。