Patch Boot Camp Assistant (Assistente Boot Camp)

Riporto una guida scritta da me sul forum InsanelyMac per poter utilizzare l’Assistente Boot Camp anche su hackintosh avviati tramite Chameleon. Infatti, per chi non lo sapesse, Chameleon (e derivati come Enoch, Chimera ecc) riescono a falsificare le informazioni fino ad un certo punto e dove non arrivano i bootloader arriviamo noi! 🙂 Inoltre, se potete, vi consiglio di passare a Clover semplicemente perché riesce a emulare un sistema (U)EFI molto meglio del primo e quindi permette di effettuare operazioni che altrimenti non sarebbero possibili, come per esempio l’uso di Assistente Boot Camp.

Guida:
Per chi volesse riprodurre in futuro una patch simile ho voluto (su suggerimento del buon Fabio “ErmaC” ) scrivere questa mini guida.

Per prima cosa vorrei elencare gli strumenti utilizzati:

  • Hopper Disassembler Demo: per disassemblare il codice dell’eseguibile principale.
  • Hex Fiend: per la modifica dei bites. Perché non ho usato semplicemente il perl? Semplice, con un editor grafico posso annullare le modifiche semplicemente premendo commad+Z
  • codesign: presente nella suite Apple Xcode necessario per firmare i binari modificati.

I file modificati:

  • Boot Camp Assistant.app/Contents/MacOS/Boot Camp Assistant
  • Boot Camp Assistant.app/Contents/Info.plist

La versione in questione è la 5.1.2 (481) di Mavericks (io l’ho fatto su 10.9.2 ma non so se presente anche in versioni precedenti).
Per la parte “bla bla bla”:

Tecnicamente questi tipi di patch, così come le patch per gli OSInstall (quelli utili per installare Mac OS X su MBR), sono semplici in quanto consistono nella sola modifica di alcuni (o uno solo) jmp (jump), je (jump equal), jne (jump not equal). Questi, nel codice originario, possono corrispondere a diverse istruzioni condizionali quali: if-then-else, do while, while, switch case (anche chiamato select case).
Nel nostro caso si tratta di un semplice select case e di un if-then-else. Il primo controlla che il nostro Mac (eheh loro non sanno ancora che il loro software gira su Hack ) abbia una versione della ROM aggiornata e compatibile (?). Il secondo, invece, controlla che i driver di supporto per windows siano installati correttamente altrimenti ciccia, blocca tutto e resti fregato!

I jump modificati sono: (potete fare i calcoli con la calcolatrice)
Per il controllo della ROM:

0x100001d8c 741C -> EB00

diventando (leggibili agli umani)

0x100001d8c je (0x100001d8c + 1c) -> jmp (0x100001d8c + 00)


In questo modo passiamo solo e soltanto il controllo della ROM. Infatti controllerà anche che il sistema sia supportato e che non ci siano errori generici.

Il secondo, per il controllo dell’installazione dei driver Boot Camp (ESD):

0x100002864 0F84A9040000 -> EB0400000000

Qui diventa EB04 per saltare i successivi 4 bit in quanto sono li solo per “riempire” il codice. Questo per poter signare successivamente il binario
Leggibile per gli umani Leggibile per gli umani

0x100002864 je (0x100002864 + 4af) -> jmp (0x100002864 + 04)

Per la modifca del file Info.plist basta eliminare le seguenti chiavi:

  • DARequiredROMVersions
  • 32BitSupportedModels
  • PreESDRequiredModels
  • PreUEFIModels
  • PreUSBBootSupportedModels
  • Win7OnlyModels

Insomma, tutte le chiavi che servono al programma per i vari controlli.

Una volta finito il tutto, va firmato il binario con:

codesign -f -s - "Boot Camp Assistant"

Spero che questa spiegazione visia stata utile e che possiate riuscirci facilmente così come l’ho fatto io. Mi scuso in anticipo qual’ora riscontriate errori madornali ma da autodidatta non posso fare altro che imparare dai miei errori, appunto. Quindi fatemeli notare, magari in un commento 🙂

Il risultato può essere scaricato da qui: http://www.insanelymac.com/forum/files/file/215-boot-camp-assistant-patched/

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.