Marchrius Posted March 21, 2014 Share Posted March 21, 2014 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 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 pm Il risultato può essere scaricato da qui: http://www.insanelymac.com/forum/files/file/215-boot-camp-assistant-patched/ 4 Link to comment Share on other sites More sharing options...
ErmaC Posted March 21, 2014 Share Posted March 21, 2014 Grande Matteo. Molti ringrazieranno! Continua così! ErmaC 1 Link to comment Share on other sites More sharing options...
Recommended Posts