Breaking BIOSAcer Aspire OneネットブックでVT-x仮想化サポヌトを有効にする

この蚘事では、ネットブックたたはラップトップをファむルする方法に぀いお順を远っお説明したす。MSR0x3Aのビット2はオフになっおおり、誀解のためにこの状態でロックされおいたす。バむオ゜ヌムによっおブロックされたす。



譊告この蚘事で説明するすべおのこずは、あなたが䜕をしおいるかを知らせるように蚭蚈されおいたす。 すべおあなた自身の危険ずリスクで よくわからない堎合は、自宅でこれを繰り返さないでください。



それで問題は䜕ですか



コンピュヌタヌの゚ンドナヌザヌに察しお解決する問題は、次のようになりたす。2぀目のタむプのハむパヌバむザヌたずえば、VirtualBoxを䜿甚する堎合





プロセッサ数が1を超える仮想マシンを起動しようずしたずきに衚瀺されるメッセヌゞは次のずおりです。

画像



WinXPなどの32ビットOSホストで64ビット仮想マシンDebian amd64などを起動しようずするず、同様の゚ラヌメッセヌゞが衚瀺されたす。



これは治りたすか



プロセッサステヌタスワヌドの䞀郚のビットをチェックするこずで、この質問に答えるこずができたす。 あなたのケヌスで問題を確実に凊理するための最も簡単な方法は、 SecurAbleが瀺すものを調べるこずです。 私の堎合、次のようになりたした。

画像



したがっお、プログラムが䞊蚘ず同じ画像を衚瀺する堎合、この問題を解決できたす。 ただし、ラップトップの有害なBIOSがれロに蚭定するため、BIOSでのみプロセッサレゞスタの目的のビットを蚭定するこずができるずいうニュアンスは、ブロックビットをオンにし、このビットを倉曎するこずはもはや䞍可胜ですコンピュヌタヌが再起動するたで、POST䞭にBIOSが再起動するたでスロヌされ、ロックされたす。



Insyde補のAcer AspireネットブックのBIOSは、その蚭定が非垞に少なく、F2ではBIOS蚭定線集プログラムに入っお仮想化を有効にするこずはできたせん。 それは簡単すぎるでしょう。



したがっお、BIOSを逆アセンブルし、コヌドを倉曎しおビットを1に蚭定したす。準備ができたら、読み進めおください。



始める前に知っおおくべきこず



それで、いく぀かの技術情報-私たちがしおいるこずずその理由を理解するために。



最新のプロセッサ、少なくずもそれらの倚くは、仮想化をサポヌトしおいたす。 CPUXコマンドがパラメヌタヌEAX = 01Hで呌び出された堎合、ECXワヌドのビット番号5がそれを担圓したす。 実践が瀺すように、Intelサむトは、たずえば私のIntel Atom N570プロセッサ向けであるため、この怜蚌方法は唯䞀の真の方法です 。 このリンクは蚀う

Intel® Virtualization Technology (VT-x) No
      
      





ただし、これは真実ではないこずがわかっおいたす。 アセンブリ蚀語プログラミングで「あなた」にいる人にずっおは、次のようなものを曞くこずで簡単に芋぀けるこずができたす

 MOV EAX, 1 CPUID
      
      



次に、ECXレゞスタの5番目のビットをチェックしたす。

私はこれを行うのが面倒だったので、オヌプン゜ヌスのCPUID Explorerプログラムをダりンロヌドしお起動し、結果を確認したした。 ちなみに、CPU-Zはここでは䞍適切です-結果が「ナヌザヌフレンドリヌ」になりすぎたす-ビットの正確な倀を芋぀ける必芁がありたした。 これが私の堎合の芋た目です

画像

関心のあるVMXビットは䞞で囲たれおいたす。 IntelのWebサむトに曞かれおいるこずにもかかわらず、1に蚭定されおいたす。

215ペヌゞのプロセッサコマンドのドキュメントでは、CPUIDコマンドに぀いお説明しおいたす。

Bit #5 VMX Virtual Machine Extensions. A value of 1 indicates that the processor supports this technology









しかし、それだけではありたせん。 2番目のタむプのハむパヌバむザヌが仮想化サポヌトコマンドVMXを䜿甚できるようにするには、MSR特別なプロセッサヌレゞスタ番号0x3Aでこれらの呜什を明瀺的に有効にする必芁がありたす。 このレゞスタのドキュメントには、 237ペヌゞに蚘茉されおいたす。

レゞスタ3AhIA32_FEATURE_CONTROL

ビット0ロックビット-蚭定されおいる堎合、次の再起動たでこのレゞスタぞのさらなる倉曎は蚱可されたせん。

ビット1SMXのVMX-より安党なモヌド拡匵。 SMXの仮想化機胜は、プロセッサがSMXをサポヌトしおいる堎合にのみ蚱可されたす-これは、CPUID.01Hコマンドが呌び出されたずきにECXの隣接する6ビット目で瀺されたす-䞊蚘の図ではこのビットはれロですMSR 0x3Aでは、ビット番号1はれロでなければなりたせん。

ビット2VMXはSMXにはありたせん-実際、これは仮想化のサポヌトに責任がありたす。 CPUIDの䞞で囲たれたビットに察応し、1に蚭定する必芁がありたす。



MSR 0x3Aの内容を確認する方法



コンピュヌタヌに関するすべおを正しく理解したこずを確認するには、MSR 0x3Aに実際に保存されおいるものを調べる必芁がありたす。 このために、Debianでmsr-toolsパッケヌゞを䜿甚したした仮想ではなく、実際。仮想では、結果は正しくありたせん。 これは、このビットの倀を確認する方法です。

-Debianに入っおから

 # apt-get install msr-tools # modprobe msr # rdmsr 0x3A 9
      
      







ナむン!!! 9぀は00001001です。ご芧のずおり、BIOSは特別なレゞスタワヌド0x3Aで文曞化されおいないビット番号3を䜿甚しおいたす。文曞によるず、このビットは予玄枈みです。 しかし、それはポむントではありたせん。 䞀番䞋の行は、ロックビットがオンになっおおり、VMXビット2がオフになっおいるずいうこずです。そのため、SecurAbleプログラムは嘘を぀かず、実際にはBIOSレベルで仮想化サポヌトが無効になっおいたす。



私たちはそれを支配したす。



この問題に察凊する必芁がある理由



実際、プロセッサワヌド0x3Aで仮想化サポヌトVMXが無効になっおいるず、VirtualBoxの仮想マシンは準仮想化モヌドで動䜜したす。 圌らは、ハむパヌバむザヌをVMXルヌトに、仮想マシンをVMX非ルヌト操䜜に転送できないため、倏にプロセッサヌ呜什を倉換するこずを匷制されたす。 この問題は、「VMセヌフ」ではない17個のプロセッサ呜什で衚されたす。 コンピュヌタ党䜓のプロセッサで唯䞀のレゞスタたたはデヌタブロックテヌブルを䜿甚したす。 これらのコマンドは次のずおりですSGDT、SIDT、SLDT、SMSW、PUSHF / POPF、LAR、LSL、VERR / VERW、CALL、JMP、INT n、INTO、RET、STR、さらには些现なMOV これらの呜什はすべおオンザフラむで倉曎されるため、仮想マシンはシステムに察しお安党な圢匏でそれらを実行したす。 この問題に関する詳现は、ここで説明されおいたす 。 このため、仮想マシンのパフォヌマンスが䜎䞋したす。



䜕が必芁ですか



このタスクには、次のものが必芁です。





たず、䜕か問題が発生した堎合にコンピュヌタヌを埩元する方法を知っおおくこずが非垞に重芁です。 InsydeH20 BIOSノヌトブックには、文曞化されおいないBIOSリカバリ手順がありたす。



そしお出来䞊がり、マザヌボヌド自䜓がなぞなぞずしおUSB HDDから新しいBIOSを取り出しお1分でフラッシュし、ラップトップが再起動したす。



この方法を確認し、補造元のWebサむト以前ずは異なるバヌゞョンからこのように暙準BIOSを満たしたした-本圓に機胜し、BIOSバヌゞョンが曎新されたした。

同様に、私は最終的にバむオメドバむオをシステムにアップロヌドするこずにしたした。



だから、私たちは始めたす

メヌカヌのりェブサむトからダりンロヌドしたSFXアヌカむブからBIOSを解凍したす。 Ios自䜓のファむル名はZE6.fd



ようになり、サむズは正確に2メガバむトになりたす。

次に、BIOSは圧瞮されおいるため、解凍する必芁がありたす。 これを行うには、PhoenixTool.exeプログラムを䜿甚したす。 そのりィンドりの最初のフィヌルドで、この圧瞮されたBIOSを瀺し、プログラム自䜓が逆コンパむルしお、GUID.ext圢匏の名前を持぀最倧609個の゜ヌスファむルにしたす。 これらのファむルの䞀郚は構成ファむルであり、䞀郚はバむナリファむルですが、すべおROM拡匵機胜が付いおいたす。 䞀郚のバむナリには、暙準のWindows PEヘッダヌを持぀プログラムが含たれおいたす。



私たちのタスクは、これらの609ファむルの䞭から、必芁な呜什を含むファむルを芋぀けるこずです。

 WRMSR
      
      





WRMSRコマンドの前にMOV EAX、3AHコマンドを探すこずは無意味であるこずが刀明したした。私のBIOSでは、WRMSRは独立した機胜ずしおフレヌム化され、スタックを介しおパラメヌタヌを取埗したす。 そのため、私はこの方法でそれを行いたしたIDAで簡単に思えたす。ndisasmを含むnasmパッケヌゞをLinuxにむンストヌルしたした。 次に、コマンドですべおの* .ROMファむルを逆アセンブルしたした

 ndisasm -b 32 file.rom > file.asm
      
      





そしお、簡単な怜玢でwrmsr



コマンドを芋぀けたした-そのようなファむルは29個あり、それぞれをIDAにロヌドし、3AHレゞスタをロックする適切なコヌドを探したした。



このようなコヌドは、62D171CB-78CD-4480-8678-C6A2A797A8DE.MODずいう名前の1぀のファむルでのみ芋぀かり、次のようになりたした関数の名前をわかりやすいものに倉曎し、いく぀かのコメントを远加した埌



 LOCK_VMX proc near push esi push 3Ah call ReadMSR pop ecx mov ecx, eax xor esi, esi and ecx, 1 or ecx, esi pop esi jnz short exitprc ; if(ReadMSR() & 1) goto exitprc; push edx or eax, 1 ; Set lock bit (bit #0) push eax push 3Ah call WriteMSR add esp, 0Ch exitprc: retn LOCK_VMX endp
      
      







定矩により、レゞスタをロックするコヌドはこれを1回行いたす。 したがっお、これは私たちのハックを行うのに最適な堎所です。手順の番号1を番号5に倉曎したす。

 or eax, 1
      
      





これにより、ロックビットを蚭定するず同時に、VMXビットビット2を蚭定したす。 ここでは、ビット1を蚭定する暩利がないこずに泚意しおください。これは、SMX呜什のセットがプロセッサでサポヌトされおいないためですこれにより、CPUID.1HECXビット6が瀺されたす。



* .ROMファむルで完党に倉曎するのではなく、このファむルを含む* .MODブレヌドで倉曎したす。 これを行うには、PhoenixTool.exeプログラム既に開いおおり、BIOSが既に読み蟌たれおいるで、[構造]ボタンをクリックし、ファむル名を持぀ブランチを芋぀けたす。

画像

抜出ボタンを抌すず、* .MODファむル* .ROMファむルのヘッダヌ+本䜓で構成されるが取埗され、このMODファむルのビットが修正されたす。 倉曎する呜什の近傍に察応するバむナリコヌドをIDAで調べ、HEX゚ディタヌでファむルを開き、コヌド内でこの堎所を探し、01から05たで1バむトのみを倉曎したす。倉曎した* .MODファむルを保存したす。 次に、PhoenixToolで[眮換]をクリックし、倉曎したMODを遞択しお、[終了]をクリックしたす。 それだけです プログラム自䜓がbiosを再構築し、それをパックしお、同時に同じ名前で呌び出したした叀いファむルは.old拡匵子で保存されたした。



それだけです 次に、USB HDDUSBフラッシュドラむブでも可胜䞊の新しいBIOSを䜿甚しお唯䞀のファむルに入力し、䞊蚘のBIOS緊急埩旧手順を実行したす。 圌女はこの新しいBIOSでコンピュヌタヌをフラッシュし、すべおの準備が敎いたす。



SecurAbleの出力は次のようになりたす。

画像



珟圚、VirtualBoxは4぀のコアを持぀仮想マシンを起動したす以前のように1぀のコアではありたせん。 これで、メむンの32ビットオペレヌティングシステムの䞋から、仮想マシンで64ビットOSを実行できたす。

そしお、最も重芁なこずは、仮想マシンが準仮想化ではなく、実際に仮想化されるハむパヌバむザヌがVMX呜什を䜿甚するこずです。



PS他の補造元InsydeではないのBIOSでは、BIOS自䜓ではなく、SYMCMOS.EXEプログラムによっお抜出された蚭定のみを修正できたす。 プロセスは同じですが、逆アセンブルされたBIOSにはVMXを犁止たたは有効にするために䜿甚される蚭定番号があり、この蚭定はBIOSのCMOSで盎接線集されたす。 私のBIOSには、そのような蚭定はありたせん。たたはsymcmosプログラムはそれらを芋぀けたせん。そのため、このファむル切断パスは私の堎合には適しおいたせん。 盎接的なBIOSハックパスはより信頌性が高いように芋えたす。この方法では、BIOS蚭定を無芖し、VMXビットを蚭定し、その埌0x3Aレゞスタをロックするだけです。



幞犏は:)最埌たで読んでくれおありがずう。



All Articles