問題タブ [dep]
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.
arm - ARM/MIPS プラットフォームでの XN/XI ビット サポートのハードウェア サポートを確認する方法
ARM v6/v7 プラットフォームでの XN ビットのハードウェア サポートを検証していました。このために、ARM で execstack.c を実行しました。ARM v6/v7 の XN ビット サポートがあるため、クラッシュしています。次に、XIビットをサポートしていないMIPSターゲット(34Kc)で同じことを確認したため、プログラムは正常に実行する必要がありますが、ここでもこのプログラムがクラッシュしました。次に、XN ビット コードを削除し、ARM 用にコンパイルしました。その後、クラッシュしてはならないプログラムもクラッシュしました。
Test Program /* execstack.c - スタック上のコードを実行できるかどうかをテストします
*/
/MIPS ターゲットにログオンします/
MIPS ターゲットでは、コアダンプの下に execstack テストケースが表示されますが、MIPS では XI ビットがサポートされていないと想定しています。
VDLinux#> ./execstack
実行可能スタック [ 53.272000] do_ri() : SIGILL を execstack に送信中、PID:386
殺された
/ARM ターゲットにログオンします/
VDLinux#> ./execstack
実行可能スタック [ 451.784000] execstack: 0xbead5860 で未処理のページ フォールト (11)、コード 0x80000007 が強制終了されました
だから私は次の質問があります:
- ARM v6/V7 での XN ビットのサポートを確認するにはどうすればよいですか?
- MIPS 34Kc で XI ビットのサポートを確認する方法
- Linux カーネル コードで XN ビットのサポートを確認する場所。
ありがとう、ギリッシュ
c++ - DEPを無効にする方法
ヒープの一部がアセンブリ命令として/テスト目的で実行されるアプリがあります-プログラムをPLCにダウンロードしますが、ユーザーはPLCにダウンロードする前にコードを実行することでアプリケーションの実行をシミュレートできます。以前は、命令が格納されているヒープからこれらのプログラムを実行し、これは正常に機能していましたが、現在はVS2012に変換されており、DEPをオフにするのはそれほど簡単ではないようです。何が返されるかに関係なく、どういうわけかDEPをオフにすることができるのか、GetProcessDEPPolicy
それともDEPを使用せずにヒープからアセンブリ命令を実行する他の手法があるのか疑問に思いました。
c - 32 ビット コードを 64 ビット プラットフォームに移植しようとしたときのメモリ エラー
Windows x86 または WOW64 で動作する以下のコード スニペットをコンパイルして実行しようとしていますが、Windows x64 ではエラー アクセス違反でクラッシュします。
gcc と Microsoft C/C++ コンパイラの両方でコンパイルします。
私の質問は、このコードが 64 ビット環境で正しく動作しないのはなぜですか?
このコードを適切に機能させるためには、どのようなルールが満たされていない必要がありますか?
linux - NX (DEP) と ASLR が有効になっている x86-64 で文字列ベースのオーバーフローを悪用する
次の脆弱なコード/プログラムを検討してください。
NX と ASLR が有効になっている Linux を実行している IA-32 (x86、32 ビット) では、基本的に次の手順を含む GOT 上書き手法を使用してこれを悪用します。
- RIP までのオーバーフロー バッファ
- のアドレスで RIP を上書きします。
strcpy@plt
.text
からのクリーンなガジェットを使用してくださいpop edi ; pop ebp ; ret
。strcpy
- 次の引数を書き込みます
strcpy
:&bss
-address を宛先として、1 バイトを/bin/sh
使用して.text
/bin/sh
が完全に書き込まれるまで、手順 2 ~ 4 を繰り返します。&bss
strcpy
withの GOT エントリを上書きしsystem
ます (オフセットを使用するため、Libc の使用バージョンに関する知識が必要です - ここでは無視しましょう)- スタックに書き込み
strcpy@plt
、続いて 4 バイトのチャンク、最後にどのアドレス&bss
を指すか/bin/sh
- 利益
同じ緩和策を有効にして x86-64 でこれを悪用したいと考えています。しかしこれは想像以上に難しい。基本的に次の理由によります。
- x86-64 レジスタ ベースの呼び出し規約: 関数の引数は、スタックではなくレジスタを使用して渡されます。したがって、引数をスタックから適切なレジスタに転送するには、いくつかの追加の ROP ガジェットが必要です。これは小さな問題ですが、次の問題の影響も受けます。
64 ビットの戻りアドレス: x86-64 の RIP は、
/li>.text
32 ビット長でさえありません。したがって、関数呼び出しを連鎖させるには、スタックに NULL バイトを書き込む必要があります。基本的には、連鎖呼び出しを使用してstrcpy
、NULL 終了文字strcpy
が常に書き込むことを利用して、必要なだけ NULL バイトを書き込むことができます。strcpy
ただし、RIP の最下位バイトを上書きするだけで、1 回だけ呼び出すことができます。
これらは、NX と ASLR が有効になっている x86-64 でプログラムを悪用したときに発生した主な問題です。これらの問題を解決するテクニックはありますか? それとも、x86-64 は、実際に機能するシェルを開くエクスプロイトを防げるのでしょうか?
testing - テスト計画モジュールの自動スクリプトのテスト スクリプト タブで両方のビューを開くことができない
アプリケーションと OS のプロパティ:
問題の説明:
DEP が無効な状態の場合、テスト計画モジュールの自動スクリプトの [テスト スクリプト] タブの両方のビュー { キーボード ビュー 、エキスパート ビュー } を開くことができます。
bcdedit.exe /set {current} nx AlwaysOff は、DEP を無効にするために使用されるコマンドです。
DEP が有効な状態の場合、テスト計画モジュールの自動スクリプトの [テスト スクリプト] タブの [キーボード ビュー] と [エキスパート ビュー] の両方のビューを開くことができません。
Patch 10 のリリース ノートによると: {ALM11,QTP 10/11} 統合は正常に動作するはずです。DEP が有効になっている場合でも。bcdedit.exe /set {current} nx AlwaysOn bcdedit.exe /set {current} nx OptIn
[エキスパート ビュー] をクリックしようとすると、次のエラー メッセージが表示されます。
[OK] ボタンをクリックして上記のエラー メッセージを確認すると、HP ALM – クライアントの状態が [動作停止] に移行しています。
キャンセルをクリックした後; 以下のエラー メッセージが表示されます。
[OK] ボタンをクリックした後。ALM サイトが空白で読み込まれ、開始ページにリダイレクトされます。
目的:
DEP が有効な状態の場合、自動スクリプトの [テスト スクリプト] タブの両方のビュー (キーボード ビュー、エキスパート ビュー) を開くことができるはずです。
実行された分析:
デバッグ ログにエラーまたは警告メッセージが入力されませんでした。
プロセス エクスプローラーは、Dot Net Framework 3.5 SP1 からエラーが発生したことを指定しているだけです。
QTP パッチ QCQTP-00012 をインストールしましたが、問題は解決しませんでした。
管理者として IE を実行し、%Temp% の TD_80 フォルダーへのフル アクセス権を提供しましたが、問題は解決しませんでした。
この問題を解決していない UAC を無効にしました。
この問題をさらにトラブルシューティングし、DEP が有効になっているときにこれを機能させる方法についてアドバイスをお願いします。
よろしく、
シュリハリ
chm - Visual Studio C++ アプリケーションで keyhelp.ocx が失敗するのはなぜですか?
を使用keyhelp.ocx
して、最新の Visual Studio C++ アプリケーションでポップアップ HtmlHelp を表示すると失敗します。
意味のあるエラー コードのない COM 例外が発生します。デバッグ出力を見ると、バックグラウンドでアクセス違反が発生しているようです。