問題タブ [protected-mode]
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.
keyboard - x86 アセンブリでの保護モードのキーボード アクセス
私が開発している非常に基本的なカーネルのキーボード入力に取り組んでおり、完全に立ち往生しています。私が知る必要がある情報を示すことができる情報をオンラインで見つけることができないようです。
私のカーネルは現在プロテクト モードで実行されているため、リアル モードにジャンプしてから戻らないとリアル モード キーボード ルーチンを使用できません。これは回避しようとしています。プロテクト モードからキーボードにアクセスできるようにしたい。誰もこれを行う方法を知っていますか? これまでに見つけた唯一のことは、in/out ポートを使用してコントローラーと直接通信する必要があることですが、それ以上は困惑しています。もちろん、これは頻繁に出てくるものではありません。通常、アセンブリ チュートリアルでは、オペレーティング システムが実行されていることを前提としています。
私は x86 アセンブリに非常に慣れていないので、保護モードから標準ハードウェアを操作するための優れたリソースを探しています。Assembly ソース コードを NASM でコンパイルし、DJGPP でコンパイルされた C ソース コードにリンクしています。助言がありますか?
assembly - 誰かがこの直接組み立てられたx86JMPオペコードを説明できますか?
学校では、ブートストラッププログラムを使用して、オペレーティングシステムなしでスタンドアロンプログラムを実行しています。私はこのプログラムを研究してきましたが、プロテクトモードを有効にすると、プログラム内でオペコードとオペランドをデータとして直接アセンブルすることで、はるかに大きなジャンプが実行されます。これはGNUアセンブラ用でした:
まず第一に、なぜ(命令ニーモニックの代わりに)これを実行したいのでしょうか?
私はIntelのマニュアルを見てきましたが、それでもコードに少し混乱しています。具体的には、ボリューム2A、3-549ページに、オペコードの表があります。関連するエントリ:
実際のオペコードは明らかですが、最初のバイトである0x66は私を混乱させます。Intelマニュアルの表を参照すると、cpは明らかに6バイトのオペランドが続くことを意味します。そして明らかに次の2行に6バイトが続きます。0x66は、「オペランドサイズのオーバーライドプレフィックス」をエンコードします。これはテーブルのcpと何の関係がありますか?cpには16進値があると思っていましたが、代わりにこのオーバーライドプレフィックスがあります。誰かが私のためにこれを片付けてくれませんか?
これがodからのダンプです:
TARGET_ADDRESSは0x00010000として定義されました。
また、最後の2バイトの重要性にも少し混乱しています。しかし、それはまったく別の質問のようです。かなり遅くなっていて、コードとIntelのマニュアルを何時間も見つめているので、自分の主張が理解できたと思います。
見てくれてありがとう!
assembly - 64 ビット モードでのみ存在する x86 アセンブリの命令はありますか?
一部の古い x86 命令は、64 ビット モードでは未定義です。たとえばLDS
、 、LES
および、または( ) および( ) 命令LSS
の短いオペコード。INC r16
40 + rw
INC r32
40 + rd
64 ビット モードでのみ定義され、32 ビット プロテクト モードでは定義されていない命令はありますか?
編集: コンテキストはx86プロセッサの開発です。仕様に適合していることを確認したい。
security - 他のプロセスのメモリにアクセスするにはどうすればよいですか?
あるプロセスが他のプロセスのメモリを読み取ることはできないと思いました。しかし、 「RAM エディター」を備えた「 WinHex 」という名前のアプリケーションを見てショックを受け、メモリ全体にアクセスできるようになりました。すべてのプロセスの。
そんなことがあるものか?また、他のプロセスのメモリを変更することもできます。これは悪意にはなりませんか?
c# - IE 保護モードで AppData にアクセスする方法 (マネージド BHO から)
C# で IE 拡張機能 (BHO) を作成しています。プロテクト モード (IE の新しい UAC 準拠モードで、すべての拡張機能を低整合性で実行することを強制する) で実行すると、appdata フォルダーの user.config にアクセスできないため、失敗します。
ファイルが整合性の低いプロセスで読み取り可能であることをマークする方法はありますか?
それができない場合、BHO を強制的に中間レベルの整合性で実行する方法はありますか?
それができない場合、AppData の中程度の整合性ファイルを指す低整合性のフォルダに低整合性のシンボリック リンクを作成する方法はありますか?
それができない場合、アプリケーションに LocalLow フォルダー内の user.config ファイルを強制的に使用させる方法はありますか? .net でこのフォルダーのパスを取得するにはどうすればよいですか (Environment.SpecialFolder の下にリストされていません)。XP を実行しているユーザーや、保護モードをオフにしているユーザーに、すべての user.config データを失うことなくフォールバックできますか?
windows - Windows保護モードでint 13h?
Windows オペレーティング システムで Int 13h (ダイレクト ディスク読み取り/書き込み) を使用できますか、それとも Windows 保護モードでは使用できませんか? その場合、回避策はありますか? 前もって感謝します。
informix - INFORMIX-SQL (SE) 4.10DC1 保護モードの問題 PSTARTSQL.EXE のロード
MS-DOS 6.22 で ISQL 4.10DC1 を起動しようとしていますが、PSTARTSQL.EXE をロードできないようです。DOS16M エラー [6]: 十分なメモリがありません。 SYS を CONFIG.SYS の最初の行として入力し、DOS16M=3 を含むすべての環境変数を適切に設定します。このバージョンの ISQL を使用した経験のある人はいますか?.このレガシー バージョンに関する追加のドキュメントを持っている人はいますか?
.net - 保護モードでIE拡張機能内からWindowsイベントログに書き込む-アクセスが拒否されると失敗する
保護モードがオンになっているWindows7のInternetExplorer内で実行されているBHOで、Windowsイベントログに書き込もうとしています。すでに存在するソースに書き込んでいますが、それはアプリケーションログにあるので、なぜこれがブロックされるのかわかりません。ただし、への呼び出しSystem.Diagnostics.EventLog.WriteEntry("MySource", "Some message")
は、InvalidOperationExceptionで失敗し、「ソース'XXX'のログを開くことができません。書き込みアクセス権がない可能性があります。」というメッセージが表示されます。スタックトレースは、にあることを示していますEventLog.OpenForWrite(String currentMachineName)
。
プロテクトモードをオフにすると、正常に機能します。
これがプロテクトモード内で許可されない理由、およびイベントログへの書き込みが許可されているものとしてBHOを登録する方法、またはその他の方法で機能させる方法はありますか?
この投稿によると、OpenForWrite()を呼び出すとUnsafeNativeMethods.RegisterEventSource(this.machineName, this.sourceName);
、が呼び出されますが、そのドキュメントではそれ以上のことはできませんでした。
.net2.0を使用しています
ありがとう。
ここにクロスポスト:msdn_microsoft_ieextensiondevelopment
assembly - リアルモードBIOSルーチンとプロテクトモード
OSの実験をしています。これまで、私のコードはすべてリアルモードのBIOS割り込みを利用して、ハードディスクとフロッピーを操作していました。しかし、私のコードがCPUの保護モードを有効にすると、すべてのリアルモードBIOS割り込みサービスルーチンが使用できなくなります。ハードディスクとフロッピーをどのようにIR/Wできますか?今、いくつかのハードウェアドライバーを実行する必要がありますか?どうすれば始められますか?これがOSの開発が難しい理由のひとつですか?
ハードウェアはすべて、特定の制御レジスタまたはデータレジスタからの読み取りと書き込みによって制御されることを知っています。たとえば、ハードディスクのコマンドブロックレジスタの範囲は0x1F0から0x1F7であることがわかっています。しかし、非常に多くの異なるハードウェアのレジスタアドレスがPCプラットフォームで同じであるかどうか疑問に思っていますか?または、それらを使用する前にそれを検出する必要がありますか?それらを検出する方法は??
フロッピーまたはハードディスクを保護モードでR/Wする方法がわからないため、BIOS割り込みを使用して、必要なすべてのカーネルファイルをフロッピーからメモリにロードする必要があります。しかし、カーネルファイルがリアルモードの1Mスペース制限を超えた場合はどうすればよいですか?
どんな回答に対しても、私は深い感謝の意を表します。
アップデート
最初にプロテクトモードを切り替えてからリアルモードに戻す方法があることをぼんやりと思い出します。そして、BIOSルーチンを保護モードで使用できます。多分私は間違ったことを覚えています。誰かがそれを正しく覚えていましたか?
c# - WCF 名前付きパイプの整合性を下げる方法
C# で記述された Internet Explorer アドインがあります。これは、WCF 名前付きパイプを介して .NET デスクトップ アプリケーションと通信します。デスクトップ アプリは netNamedPipeBinding の ServiceHost を作成し、IE アドインの各インスタンスはアプリと通信する ChannelFactory を作成します。Windows XP ではすべて正常に動作しますが、Windows 7 の IE の保護モードでは例外がスローされます。
System.ServiceModel.CommunicationException: エンドポイント 'net.pipe://localhost/MyApp.MyID' に接続できません。---> System.IO.PipeException: '\.\pipe...guid...' のパイプ エンドポイントが存在しますが、接続に失敗しました: アクセスが拒否されました。(5, 0x5)
プロテクト モードでアドインを実行することは、私がサポートしなければならないシナリオです。私の理解では、名前付きパイプの整合性レベルを下げると、IE アドインはそれを介して通信できるようになります。私の質問は、それを行う方法です。私は WCF を使用するようにセットアップしており、できればそのままにしておきたいと思っています。整合性レベルが低い名前付きパイプを WCF に作成させることはできますか? それを実現するには、どのようなコードを記述すればよいでしょうか?