問題タブ [mprotect]

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.

0 投票する
1 に答える
83 参照

linux - プロセスが一度に書き込み権限と実行権限の両方を持つメモリ ページを必要とするのはいつですか

プログラムを分離して保護する方法を理解しようとしています。

PROT_WRITE |PROT_EXECプロセスがメモリ ページで必要とする有効なケースはありますか? これは回避できますか?

これは、NX ビット、W^X、または DEP が達成しようとしていたこととは正反対のようです。

Libre オフィスはこれを使用しているようで、強化された Linux で多くの問題を引き起こしています。

https://github.com/nning/linux-pax-flags/pull/3

0 投票する
2 に答える
2204 参照

c++ - mmap はページまたはページの一部を割り当てますか?

私は混乱していmmapます.(指定されたサイズに関係なく)メモリのページ全体を割り当てますか,それともあなたが要求したサイズを割り当てるだけですか? 本当に、後続の呼び出しで何が起こるかについて興味がmmapあります.2番目の呼び出しは新しいページを割り当てますか(両方の呼び出しがページサイズ未満の量を使用する場合でも)、または前の呼び出しに隣接するブロックを割り当てますか?

同じことmprotect- それはページ全体を保護しますか、それとも指定された部分だけを保護しますか?

0 投票する
0 に答える
106 参照

c++ - mprotect を有効にすると、通常の状態に戻りませんか?

プロセスのメモリを追跡するプログラムを作成しようとしています..ある時点で、保護機能を使用してすべてのメモリを保護しようとしています:

}

そして、次のことを行うinteruuptハンドラーを登録しました:

プロセスは特定の fwrite でスタックしているように見えます...しかし、プロセスがアクセスしようとしているメモリが長い間分離されて通常の状態に戻っていることをログで見ることができます.また、プロセスが停止しないこともわかりますそのブロックから読み取られた最初のメモリですが、かなり多くのページの後...誰かアイデア/手がかりを持っていますか?

ありがとう。

0 投票する
1 に答える
544 参照

c - トレースされたプロセスに挿入された mprotect システム コールが EFAULT で失敗する

mprotectトレースされたプロセスに呼び出しを挿入しています:

ただし、呼び出しは失敗し、-14 ( EFAULT) が返されます。ソース (カーネル 3.13)を調べましたがmprotect、システム コールがこれを返す理由がわかりません。

注入された呼び出しをトレースしてレジスタを出力すると、次のように表示されます。

システム コールの形式を検証するためmprotectに、子プロセスへの呼び出しを追加し、その引数とレジスタをダンプしました。

子からの呼び出しは成功します。同じ引数で同じシステム コール (10) を実行してEFAULTいるのに、子からの呼び出しが成功しているのに、注入された呼び出しが失敗するのはなぜですか?

呼び出し間の唯一の違いは、 と のジャンクですがregs.r8regs.r9このシステム コールの表を X86_64regs.r10に基づいていると、これらのレジスタの内容がシステム コールに影響を与えるとは思えません。

0 投票する
1 に答える
1022 参照

c - C - ページ未満のものを保護することは可能ですか

そして、私はこれに対する解決策を本当に探しています-私の目標は、システムのページサイズよりも小さい領域をPROT_READ、PROT_WRITE、PROT_EXEC、またはPROT_NONEに設定することです。これは可能ですか?mprotect はページサイズの倍数を保護しているようです...

それが不可能な場合、このデザインを選択した理由は何ですか?

0 投票する
1 に答える
213 参照

c - アドレスの整列ページを静的に計算する

mprotect()テキスト セグメントを使用して書き込み可能にするために、エルフのテキスト セグメントを含む最初のページのアドレスを静的に計算する必要があります。

Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al .. [14] .text PROGBITS 08048380 000380 0002e0 00 AX 0 0 128

何か案は?