<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>iPhone Italia - Il blog italiano sull&#039;Apple iPhone 4S, iPhone 4 e 3GS &#187; reverse engineering</title>
	<atom:link href="http://www.iphoneitalia.com/tag/reverse-engineering/feed" rel="self" type="application/rss+xml" />
	<link>http://www.iphoneitalia.com</link>
	<description>Il blog italiano sull&#039;Apple iPhone 4S, iPhone 4 e iPhone 3GS</description>
	<lastBuildDate>Sun, 12 Feb 2012 22:05:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Questo accessorio non è compatibile con iPhone? Ecco come risolvere</title>
		<link>http://www.iphoneitalia.com/questo-accessorio-non-e-compatibile-con-iphone-ecco-come-risolvere-8575.html</link>
		<comments>http://www.iphoneitalia.com/questo-accessorio-non-e-compatibile-con-iphone-ecco-come-risolvere-8575.html#comments</comments>
		<pubDate>Tue, 14 Oct 2008 10:55:09 +0000</pubDate>
		<dc:creator>Suondmao</dc:creator>
				<category><![CDATA[Approfondimenti]]></category>
		<category><![CDATA[Hack & Mod]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[iapd]]></category>
		<category><![CDATA[not_made_for_iphone]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[reverse engineering]]></category>

		<guid isPermaLink="false">http://www.iphoneitalia.com/?p=8575</guid>
		<description><![CDATA[A quanti capita di vedere questo messaggio sul proprio dispositivo? E se fosse l&#8217;opportunità per iniziare uno studio approfondito su una parte del firmware iPhone? L&#8217;occasione per imparare qualcosa di nuovo e risolvere un problema allo stesso tempo non si dovrebbe mai rifiutare! L&#8217;idea alla base di questo articolo è quella di patchare una parte [...]]]></description>
			<content:encoded><![CDATA[<p>A quanti capita di vedere questo messaggio sul proprio dispositivo?<br />
E se fosse l&#8217;opportunità per iniziare uno studio approfondito su una parte del firmware iPhone? L&#8217;occasione per imparare qualcosa di nuovo e risolvere un problema allo stesso tempo non si dovrebbe mai rifiutare!</p>
<p><img class="alignnone size-full wp-image-8576" src="http://static.iphoneitalia.com/wp-content/uploads/2008/10/not_made_for_iphone_routine.jpg" alt="" width="414" height="249" /><br />
<span id="more-8575"></span>L&#8217;idea alla base di questo articolo è quella di <em>patchare</em> una parte del firmware iPhone per bloccare alla base la comparsa di questo messaggio:<br />
<img class="size-medium wp-image-8577 alignnone" src="http://static.iphoneitalia.com/wp-content/uploads/2008/10/accessory_not_made_for_iphone_error_message.jpg" alt="" width="177" height="124" /><br />
Occorre però specificare che la procedura descritta ha lo scopo di risolvere il problema <strong>solo</strong> a coloro i quali si trovano nella condizione di veder apparire <strong>a ripetizione</strong> questo messaggio sulla propria schermata di sblocco,<strong> pur non avendo nessun dispositivo esterno collegato</strong>.</p>
<p>Questo capita solitamente unicamente alle persone con il dock danneggiato, molto impolverato o che è stato bagnato accidentalmente e il grosso problema che comporta questo messaggio è il <strong>blocco dell&#8217;intero sistema audio del proprio iPhone!</strong>.<br />
Questa patch quindi <strong>non</strong> ha lo scopo di rendere &#8220;compatibili&#8221; tutti i dispositivi esterni collegati all&#8217;iPhone senza la visualizzazione del messaggio, questo sarà solo un <strong>effetto collaterale</strong> della modifica!</p>
<p>Iniziamo adesso con lo studio (il file a cui faremo riferimento è stato prelevato dal <strong>firmware 2.0.2</strong>):</p>
<ul>
<li> Accediamo al filesystem dell&#8217;iPhone e preleviamo il file <strong>iapd</strong> situato nella directory <em>/System/Library/PrivateFrameworks/IAP.framework/Support/</em></li>
</ul>
<ul>
<li> Apriamolo con un disassemblatore che supporti la decodifica di istruzioni per <strong>processori ARM</strong>, ad esempio <a title="IDA Pro" href="http://www.hex-rays.com/idapro/" target="_blank">IDA Pro</a></li>
</ul>
<ul>
<li> Posizioniamoci all&#8217;indirizzo <strong>0x90AC</strong> e cioè il punto esatto della routine responsabile della chiamata alla funzione di visualizzazione dell&#8217;errore, troveremo:</li>
</ul>
<p><img class="alignnone size-full wp-image-8579" src="http://static.iphoneitalia.com/wp-content/uploads/2008/10/not_made_for_iphone_error_start.jpg" alt="" width="414" height="448" /><br />
In questo codice possiamo individuare all&#8217;interno del ramo destro evidenziato le istruzioni che si occupano della visualizzazione dell&#8217;errore in questione.</p>
<p>L&#8217;idea per la nostra patch è quindi quella di impedire che l&#8217;esecuzione del programma entri mai in questo ramo e questo, come si vede dall&#8217;immagine, può essere fatto modificando l&#8217;istruzione <strong>BEQ errorStart </strong>(all&#8217;indirizzo <strong>0x90FC</strong>). Il nostro scopo sarà quello di bloccare questo salto verso la label <strong>errorStart</strong> e di far proseguire l&#8217;esecuzione verso <strong>label1</strong>.</p>
<p>Per far questo possiamo semplicemente sostituire l&#8217;istruzione <strong>BEQ errorStart</strong> con una istruzione ininfluente, come ad esempio <strong>MOV R1,R1</strong>.</p>
<ul>
<li> Ora che abbiamo individuato il punto esatto da modificare apriamo il file con un <strong>editor esadecimale</strong> e posizioniamoci all&#8217;indirizzo <strong>0x80FC</strong> (cioè l&#8217;offset all&#8217;interno del file della nostra istruzione). Modifichiamola sostituendo al codice operativo della <strong>BEQ errorStart</strong> <em>{0&#215;03, 0&#215;00, 0&#215;00, 0x0A}</em> quello della nostra istruzione <strong>MOV R1,R1</strong> <em>{0&#215;01, 0&#215;10, 0x0A, 0xE1}</em>:</li>
</ul>
<p><img class="alignnone size-full wp-image-8580" src="http://static.iphoneitalia.com/wp-content/uploads/2008/10/iphone_editor_esadecimale_disassembling.jpg" alt="" width="414" height="199" /><br />
E salviamo il nuovo file.</p>
<ul>
<li>Come ultimo passo occorre firmare l&#8217;eseguibile modificato secondo la guida <a title="Bypassing iPhone Code Signatures" href="http://www.saurik.com/id/8" target="_blank">Bypassing iPhone Code Signatures</a> di <strong>saurik</strong>, per cui:
<ul>
<li>Creiamo (per sicurezza) una copia di backup del file originale dell&#8217;iPhone <em>/System/Library/PrivateFrameworks/IAP.framework/Support/ipad</em></li>
</ul>
<ul>
<li>Sostituiamo il file originale con la nostra versione appena modificata</li>
<li>Impostiamo i permessi del nuovo file a <strong>755</strong></li>
<li>Installiamo da Cydia il package <strong>MobileTerminal</strong>, che servirà per effettuare l’operazione di certificazione dell’applicazione.</li>
<li>Da MobileTerminal autentichiamoci come <strong>root</strong> per poter proseguire con l&#8217;installazione del programma desiderato. Digitiamo: <em>su root</em> e introduciamo la password <em>alpine<br />
</em><img class="alignnone size-full wp-image-8581" src="http://static.iphoneitalia.com/wp-content/uploads/2008/10/mobileterminal_iphone_root.png" alt="" width="320" height="480" /></li>
<li>Ora installiamo il programma <strong>ldid</strong> di <strong>saurik</strong> utilizzando il comando: <em>apt-get install ldid</em></li>
<li>E infine firmiamo il file che abbiamo patchato: <em>ldid -s /System/Library/PrivateFrameworks/IAP.framework/Support/iapd<br />
</em><img class="alignnone size-full wp-image-8582" src="http://static.iphoneitalia.com/wp-content/uploads/2008/10/mobileterminal_ldid_signature.png" alt="" width="320" height="480" /></li>
</ul>
</li>
</ul>
<p style="center;">Bene! Ora è tutto pronto per verificare o meno il funzionamento dalla nostra modifica!<br />
<strong>Riavviamo l&#8217;iPhone e godiamoci il risultato&#8230;</strong></p>
<p>Per tutti quelli che non hanno intenzione di compiere questa modifica da soli, ma necessitano comunque del file modificato per poter utilizzare il proprio dispositivo danneggiato, possono scaricarlo direttamente da qui:</p>
<ul>
<li><a title="iapd 2.0.2 NOT_MADE_FOR_IPHONE patch" href="http://www.megaupload.com/it/?d=0Y0JK6ZN" target="_blank">iapd 2.0.2 NOT_MADE_FOR_IPHONE patch</a></li>
</ul>
<p>Ovviamente queste persone dovranno unicamente posizionare il file sotto <em>/System/Library/PrivateFrameworks/IAP.framework/Support/</em> al posto dell&#8217;originale (di cui farete comunque un backup) ed impostarne i permessi a <strong>755</strong></p>
<p><strong>Una nota conclusiva:</strong><br />
La modifica del file in <strong>versione 2.0.2</strong> è stata testata senza problemi su iPhone con il dock danneggiato e con firmware in versione sia <strong>2.0.2</strong> che <strong>2.1</strong>.<br />
Sugli iPhone con il firmware <strong>2.1</strong> però questa modifica rende <strong>non utilizzabili </strong>i dispositivi esterni (risolvendo comunque il problema iniziale del freeze dall&#8217;apparato audio). Per cui se qualche utente volesse utilizzare questa patch sul nuovo firmware <strong>unicamente</strong> per evitare il messaggio deve ripetere la procedura descritta applicandola sul file <strong>iapd</strong> in versione <strong>2.1</strong> (ovviamente a questo punto gli indirizzi di memoria riportati in questo articolo non saranno più validi).</p>
<p>Se qualcuno è interessato alla guida dettagliata di questa patch può leggere il documento originale: <a title="Progetto iPhoneiapdReverseEngineering" href="http://suondmao.altervista.org/getfile.php?cat=articles&amp;sez=prj&amp;name=iPhoneiapdReverseEngineering.php" target="_blank">Progetto iPhoneiapdReverseEngineering</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iphoneitalia.com/questo-accessorio-non-e-compatibile-con-iphone-ecco-come-risolvere-8575.html/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

