Jump to content

Patch Assistente Boot Camp


Marchrius
 Share

2 posts in this topic

Recommended Posts

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)

Schermata 2014-03-21 alle 21.08.57.png

 

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

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

Schermata 2014-03-21 alle 21.18.56.pngSchermata 2014-03-21 alle 21.19.06.png

 

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 pm :)

 

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

  • Like 4
Link to comment
Share on other sites

 Share

×
×
  • Create New...