2017-01-23 6 views
-1

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 파일 내에서 정의 할 필요가 있기 때문에 이것이라고 믿는다. 그러나 나는 그것을 수행하는 방법에 대해 확신하지 못한다. 내가 뭘 잘못했는지/어떻게해야합니까?

: 그 질문에 대한 정확한 오류가 여기에

table

입니다 :

는 내가 윈도우 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); 
+0

링커에서 정확한 오류를 표시 할 수 있습니까? – Alden

+0

또한 asm 파일을 어떻게 컴파일합니까? – Alden

+0

이것은 어떻게하는 것이 아닙니다. 자신의 코드에서'syscall' 명령을 사용하지 마십시오. NtDll.dll에서 내 보낸 함수에 대한 일반적인'call' 만 사용하면됩니다. –

답변

1

당신은

extern "C" NTSTATUS NTAPI SysWPM(HANDLE ProcessHandle, PVOID BaseAddress, 
PVOID Buffer, ULONG NumberOfBytesToWrite, PULONG NumberOfBytesWritten); 

로 C의 /의 C++에서 함수를 선언해야 할이 __stdcall 기능

x86에 대한 asm에 (ml /c /Cp code32.asm ->code32.obj)

.686p 

.MODEL flat 

_TEXT segment 

[email protected] proc 
... 
ret 20 
[email protected] endp 
_TEXT ends 
end 

asm 64에 대한 (ml64 /c /Cp code64.asm ->code64.obj)

_TEXT segment 
SysWPM proc 

    ... 
    ret 
SysWPM endp 


_TEXT ENDS 

END 
+0

37 또는 55입니다. 둘 다 테스트해라. 내가 어떻게 선언했는지, 여전히 오류가 발생하고 있음을 나타냅니다. – Reece

+0

@ 오류가 발생 했습니까? 제발 정확히 -이 리모컨을 볼 수 없습니다 – RbMm

+0

해결되지 않은 외부. 나는 심지어 ASM 파일이 프로그램에 컴파일되고 있다고 생각하지 않는다. – Reece