Windows Server 2012の奇妙なタスクマネージャーの動作

まとめ:写真のストーリー、Windows Server 2012でタスクマネージャーをどのように "改善"したか



前文



それはすべて、テストのためにWindows Server 2012をインストールしたという事実から始まりました(根本的な違いがあるかどうかを調べるため)。 知らない人にとっては、これはそのようなWindows 8であり 、より高価なだけです。 まあ、また、 GUIをGUIから切り離して、あらゆる種類の異なるロールを配置することもできます。



私にとってWindows 8で最も楽しいものの1つは、美しくて便利な新しいタスクマネージャーです。 WinServer 2012で開いたときにデータが表示されなかったのは驚きでした。

わかりやすくするために、いくつかの写真を示します。





Windows 8:





Windows Server 2012





ご覧のとおり、タブのペアが十分ではなく、さらに、ディスクとネットワークの列がありません。 ドライブはまだ[パフォーマンス]タブにありませんが、少なくとも次のコマンドで有効にできます。

diskperf -y







Googleで武装して、私は問題が次のようであることがわかりました:

これは、パフォーマンスに大きな影響があるため、Windows Server 2012ではデフォルトでディスクメトリックが無効になっているためですが、Windows 8では有効になっています。リソースモニターを使用して、ディスクおよびネットワークIOの使用量を測定します。 -Microsoft R&DのSyed Yusuf


詳細はこちら



ロシア語への翻訳では、「ディスクへの負荷が重すぎるため、削除しました。」



だから私は、サーバールーム、誰もが石鹸で走り、サーバーが応答せず、ぞっとするような負荷を想像します。 そして、コーナーの控えめな管理者: 「ネットブックの代わりに誤ってサーバーでタスクマネージャーを開いたので、もう手に入れられません!」



つまり、強力なサーバー上のMicrosoftによると、これにより大きな負荷が発生しますが、同時にタブレットで問題が発生することはないため、これを削除してオンにします。 タスクサーバーでは、パフォーマンスの問題を調べるためだけに、マネージャーが6か月に1回起動されますが、この機能は何らかの奇妙な理由で削除されています。



一般に、これは私に合わず、私は問題を調査し始めました。



バージョン1.レジストリ



マイクロソフトとすべてがレジストリで構成されていることを知って、可能なキーを見つけるためにtaskmgr.exeを掘り始めました。 唯一の適切なキーが見つかりました

HKLM\ System\CurrentControlSet\Services\Partmgr, EnableCounterForIoctl





しかし、以前に見つけたように、このキーはdiskperfコマンドによって有効にされ、興味の対象ではありません。



バージョン2。実際にシステムのタイプにチェックはありますか?



これが起こる可能性があるとはまったく信じていませんが(Microsoftは通常余分なファイルを切り取るだけです)、タスクマネージャーに実際にクライアントシステム上にあると通知された場合に何が起こるかを確認することにしました。



アプリケーションからシステムのバージョンを確認するには、 GetVersionEx関数を呼び出す必要があります。 OSVERSIONINFOEX構造が返されます。dwProductTypeフィールドは、サーバーまたはクライアントのシステムバージョンを示します。



同時に、GetVersionExはRtlGetNtProductTypeを呼び出します。これは、ecxレジスタで、クライアントに対して1、サーバーに対して3を返します。 彼女から始めましょう。



Windows用の小さなデバッガーを使用したため、この場合に処理できるのはWinDbg (最新バージョンではない直接リンク )のみを選択しました。 彼のために、代替品で自動ブレークポイントを作成できる素晴らしいチームがあります:



bp ntdll!RtlGetNtProductType "as /x ReturnValue rcx; gu; ed ReturnValue 1; g"







(つまり、taskmgr.exeを開き、コマンドを実行し、実行を開始します)。



そして...アイデアはうまくいきました。 すべてのタブが表示され、完全に機能していました。 つまり 機能的にはすべて存在しますが、政治的な理由でのみ無効になっています(同じ理由でデフォルトで単純に非表示にできます)。



したがって、この方向でさらに掘り下げる必要があります。 ntdll!RtlGetNtProductTypeにブレークを設定し、実際のtaskmgrが呼び出したときの呼び出しスタックを調べます。初期化ピースではありません。 次のようになります。





スタックトラックに沿って進み、TaskMgrにブレークポイントを設定(または手動でそこに到達)して、次のコードを確認します。





これは戻りコードのチェックです。ここでは何もすることはありません。もう少し進んでください。





ジュースそのものです!

レジスタは1および3と比較され、状況に応じて、目的のブランチへの移行があります。

alを1に設定し、すべてが正常に機能することを確認します。 半分が過ぎました。 あなたは、決定、それをすべて継続的に調整する方法について考える必要があります。



  1. WInDbg用のスクリプトを作成できます。これにより、すべてが自動的に実行されます。 スポーツマンらしくない
  2. TaskMgrを実行する前にメモリにパッチを適用します。 これを行う方法がわからないため、オプションを削除する必要がありましたが、それを理解するのに時間がかかります。
  3. taskmgr.exe自体にパッチを適用します。 最も簡単なオプションは、ファイルの整合性を破壊するだけで、システムは定期的にファイルを古いバージョンに戻すことができます。 しかし、私はそれで生きることができると決め、このオプションについて考え始めました。




そのため、このコードを置き換える必要があります。 それを置き換えるには多くの方法があります:alを1ではなく3で比較し、jneをjeで置き換え、ダンプのアドレスを変更します。 一般的に、私は最もオークの方法を選択し、jneをいくつかのnopsに置き換えました。 したがって、結果として、意味のない比較が行われ、次に必要な場所にジャンプします。 これは単純に行われます。 目的のバイトシーケンス:8a84244a0100003c01を記憶し、お気に入りのHexエディターで見つけて、必要なものに変更します。 この場合、9090で750c。



保存して...





ファイルのデジタル署名を破ったことを確認してください(誰が疑うでしょう)。 だから彼女は殺される必要があります。 多くのオプションがありますが、私たちはハブにいるので、 DnVハブの設計プログラムを使用します



私たちは...そして何も始めません。 破損した署名と同じ問題。 彼はどこから彼女を得るのですか? 私はこれを理解しようとし、自分でファイルに署名し、このすべてを放棄する準備ができていた方法の話を退屈させませんが、それは判明しました...



(これはStud_PEのスクリーンショットです )。



Microsoftからのジョークをチェックしてください。 ファイルの整合性は、ファイル自体のフラグによってチェックされます。 これの秘密の意味は、愚かなウイルスに対する保護だけなら理解できません。

私はこのフラグにどのように到達したのか理解できませんでしたが、一般的には、それを削除して保存し、... すべてが機能します!



その後、元のものを置き換え(このアクションに対する権利を忘れずに)、高度なタスクマネージャーを使用します。



まあ、ボーナスとして、Habrについての記事を書いています:)あなたがそれに興味を持っていたことを願っています。



誰かが教育目的で繰り返したい場合、結果の正確さを確認するために、ここにファイルがあります。



更新10/08/2018

AJlexユーザーがTaskmgrを更新




All Articles