asm에서 syscall을 통해 NtReadVirtualMemory를 호출하려고합니다. 나는 몇 가지 이유로 이것을하고 있지만 중요한 것은 아니다. 그래서 난 내 주요 헤더 파일과 같이 함수를 정의 :C++ SysCall asm 미해결 외부
extern "C" NTSTATUS SysWPM(HANDLE ProcessHandle, PVOID BaseAddress,
PVOID Buffer, ULONG NumberOfBytesToWrite, PULONG NumberOfBytesWritten);
내가 믿는 매개 변수 내가 다음 프로젝트에 ASM 파일을 만든
정확합니다. 나는 그것의 아주 작은 부분이기 때문에 단지이 일을 시도하고 완료하기에 충분하다는 것을 압니다. 아마도이 asm 파일을 어디에서나 포함 할 필요가 없기 때문에 나는 그것을 남겼습니다. 여기에 :
.code
SysWPM proc
mov r10, rcx
mov eac, 37h
syscall
ret
SysWPM endp
end
그러나 내가 컴파일 할 때 해결되지 않은 외부 오류가 발생합니다. 나는 이것이이 ASM 파일 내에서 정의 할 필요가 있기 때문에 이것이라고 믿는다. 그러나 나는 그것을 수행하는 방법에 대해 확신하지 못한다. 내가 뭘 잘못했는지/어떻게해야합니까?
: 그 질문에 대한 정확한 오류가 여기에입니다 :
는 내가 윈도우 7에 오전과 실제 콜 지수는이 표에서와 같이 37을 언급하는 것이 유용 할 수 있습니다 생각
1>Main.obj : error LNK2019: unresolved external symbol _SysWPM referenced in function _main
1>c:\users\Reece\documents\visual studio 2015\Projects\cs-ext\Debug\cs-ext.exe : fatal error LNK1120: 1 unresolved externals
여전히 주석 솔루션으로 오류가 :
,691,363 (210)[email protected] proc
mov r10, rcx
mov eax, 37h ;
syscall
ret
[email protected] endp
extern "C" NTSTATUS NTAPI SysWPM(HANDLE ProcessHandle, PVOID BaseAddress,
PVOID Buffer, ULONG NumberOfBytesToWrite, PULONG NumberOfBytesWritten);
링커에서 정확한 오류를 표시 할 수 있습니까? – Alden
또한 asm 파일을 어떻게 컴파일합니까? – Alden
이것은 어떻게하는 것이 아닙니다. 자신의 코드에서'syscall' 명령을 사용하지 마십시오. NtDll.dll에서 내 보낸 함수에 대한 일반적인'call' 만 사용하면됩니다. –