-1

asm のシステムコールを介して NtReadVirtualMemory を呼び出そうとしています。私はいくつかの異なる理由でこれを行っていますが、それほど重要ではありません。したがって、メインヘッダーファイルで次のように関数を定義します。

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 ファイル内で定義する必要があるためだと思いますが、それを行う方法がわかりません。私は何を間違っていますか/どうすればよいですか。

私は Windows 7 を使用しており、実際の syscall インデックスは次の表に示すように 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

コメントされたソリューションでまだエラーが発生しています:

_SysWPM@20 proc

    mov r10, rcx
    mov eax, 37h ;
    syscall
    ret

_SysWPM@20 endp

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

1 に答える 1