ptrace という名前のシステム コールがあります。操作、ターゲット プロセスの PID、ターゲット プロセス メモリ内のアドレス、およびデータ ポインタの 4 つのパラメータが必要です。最後の 2 つのパラメーターの使用方法は、操作によって異なります。
たとえば、デバッガーをプロセスにアタッチ/デタッチできます:
ptrace(PTRACE_ATTACH, pid, 0, 0);
...
ptrace(PTRACE_DETACH, pid, 0, 0);
シングルステップ実行:
ptrace(PTRACE_ATTACH, pid, 0, 0);
int status;
waitpid(pid, &status, WSTOPPED);
while (...) {
ptrace(PTRACE_SINGLESTEP, pid, 0, 0);
// give the user a chance to do something
}
ptrace(PTRACE_DETACH, pid, 0, 0);
PTRACE_PEEKDATA と PTRACE_POKEDATA を使用して、ターゲット プロセスのメモリを読み書きすることもできます。実際の例を見たい場合は、gdb をチェックしてください。