GMABooster? オーバークロック?





私は、 GMABoosterプログラムに関する私の研究結果を発表することにしました。GMABoosterプログラムは、昨日ハラジテラミに提示されました 。 Acer Aspire One a150の管理者から私のコードをリモートでテストした、まったく馴染みのないWerat habraiserがいなければ、分析はそれほど速く実行されなかったでしょう。



私のトピックでは、オープンな製品の重要性、人々間の情報交換の自由を強調したいと思います[そして、Habrはケーキだと不満を言って泣いているすべての人を思い出させます!]



免責事項:分析は、教育的かつ平和的な目的のためにのみ提供されています。少なくとも、プログラムの作者への寄付の量を減らしたいと思います。 いずれにせよ、彼は尊敬に値する仕事をした。 また、GMABoosterは多くの基準、特にLinuxおよびMacユーザーにとって便利ではないため、一部のプラットフォームでは「代替」ソリューションを検討する必要があります。







トピックは非常に興味深いものになりました。このトピックには詐欺の可能性についての考えがあり、自分で確認することにしました。 Acer Aspire 8735Gを所有しているのは簡単なことではなかったので、私は反対から行き、リバースエンジニアリングに切り替えました。 著者の保護をバイパスしないことをすぐに明確にします。



Windows Inside



現時点では、GMABoosterの2つのバージョンを公式サイトからダウンロードできます。 GMA900およびGMA950用。 実際、1つのバージョンと1つのディストリビューションのみがあります。 アンパックしてコンテンツの分析に飛び込みます-アンインストーラー、さまざまな周波数のプリセット、ドキュメントをすぐに破棄します。 次の一連のファイルを残します。



Auto.exeは、頻度を変更するためのコンソールユーティリティです。 このユーティリティは、周波数値を設定するコマンドラインパラメーターで呼び出すことができます。



ご覧のとおり、.Netに実装されています(言語は重要ではありません)。 GUI、ランチャー、その他のプリセットは.Netで作成されています。 ここに、ドライバーと高レベルのフレームワークのそのようなワイルドな組み合わせがあります。 逆コンパイルが好きな人は、.Net Reflectorを使用して、必要なものを見つけることができます。 ライセンス契約は、私がゲームの条件を受け入れ、他の方法を探す間、逆コンパイルすることを禁じています。



Porttalk.sysは実際にはある種のドライバーです。 グーグルでは、これは実際にはPortTalkであることがわかります-Windows OSのNTファミリのドライバであり、I / Oポートに直接アクセスできます。 本当にx64のサポートはなく、最後の更新は2002年に行われました。 ちなみに、PortTalkは非常に巧妙なトリックを使用してアクセスを提供します(はい、それはWindows 9xでのみ簡単でした)。 特にプロジェクトはオープンで無料なので、プロジェクトページの詳細を理解することをお勧めします。



Helper.exe - PortTalkのドキュメントで、AllowIOプログラムが付属していることを完全に誤って認識しました。これにより、サードパーティアプリケーションを起動し、インストールされたPortTalkドライバーを介して特定の(またはすべての)ポートを開くことができます。 実際、これはAllowIO.exeです。ただし、作成者が名前を変更し、面白い変更を加えた点が異なります。



公式のPortTalk Webサイトへのリンクは消去され、著作権はクラスとして破棄されます。 悲しくなりました。



GMABoosterのワークフローは少し明確になっています。 誰かがHelper.exeを実行し、アプリケーションがI / Oポートにアクセスできるようにします。 これで、アプリケーションはポートに移動し、一連の要求を行う必要があります。 .NetへのASMの挿入は完全に適切ではないため(この形式では不可能です)、作成者はそれらを別のモジュールに入れる必要がありました。 さらに見てみましょう。



AsmDll.dllおよびAsmDll2.dll -I / Oポートレベルでの通信の実際の実装[0CF8h / 0CFCh、PCIの構成]。 さて、逆コンパイルはしません。おそらく痛いほど古典的なものがあります(私はこれからは十分ですが)。



パラメーターバス/デバイス/機能/レジスターを設定し、リクエストを実行し、パラメーターの値を書き込みます。 リンクで詳細を読むことができます: PCI Configuration Spaceと同じですが、 プログラマ向けです



AsmDll.dllについてのみ説明します(これらは実際には違いはありません。Auto.exeはそれぞれAsmDll2をまったく使用しないため、それなしでも対処できます)。 エクスポートされた1つの関数[ int32 AsmAdd(int32、int32) ]のプロトタイプをどのように取得したかはわかりませんが、ここでは法律の前に問題がありません。 逆コンパイルしないことを繰り返し強調しました。したがって、AsmDllライブラリーの代替が作成されました。これは、1つのAsmAdd関数のみをエクスポートし、ログに情報を出力しました。 Werat'a氏と彼のネットブックを少し苦しめて、各周波数の入力パラメーターの値を取得しました。



166 MHz [0xF0、0x34646000] [0xF0、0x34646500] [0xF0、0x34646000]

200 MHz [0xF0,0x34646000] [0xF0,0x34640534]

250 MHz [0xF0,0x34646000] [0xF0,0x34640531]

400 Mhz [0xF0,0x34646000] [0xF0,0x34640533]



[]では、AsmAddへの1回の呼び出しがそれぞれ「周波数切り替え」ユーティリティによって行われ、166 MHzで3回呼び出されました(これはエラー、または著者の透かし-多分アマチュアだと判断しません)。



実際、私にとっては、0x34640533はマジックナンバーのままです。ハブには、何/どこで、どのように説明できる誰かがいるはずです。



代替案



したがって、IntelベースのGPUを400 MHzの周波数(GMABoosterによる)にオーバークロックするには、ハードウェアレジスタに書き込むだけで十分です。



たとえば、Mac OS用のスクリプトは次のようになります。

reggie_se -w 0x34646000 -D PCI -i 16 -a 0xF0 -B 32

reggie_se -w 0x34640533 -D PCI -i 16 -a 0xF0 -B 32



スタートアップに簡単に追加できます。 reggie_seに似たユーティリティもLinuxで利用できると確信しています。



あなた自身の結論



1.周波数の変更については説明しません。なぜなら、 電圧は変わらない、私はそれを確信しています。

2.ユーティリティは安全です(マルウェアに関して)。

3.ユーティリティは、最も簡単な(実装の観点から)アクションを実行します。特定の値をレジスタに書き込み、PCIデバイスの特定の構成を変更します。 著者がこれを秘密にして、ユーザーに頭痛の種を配置する理由[毎週更新など]、私は個人的に理解していません。

4.変更は、スリープモード/休止状態/シャットダウンに入る瞬間まで機能していました。

5. GMABooster'aの作者は、多くのものを針に載せました:)

6.多数のレビューに基づいて、わずかな加速が実際に観察されています。

7.トピックで少しぼやけたfloomby jpg画像を使用するのは間違っていました。



私は著者の長所を否定しません、私はまだ彼にHabréで会って、マジックナンバーの出現の話を聞いて、彼の記事のために彼に謝りたいです。



結果を正しく使用できる人を探したいと思います(たとえば、x64の実装)。 また、知識のある専門家からの追加も喜んで聞きます。このような低レベルのものとはほど遠いため、すべてを理解することはできません。



マクロバッカーの前からのニュース #1の更新では、 Mac'aの所有者がGMABoosterの動作に注意を向け(同じreggie_seを呼び出すことが判明しました)、独自のバージョンのスクリプトを提供し、非常に面白いコメントを出しました。 Linux所有者にとってより有用な資料 (検証されていない、真)



All Articles