UEFIã«ã€ããŠã®ä»¥åã® èšäºã§ã¯ãã¡ãŒã«ãŒãå®ããããã€ãã®å¶éãå æããã®ã«åœ¹ç«ã€ããŸããŸãªäŸ¿å©ãªä¿®æ£ã説æããäºå®ã§ãããããããã¯æã«å±ãããä»ããã®æã§ãã
ãã®èšäºã®æåã®éšåã§ã¯ãUEFIã€ã¡ãŒãžãå€æŽããããã«äœæããããŒã«ã§ã®äœæ¥ã«ã€ããŠèª¬æãã2çªç®ã®éšåã§ã¯å€æŽèªäœã«å°å¿µããŸãã
ãšã³ããªãŒãå 責äºé
USB BIOS FlashbackãDual BIOSãFlash Recoveryãªã©ã®ããŸããŸãªãã¯ãããžãŒãååšããã«ãããããããææ°ã®ãã¶ãŒããŒãäžã®UEFI BIOSãã¡ãŒã ãŠã§ã¢ -ãŸã å®ããã å€æŽãããã€ã¡ãŒãžã®ãã¡ãŒã ãŠã§ã¢ã¯äºéå®ããã§ãã
ãã®ãããããŒããŠã§ã¢SPIããã°ã©ããŒã䜿çšããŠãã¡ãŒã ãŠã§ã¢ã®å®éšãéå§ããåã«ããã€ã¯ããµãŒãããã®å 容ã®å®å šãªãã³ããäœæããããã«ãé¡ãããŸããããããªããšã倱æãããã¡ãŒã ãŠã§ã¢ïŒããã³é ããæ©ããçºçããŸãïŒããã®å埩ã«æéãããããè²»çšãããããçã¿ã䌎ããŸã
SPIããã°ã©ããŒã¯çŸåšãæµæãšã³ã³ãã³ãµã®ãã¢ïŒ SPIPGM ïŒããArduinoãŸãã¯Raspberry PiãŸã§ãèªå® ã§çµã¿ç«ãŠãããšãã§ããŸãã å®ããŠé«éãªSPIããã°ã©ããŒã®ç§ã®ããŒãžã§ã³ãããã§èª¬æããŸã ã ãã®ãããžã§ã¯ãã«æ³šæãæãããã«ãããã€ãã®ããŒãããšããã³ã°ãããã¡ã³ãããã³ãã®ãããžã§ã¯ãã«ãªãŒã«ã€ã³ã¯ã³ããã€ã¹ã®ãã¡ã³ãå§ããŸãã
ããã«æ¬æã§ã¯ãããã°ã©ããŒããã¡ãŒã ãŠã§ã¢é害ããå埩ããèœåãããã³å®éšããæ欲ãããããšãä¿¡ããŠããŸãã ãã¡ãããåæ¢ãªäººã®çæ°ã«åãããŠæãæãããšãã§ããŸãããåŸã§èŠåããªãã£ããšèšããªãã§ãã ããã
äŒçµ±çã«ãããªããããã§èªããã¹ãŠã¯æè²ç®çã®ããã«æžãããŠãããäœè ã¯ããªãã®æ©åšãžã®æ害ãå©çã®æ倱ãæéã®æ倱ã人é¡ãžã®ä¿¡ä»°ã«ã€ããŠè²¬ä»»ãè² ããŸããã
ãŠãšãã£ããŒã«
UEFIã€ã¡ãŒãžãæäœããããã®æ¢åã®ãŠãŒãã£ãªãã£ã®å¶éã«ããããããŠïŒå¿ã®äžã§NIHçå矀ã«æãããïŒãç§ã¯ãªãŒãã³ãœãŒã¹ã®ã¯ãã¹ãã©ãããã©ãŒã ãŠãŒãã£ãªãã£-UEFIToolãæžããŸãã ã
ããã¯UEFIã€ã¡ãŒãžãšãã£ã¿ãŒã§ãC ++ \ Qtã§èšè¿°ãããŠãããBSDã©ã€ã»ã³ã¹ã®äžã§é åžãããŠããŸã ãæ¢è£œã®ã¢ã»ã³ããªã¯ããã«ã¬ã€ã¢ãŠããããŠããŸã ã
ãããžã§ã¯ãã¯æŽ»çºã«éçºãããŠããã®ã§ãã³ãŒãã¯çŸããèŒããŠãããããã°ã¯ãããŸããããããã€ããããŸãã ããªããåºããããå Žå-ç§ã¯å ±åããŠããããã§ãã
ãŠãŒãã£ãªãã£ã䜿çšããéåžžã®æäœã«ã€ããŠã¯ãUEFIã€ã¡ãŒãžã®æ§é ã«é¢ãã以åã®èšäºãèªã䟡å€ããããŸããããããªããšãäœãèµ·ãã£ãŠããã®ããŸã£ããããããŸããããããã€ãã®ãã€ã³ãã説æããããšããŸãã ããã¯ãä»åŸã®ããã¥ã¡ã³ãã§ã¯ç©ºçœã§ãããšæ³å®ããŠããŸãã
èšäºã®äž¡æ¹ã®éšåã®äŸãšããŠãZotac Z77-ITX WiFiïŒAMI Aptio4ïŒããã³Dell Vostro 3360ïŒPhoenix SCT 2.3ïŒã§ãã«ãã³ãã䜿çšããŸãã æ®å¿µãªãããInsyde H2Oãã©ãããã©ãŒã ã«ã¯ãã¹ããã³ãããªããããããã«ã€ããŠäœã話ãããšãã§ããŸããã ããããã Falseclockã¯ãããã«ã€ããŠããå°ãç¥ã£ãŠããŸãã
UEFIToolã®èŠ³ç¹ããèŠããšãç°ãªãã¡ãŒã«ãŒã®UEFIã€ã¡ãŒãžã«å®è³ªçã«éãã¯ãªãããããããã説æããéã«çŠç¹ãåœãŠãŸãã
ãããã£ãŠãUEFIToolãå®è¡ããã€ã¡ãŒãžãéãïŒCtrl + OïŒã次ã®ãããªãã®ã確èªããŸãã
![](https://habrastorage.org/getpro/habr/post_images/080/f23/05c/080f2305c6a29823bc3eb1688a9aaffe.png)
ããªãŒã®åœ¢ã§éãããç»åã®æ§é ã¯ãŠã£ã³ããŠã®å·ŠåŽã«è¡šç€ºãããéžæãããããªãŒèŠçŽ ã®æ å ±ã¯å³åŽã«è¡šç€ºããããã¡ã€ã«åœ¢åŒã®ãšã©ãŒã瀺ãã¡ãã»ãŒãžã¯äžéšã«è¡šç€ºãããŸãããã®å ŽåãPhoenixéçºè ã¯ã¿ã€ã0xF0ã®ã»ã¯ã·ã§ã³ã䜿çšããŸãã PI ã¡ãã»ãŒãžãããã«ã¯ãªãã¯ãããšããªãŒãéãããã®ã¡ãã»ãŒãžãåŒã³åºããèŠçŽ èªäœãŸãã¯ãã®èŠªèŠçŽ ã®ããããã§ããªãŒã衚瀺ãããŸãã æ€çŽ¢çµæã¯åããŠã£ã³ããŠã«è¡šç€ºã§ããCtrl + FãæŒãããšã§åŒã³åºãããšãã§ããŸãïŒäž¡æ¹ã®ãªãã·ã§ã³ãåãç»åã«ãããŸãïŒã
![](https://habrastorage.org/getpro/habr/post_images/b8d/ab0/e78/b8dab0e785454667570944102bce8499.png)
ããã§çšèªãå°ãæ確ã«ããå¿ èŠããããŸãã UEFIã€ã¡ãŒãžã®ã»ãšãã©ãã¹ãŠã®æ§é èŠçŽ ã«ã¯ããããŒããããGUIDãå±æ§ããã§ãã¯ãµã ãªã©ã®ãµãŒãã¹ããŒã¿ãããã³æ¬äœãæ ŒçŽãããŸããããŒã¿èªäœã¯ãã®äžã«æ ŒçŽãããŸãã ããã¹ãã¯ããããŒã«ä¿åãããªãããããã®ãããªéžæã¯å¿ èŠãããŸããã
ããªãŒã®æåã®ã¬ãã«ã«ã¯ããã©ãã·ã¥é åããã®å Žåã¯èšè¿°åãMEãããã³BIOSããããŸãã
![](https://habrastorage.org/getpro/habr/post_images/f67/2cf/646/f672cf6461ca01c84b5ffad4caf29713.png)
èšè¿°åé åãéžæãããšãé åã®ã¢ã¯ã»ã¹èšå®ããã®å Žåã¯ãã«ã¢ã¯ã»ã¹ãèŠã€ããããšãã§ããŸããããã®ãããªèšå®ã¯éåžžã«ãŸãã§ãã ã€ã³ãã«ã¯ãæ©åšã¡ãŒã«ãŒãèªã¿åã/æžã蟌ã¿çšã®MEé åãšæžã蟌ã¿çšã®èšè¿°åé åãžã®ã¢ã¯ã»ã¹ããããã¯ããããšãæšå¥šããŠããŸãããã®ãããçµã¿èŸŒã¿ããŒã«ãåããã»ãšãã©ã®ããŒãã§ã¯ãã¿ã³ããªã³ãšèžããã«å®å šãªãã³ããåé€ããããšã¯ã»ãšãã©äžå¯èœã§ãã MEãªãŒãžã§ã³ãéžæãããšãMEãã¡ãŒã ãŠã§ã¢ã®ããŒãžã§ã³ã確èªã§ããŸããã衚瀺ãããªãå Žåãããã¯è¯ããªãããã®ãããªã€ã¡ãŒãžãçž«ããªãæ¹ãè¯ãã§ãã
BIOSé åã®å 容ã«1ã€äžã®ã¬ãã«ã«è¡ããŸãããã
![](https://habrastorage.org/getpro/habr/post_images/db5/ed3/1bd/db5ed31bd5317842729fb788cccc822c.png)
ãã®ã¬ãã«ã§ã¯ãããªã¥ãŒã ãšç©ºãé åã®2çš®é¡ã®èŠçŽ ãèŠã€ããããšãã§ããŸãã ãã®å Žåã®ç¡æã¯å¿ ããã空ã§ã¯ãããŸãããããšãã°ã ECãã¡ãŒã ãŠã§ã¢ã¯ãããã£ã³ã°ã®æåã®æ®µéã§ãã®ã€ã¡ãŒãžã«ä¿åãããŸãã
ããªã¥ãŒã ã¯ãéåžžã®ããªã¥ãŒã ïŒãã¡ã€ã«ã·ã¹ãã 圢åŒãæ¢ç¥ïŒãããŒãããªã¥ãŒã ïŒFS圢åŒãæ¢ç¥ãã»ãã¥ãªãã£ã³ã¢ãå«ããç¹å¥ãªæ³šæãæã£ãŠå€æŽãã䟡å€ããããŸãïŒãããã³äžæïŒFS圢åŒãäžæã§ããããåæããŸã å®è£ ãããŠããªãïŒã«åãããŠããŸãã ç§ãã¡ã®å Žåãæåã®ç©ºãé åã®åŸã®æåã®ããªã¥ãŒã ã¯æ£åžžã§ããã2ã€ã®æªç¥æ°ïŒå®éãæåã®ããªã¥ãŒã ã¯NVRAMãæ ŒçŽãã2çªç®ã¯SecureBootã®ããŒãšããŒã¿ããŒã¹ãå«ã¿ãŸããããããããã°ã©ã ã«ãŸã 説æããŠããŸããïŒãæåŸã®ããªã¥ãŒã ã¯èµ·åå¯èœã§ãã
次ã«ãéåžžã®ããªã¥ãŒã ãéããŸãããã®å ŽåãDXEãã§ãŒãºã§ããŒãããããã¡ã€ã«ãä¿åããŸãã
![](https://habrastorage.org/getpro/habr/post_images/8f2/607/5b6/8f26075b66b0b346cea8215c847f3c37.png)
ãã®ãããªæ§é ïŒå§çž®ã»ã¯ã·ã§ã³å ã®ã¡ã€ã³ããªã¥ãŒã ïŒã¯éåžžã«é »ç¹ã«äœ¿çšããããããå ã®ã¹ããŒã¹ãããªãç¯çŽã§ããŸãã ããªã¥ãŒã å šäœã§ã¯ãªããåãã¡ã€ã«ãåå¥ã«å§çž®ããå¥ã®ãªãã·ã§ã³ããããŸã-ããã¯ã¹ããŒã¹ã®é¢ã§ããçµæžçã§ã¯ãããŸãããããã®ãããªUEFI BIOSã¯ããé«éã«èµ·åããŸã ã¢ã¯ã»ã¹ãããŠããªããã¡ã€ã«ã解åããŠãæå³ããããŸããã
次ã«ããã¡ã€ã«ã®å éšã確èªããŸãã
![](https://habrastorage.org/getpro/habr/post_images/1d4/d4d/cf9/1d4d4dcf9ef650c98c8d680dd66da5d5.png)
ãã®äžã®ãã¹ãŠã®ããŒã¿ã¯ãGUIDå®çŸ©ã»ã¯ã·ã§ã³å ã«ä¿åããïŒEDSãŸãã¯ãã§ãã¯ãµã ã¯ãéåžžããã®ãããªã»ã¯ã·ã§ã³ã®ããããŒã«ä¿åãããŸãããã®å ŽåãCSã«äŒŒãŠããŸããã誰ããã§ãã¯ããªã4ãã€ãïŒã4ã€ã®ã»ã¯ã·ã§ã³ã«åå²ãããŸãïŒ PE32-PE / COFF圢åŒã®å®éã®å®è¡å¯èœãã¡ã€ã«ãDXEäŸåé¢ä¿ã»ã¯ã·ã§ã³-DXEãã©ã€ããŒã®ããŒãé åºãUIã»ã¯ã·ã§ã³ã決å®ããŸã-ããã¹ããSystemCapsuleRt.efiããUnicode圢åŒã§æ ŒçŽããã¿ã€ã0xF0ã®äžæãªã»ã¯ã·ã§ã³ãæ ŒçŽããŸãããã¯ãåè¿°ã®COPã«é¢é£ããŠããŸãã
ãã¡ããããã¯ãã¹ãŠè¯ãããšã§ãããç·šéã¯ãŸã 衚瀺ãããŠããŸããã ã©ããªèŠçŽ ã§ãã³ã³ããã¹ãã¡ãã¥ãŒãåŒã³åºãããã®èŠçŽ ã§äœãã§ãããã瀺ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/8b2/ca1/7a9/8b2ca17a9b88a769cf2f100b756cb25c.png)
ãããŠã次ã®ããšãã§ããŸãã
- èŠçŽ ããã¡ã€ã«å šäœïŒãã®ãŸãŸæœåºïŒã§ä¿åããããããŒã¿ã®ã¿ã§ããããŒãªãïŒæ¬äœãæœåºïŒã§ä¿åããŸãã
- ãã®å Žåãå€æŽãããç»åïŒããã³ãã®ãã¹ãŠã®èŠªèŠçŽ ïŒããµã€ãºããã§ãã¯ãµã ãåèšç®ãããäœçœ®åãããä¿®æ£ãããŸãã ç»åæ§é ã¯UEFI PIä»æ§ã«åãããŠèª¿æŽãããŸã
- éžæããèŠçŽ ã®åïŒåã«æ¿å ¥ïŒãåŸïŒåŸã«æ¿å ¥ïŒããŸãã¯ãã®äžïŒãã®å ŽåãPE32ã»ã¯ã·ã§ã³ã«äœãæ¿å ¥ã§ããªãïŒã«ããã¡ã€ã«ããèŠçŽ ãæ¿å ¥ããŸãã
- èŠçŽ å šäœããã¡ã€ã«ã®å¥ã®èŠçŽ ã§çœ®ãæããïŒãã®ãŸãŸçœ®ãæããïŒããæ¬æã®ã¿ïŒæ¬æã眮ãæããïŒ
æåŸã®ã¢ã¯ã·ã§ã³ãæã圹ç«ã€ã®ã¯ã ã€ã¡ãŒãžå šäœã®æ§é ã«åœ±é¿ãäžããããšãªããUEFIã®ä»»æã®éšåãå€æŽã§ããŸãã
䜿çšäŸ
äŸãšããŠãPCäžã®MacOS XãŠãŒã¶ãŒã«ãšã£ãŠæçšãªå€æŽãæ€èšããŠãã ãããã¬ãžã¹ã¿MSR_PMG_CST_CONFIG_CONTROLïŒ0xE2ïŒã®LOCKãããïŒ0x0FïŒã®èšå®ããã€ãã¹ããŸãã ãã®ãããã¯ãOSããã®ã¬ãžã¹ã¿ã«æžã蟌ãããšã«ãã£ãŠCPUä¹ç®åšãå¶åŸ¡ã§ããªãããã«ãPowerManagement DXEãã©ã€ããŒã«ãã£ãŠèšå®ãããŸãã WindowsãšLinuxã®å Žåãããã¯å€§ããªåé¡ã§ã¯ãããŸããããMacOS Xã¯UEFIãããã®ãããªåããŸããã«èããããŸããã ãã¡ãããAICPM.kextãã©ã€ããŒïŒ10.8ïŒãŸãã¯ã«ãŒãã«ïŒ10.9ïŒã«ããããé©çšã§ããŸãããDXEãã©ã€ããŒã«ããããé©çšãã次ã®èªåæŽæ°ã«ãã£ãŠããŠã³ããŒããäžæãããããšãæããªãã§ãã ããã ãã®ãããã¯ãIntel SandyBridgeãIvyBridgeãããã³Haswellããã»ããµãŒãšãããã®* -Eãªãã·ã§ã³ã«åºã¥ãã·ã¹ãã ã§ã®ã¿å¿ èŠã§ããã次ã®ããã«å®è¡ãããŸãã
- UEFIToolã§ãã³ããéããCtrl + BackspaceãæŒããŠã¡ãã»ãŒãžãã¯ãªã¢ããå¹²æžããªãããã«ããŸã
- æ€çŽ¢ãéãããHex-patternãBody onlyããéžæããŠãè¡ã75080FBAE80Fããæ¢ããŸã
- è¡ãèŠã€ãã£ããšããã¡ãã»ãŒãžãããã«ã¯ãªãã¯ããæå®ãããèŠçŽ ã®æ¬æããã¡ã€ã«ã«ä¿åããŸã
- 16é²ãšãã£ã¿ã§ã75080FBAE80FãããEB080FBAE80Fãã«ä¿®æ£ãïŒJEã¯JMPã«ãªããŸãïŒãå€æŽãä¿åããŸã
- éžæããèŠçŽ ã®å
容ãå€æŽããèŠçŽ ã§çœ®ãæããŸããå€ãèŠçŽ ã«ã¯åé€ã®ããŒã¯ãä»ãããïŒåé€ïŒãæ°ããèŠçŽ ã«ã¯çœ®æã®ããŒã¯ãä»ãããïŒçœ®æïŒãã«ãŒãã®ãã¹ãŠã®èŠªèŠçŽ ãåæ§ç¯ãããŸãïŒåæ§ç¯ïŒ
- å€æŽãããç»åãä¿åããŸãïŒCtrl + SïŒãä¿åãæåããå Žåãä¿åãããã°ããã®ç»åãéãèŠæ±ãçºè¡ãããŸããããã§ãªãå Žåããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãã
çµæã®ã€ã¡ãŒãžãããããäœæãããã®ãšåãSPIããã°ã©ããŒã§ãã©ãã·ã¥ããMacOS XãããŒããããšãã«ã«ãŒãã«ãããã¯ãçºçããªãããã«ããŸãã
詳现ããã®ä»ã®ä¿®æ£ãçµè«
75080FBAE80Fããžãã¯ãã¿ãŒã³ã®ç±æ¥ãšæ³šæãã¹ããã®ä»ã®ãããã«ã€ããŠç¥ãããå Žåã¯ããã®èšäºã®2çªç®ã®éšåãèªãã§ãã ããã ãã®äžã§ãä¿®æ£ããèŠçŽ ãåé€ããæ¹æ³ãšæ¿å ¥ããæ¹æ³ãæ¯åå³å¯ã«èª¿ã¹ãããšãªãããã©ã®ãããªä¿®æ£ããªããããå¿ èŠãªã®ãããããäœãæ¹æ³ã誰ããã©ã®ããã«èŠã€ããã®ãããšãã圢åŒã§ããå€ãã®äŸãæºåããããšããŸãã
ãã®èšäºãããŸãã«ãéå±ã§éå±ã«èŠããªãããšãé¡ã£ãŠããŸãã ã質åããææ¡ããããŸããããå¯èœãªéãèããŠåçãããŠããã ããŸãã ãã°ã¬ããŒãã¯ããã«å¬ããã§ãã äºåã«æè¬ããæåãããã¡ãŒã ãŠã§ã¢ã
PS芪æãªã管çãšUFOå人çã«ããã®ãããªæçš¿ã®ããã®UEFIãããäœã£ãŠãã ããã