問題タブ [ptrace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - Ptrace を使用して、開いているファイルの場所を追跡する
open システム コールが呼び出されるたびに、実際にレジスタ (eax、ebx、ecx) の内容を取得する次のコードを使用していました。多くの苦労の後、この質問から値が何を意味するかを理解しました。
ebx には、ファイル名へのポインタが含まれています。しかし、アクセスしようとすると、セグメンテーション違反が発生しました。どこが間違っていますか?コードはこちらからアクセスできます
c - strace はシステムコール sys_open のファイル名をどのように読み取るのですか?
Ptrace を使用して次のことを行うプログラムを作成しています。
- 現在の eax を読み取り、システム コールが sys_open かどうかをチェックします。
- もしそうなら、渡された引数が何であるかを知る必要があります。
int sys_open(const char * filename, const int mode, const int mask)
したがって、eax = 5 は、それがオープン システム コールであることを意味します。この質問
から、ebx がファイルの場所のアドレスを持っていることがわかり
ました。同じ質問 1質問 2
に対処する次の質問に出くわしました(これは私だけのものです!)
しかし、それでも問題の解決策が得られませんでした。:(両方の答えが明確ではなかったので。質問1のアプローチを試してみると、まだセグメンテーション違反が発生しています。ここで
私のコードを確認できます
。
c - ptrace(PTRACE_PEEKUSER) と ptrace(PTRACE_PEEKDATA) の違いは?
に多くの質問を投稿した後ptrace
(最新の 5 つの質問は私のものです:()
と
マニュアルページに記載されている違いは次のとおりです
PTRACE_PEEKTEXT
子のメモリ内の位置 addr で単語を読み取りますPTRACE_PEEKUSER
子の USER 領域のオフセット addr で単語を読み取ります
この違いは、man ページだけでは理解できません。これについてもっと教えてくれる人はいますか??
linux - プロセスのメモリ領域へのアクセス
コードの開始アドレスと終了アドレス、そのデータ領域、およびヒープの開始と終了を出力するために、プロセスのメモリ領域にアクセスする方法を学習しようとしています。/proc/$pid/mapsにはプロセスの開始メモリ領域と終了メモリ領域が含まれていると思いますが、別の方法があるかどうか疑問に思っています。おそらく ptrace() ?
c - ptrace はユーザー レベルまたはカーネル レベルで機能しますか?
ptrace を使用してデータ フロー異常検出を実装しようとしています。少し調査した後、strace に似たプログラムを実装しました。今、私はこれについて混乱しています。これは、ウィキがシステムコールについて私に教えてくれるものです:
「システム コールは、プロセスとオペレーティング システム間のインターフェイスを提供します」
ptrace を使用してプロセスのメモリを変更する場合、ユーザー空間またはカーネル空間で作業していますか? 私はこれについて本当に混乱しています。
c++ - Linux C++ptrace-子プロセスのメモリのすべてのセルをマップします
私はこれに似たリンクリストを持っています:
それから私はMemoryMapper
頭を抱えるクラスを持っています。すべてのメモリーセルを入れたいです。
アドレス0ですぐに中断します。そのプロセスでは0x0から開始する可能性があると思いましたが、実際のオフセットが必要だと思います。しかし、(前のサイズに基づいて)次のオフセットも取得するにはどうすればよいですか?
はっきりしているといいのですが、必要に応じて明確にできますありがとうございます
c++ - Ptrace を使用してシステム コールを取得し、最初のコールの後に停止する
システム コールの数をすべて取得し、最終的には ptrace を使用して特定のプログラムによって呼び出されたシステム コールの名前を取得しようとしています。私は 64 ビット システムを使用しているため、ORIG_RAX * 8 を使用して、ptrace を使用してシステム コールを検索しています。現在、最初のシステム コールしか取得できません。サンプル実行の出力は以下のとおりです。何か案は?
ありがとう!
出力: griffinm@well $ g++ mystrace.cc
}
編集:
8*Orig_RAX が問題だと思います。私が言ったようにマシンは 64 ビットです。何か案は?
c++ - ptracePTRACE_ATTACHの失敗-ユーザー所有のプロセスのLinuxパーミッション
(r00t_ではなく)rootとして実行する必要があるのはなぜですか?
ご覧のとおり、私がフックしているプロセスはr00t_が所有しています。
ルートとして実行されていない出力:
ルートとして出力:
アタッチしようとしているプロセスの所有者であるのに、なぜアタッチできないのですか?
ios - osxの「ISpace」と「DSpace」とは何ですか?それらの違い
sys / ptrace.hで、私は次のようなものを見ました:
「Iスペース」と「Dスペース」と「ユーザー構造」とは何ですか?
c - execve システムコールの引数の取得
ptrace を使用して、execve システム コールに渡される引数を取得しようとしています。しかしPTRACE_GETREGS
、引数を使用して取得しようとするとSYS_execve
、すべてのレジスタ値に対して 0 が取得されます。strace が渡されたすべての引数を取得する方法を教えてください。私はそのソースを読んでみましたが、それらは明らかに私が完全に使用できなかった構造を使用しています。もっと簡単な方法はありますか??