問題タブ [address-space]
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.
unix - コマンドライン引数として環境変数を渡す際のメモリ割り当て
Linuxで単純なバッファオーバーフロー攻撃を試みています。コマンドライン引数を受け入れる脆弱なプログラムがあります。実行したいコード(通常はシェルコード)を持つ環境変数を設定する別のプログラムがあります。現在、脆弱なプログラムのバッファをこの環境変数のアドレスでオーバーフローさせようとしています。次の質問があります。
コマンドライン引数として環境変数を渡すと、変数の内容が脆弱なプログラムのargvにコピーされますか?
プロセスのアドレス空間のどこに環境変数(コマンドライン引数)が格納されますか?それはプロセススタックまたは他のどこかにありますか?
python - Python: Linux で別のプロセスのメモリに書き込む
Ubuntu LinuxでPythonを使用して別のプロセスのアドレス空間に書き込む方法は? 私の試み:
1) 仮想ファイル /proc/$PID/mem を使用してアドレスをシークします。私はそれを使用してメモリを読み取ることに成功しましたが、書き込もうとすると IOError が発生します。
出力:
2) 他のスレッドで提案されているように、python-ptrace ライブラリを使用しようとしています。ただし、適切なドキュメントやサンプル コードが見つかりません。
注: これはパーミッションの問題ではありません。root として実行すると同じ動作になります。
bus - アドレス可能性 vs アドレス空間 vs アドレスバス
アドレス空間に基づいてアドレス指定可能性をどのように判断しますか? アドレス可能度に基づいてアドレスバスのサイズをどのように決定しますか? 元。マシンのアドレス可能度は 32 ビットですが、アドレス バスのサイズは?
c++ - 代理会員アクセス
クラスのメンバーにアクセスするときに、クラスがプロキシとして機能することは何とか可能ですか? もちろん、最も簡単な方法はゲッター/セッターを作成することですが、コードを肥大化させるすべてのセッターを自分で作成する必要があるため、これは柔軟性がなくエレガントではありません。
問題は、一部のデータがマイクロコントローラーのプログラムにあるという事実を抽象化したいことです。基本的にはそれが欲しい
のようなものに翻訳される
組み込み C では、アドレス空間__flash
を使用してそのようなことを行うことができます。残念ながら、C++ はこれをサポートしていません。
そこで、オーバーロードを考えましoperator->()
た。残念ながらoperator->()
、あなたがアクセスしようとしているメンバーの情報は得られません (ところで: なぜ wtf なのですか? -> の唯一の目的はメンバーにアクセスすることなので、なぜこの情報を破棄したいのでしょうか?)。.
まったくオーバーライドできません。
その問題を解決する方法を知っている人はいますか? 構文はもちろんそうである必要はありません->
。いくつかの難解なテンプレート構造でそれが可能であれば、私も幸せです. 私は十分なC++を知りません。おそらく、まったく不可能です。C++ は、メタプログラミングの面で少し柔軟性がないようです。
編集:答えからのインスピレーションの後、ラッパークラスを使用してキャスト演算子をオーバーライドすることにしました。
.net - ドットネットの論理プロセッサごとのヒープですか?
2 つのケース (dotnet と一般) について、タイトルにあるものを含むいくつかの質問があります。
(1)は論理プロセッサごとのヒープです(一般的にYESだと思います)
(2) は、論理プロセッサごとのアドレス空間です (一般的にはい?)
(3) プロセスは複数のヒープにアクセスできますか? (dotnet は No で、一般的には YES だと思います。一般的に YES が正しい場合、人々はなぜ、いつそうするのでしょうか?)
(4) は dotnet フレームワークごとの GC です。
ありがとう
c - アドレス空間を 8 で割る
私の質問は、アドレス空間の扱いに関するものです。
16 進数の 2 つのアドレス空間があります: 0x7fffff09 と 0x7fffff08。
それらが8または8バイトで割り切れるかどうかを知るにはどうすればよいですか? C または C++ コードでチェックがどのように見えるかのように。通常、通常の数値には mod を使用し、剰余がない場合は割り切れることを知っています。
編集:アドレス空間は__8、__16、__32(8ビット、16ビット、32ビット)にすることができます
windows - Windows のアドレス空間
ハードディスクに空き容量がない場合、アプリケーションを実行するとシステムはどうなりますか? ページング ファイルを作成する場所
linux - プロセス内の環境のメモリ アドレスの計算
セキュリティ コースの講義スライドから次のコードを取得しました。
このコードは、その環境でシェルコードを使用して脆弱なプログラムを呼び出します。シェルコードは、シェルを開く外部ファイル内のアセンブリ コードであり、VULN は脆弱なプログラムの名前を定義します。
私の質問: シェルコード アドレスはどのように計算されますか
addr 変数は、シェルコード (環境の一部) のアドレスを保持します。このアドレスがどのように決定されるかを誰かに説明してもらえますか? そう:
- 0xc0000000 - 4 はどこから来たのですか?
- シェルコードの長さとプログラム名が差し引かれるのはなぜですか?
このコードと脆弱なプログラムの両方が次のようにコンパイルされていることに注意してください。
そのため、アドレス空間のランダム化はオフになっています。
スタックはプロセス内の最初のもの(最上位メモリアドレス)であることを理解しました。スタックには、次の順序で含まれます。
- 環境データ。
- argv
- argc
- メインのリターンアドレス
- フレームポインタ
- メインのローカル変数
- ...等...
定数とグローバル データはスタックに格納されないため、VULN 定数の長さがシェルコードが配置されるアドレスに影響する理由もわかりません。
あなたが私のためにこれを片付けてくれることを願っています:-)
Intel x86 アーキテクチャの UNIX システムで作業していることに注意してください。