Привет, я получаю неопределенную ошибку функции, когда пытаюсь скомпилировать свой код, и я не знаю почему.
Вот мои файлы: 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, и это делает. Кроме того, моя среда IDE показывает, что NtWriteVirtualMem
по-прежнему не определено, когда я наведите курсор на имя в источнике C.
EDIT 2.
Кроме того, NTSTATUS Код возврата для операции - отрицательное максимальное целое число.