<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.theiphonewiki.com/w/index.php?action=history&amp;feed=atom&amp;title=Software_Update_Service</id>
	<title>Software Update Service - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.theiphonewiki.com/w/index.php?action=history&amp;feed=atom&amp;title=Software_Update_Service"/>
	<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;action=history"/>
	<updated>2026-07-01T05:54:58Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=33277&amp;oldid=prev</id>
		<title>J. J.: Made it more serious.</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=33277&amp;oldid=prev"/>
		<updated>2013-07-31T20:56:12Z</updated>

		<summary type="html">&lt;p&gt;Made it more serious.&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 20:56, 31 July 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 266:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 266:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Pre-steps (to be performed once or once per update) ===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Pre-steps (to be performed once or once per update) ===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Install your own Software Update certificate. This will block Apple automatic updates (interesting side effect&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; :p&lt;/del&gt;) but more importantly allow you to install your own.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Install your own Software Update certificate. This will block Apple automatic updates (interesting side effect) but more importantly allow you to install your own.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  The file to replace is /System/Library/Lockdown/iPhoneSoftwareUpdate.pem&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  The file to replace is /System/Library/Lockdown/iPhoneSoftwareUpdate.pem&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 286:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 286:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Extract archive.cpio.gz with gzip -d archive.cpio.gz ; cpio -i &amp;lt; archive.cpio&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Extract archive.cpio.gz with gzip -d archive.cpio.gz ; cpio -i &amp;lt; archive.cpio&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(here you could choose specific patches to install, remove the baseband update, and so on&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; ... but this first version is complicated enough :P&lt;/del&gt;)&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(here you could choose specific patches to install, remove the baseband update, and so on)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Generating the modified BOMs ===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Generating the modified BOMs ===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 346:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 346:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Running the update and checking all is fine ===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Running the update and checking all is fine ===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Connect to iTunes and install the update. If you're prompted to restore, you &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;lose&lt;/del&gt; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;:p&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Connect to iTunes and install the update. If you're prompted to restore, you &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;have&lt;/ins&gt; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;failed.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Upload post.bom.reduced to /tmp/upd on the Iphone and run from /tmp/upd&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Upload post.bom.reduced to /tmp/upd on the Iphone and run from /tmp/upd&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key theiphon_wikidb:diff:wikidiff2:1.12:old-25394:rev-33277:1.7.2:0 --&gt;
&lt;/table&gt;</summary>
		<author><name>J. J.</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=25394&amp;oldid=prev</id>
		<title>5urd: /* BOM Framework */</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=25394&amp;oldid=prev"/>
		<updated>2012-04-06T00:26:26Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;BOM Framework&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 00:26, 6 April 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 75:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 75:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== BOM Framework ===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== BOM Framework ===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The BOM framework (located in /System/Library/PrivateFrameworks/Bom.framework/Bom) is not documented, but very easy to reverse.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The BOM framework (located in /System/Library/PrivateFrameworks/Bom.framework/Bom) is not documented, but very easy to reverse.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Here is the .h used to implment the prototype checker&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; // BOM framework header - v0.1&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; // BOM framework header - v0.1&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 85:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 83:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; typedef void* BOMFSObject;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; typedef void* BOMFSObject;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; typedef enum BOMObjectType {&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; typedef enum BOMObjectType {&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;	&lt;/del&gt;BOMFile = 1,&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;     &lt;/ins&gt;BOMFile = 1,&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;	&lt;/del&gt;BOMDirectory,&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;     &lt;/ins&gt;BOMDirectory,&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;	&lt;/del&gt;BOMLink&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;     &lt;/ins&gt;BOMLink&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; } BOMObjectType;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; } BOMObjectType;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; typedef struct BOMSize {&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; typedef struct BOMSize {&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;	&lt;/del&gt;int low;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;     &lt;/ins&gt;int low;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;	&lt;/del&gt;int high;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;     &lt;/ins&gt;int high;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; } BOMSize;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; } BOMSize;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; int BOMCRC32ForFile(char *path, unsigned int *crc, BOMSize *size);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; int BOMCRC32ForFile(char *path, unsigned int *crc, BOMSize *size);&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 101:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 99:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; int BOMBomInsertFSObject(BOM bom, BOMFSObject object, int  unk1);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; int BOMBomInsertFSObject(BOM bom, BOMFSObject object, int  unk1);&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; // unk1=0&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; // unk1=0&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; BOMEnumerator BOMBomEnumeratorNewWithOptions(BOM bom, int unk1, int unk2);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; BOMEnumerator BOMBomEnumeratorNewWithOptions(BOM bom, int unk1, int unk2);&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; // unk1=0 unk2=1&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; // unk1=0 unk2=1&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key theiphon_wikidb:diff:wikidiff2:1.12:old-4827:rev-25394:1.7.2:0 --&gt;
&lt;/table&gt;</summary>
		<author><name>5urd</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=4827&amp;oldid=prev</id>
		<title>OMEGA RAZER: /* Tasks: Applying updates on a jailbreaked system */</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=4827&amp;oldid=prev"/>
		<updated>2009-09-14T05:04:17Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Tasks: Applying updates on a jailbreaked system&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 05:04, 14 September 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Tasks: Applying updates on a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;jailbreaked&lt;/del&gt; system ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Tasks: Applying updates on a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;jailbroken&lt;/ins&gt; system ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;b&amp;gt;Describing the update process&amp;lt;/b&amp;gt;: DONE&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;b&amp;gt;Describing the update process&amp;lt;/b&amp;gt;: DONE&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key theiphon_wikidb:diff:wikidiff2:1.12:old-2310:rev-4827:1.7.2:0 --&gt;
&lt;/table&gt;</summary>
		<author><name>OMEGA RAZER</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=2310&amp;oldid=prev</id>
		<title>ChronicDev: /* Sample patch checker */</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=2310&amp;oldid=prev"/>
		<updated>2008-11-01T16:32:32Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Sample patch checker&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 16:32, 1 November 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 115:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 115:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The following code (running on the iPhone to validate the checksums or on OS-X to modify the BOM), partially tested, creates a simplified BOM containing only references to the patched files. This does not work fully as expected because during the update process an error is generated if the file system contains more files than what is provided in the BOM. But the idea is still sound :)&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The following code (running on the iPhone to validate the checksums or on OS-X to modify the BOM), partially tested, creates a simplified BOM containing only references to the patched files. This does not work fully as expected because during the update process an error is generated if the file system contains more files than what is provided in the BOM. But the idea is still sound :)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Program arguments : pre.bom, directory containing the extract patches (cpio -i &amp;lt;archive.cpio), target.bom to be created and / if running on the iPhone&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;//&lt;/ins&gt;Program arguments : pre.bom, directory containing the extract patches (cpio -i &amp;lt;archive.cpio), target.bom to be created and / if running on the iPhone&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;// Checkpatch - Sample update BOM cleaner - v0.1&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;// Checkpatch - Sample update BOM cleaner - v0.1&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;// Zf for iPhone Developers Wiki&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;// Zf for iPhone Developers Wiki&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 230:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 230:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	return 0;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	return 0;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Update utilities ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Update utilities ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key theiphon_wikidb:diff:wikidiff2:1.12:old-741:rev-2310:1.7.2:0 --&gt;
&lt;/table&gt;</summary>
		<author><name>ChronicDev</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=741&amp;oldid=prev</id>
		<title>Pumpkin: Not relevant to article itself. &quot;Do not delete&quot; doesn't make sense, as this wiki keeps all histories, etc. The preamble is more suited to the talk page.</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=741&amp;oldid=prev"/>
		<updated>2008-07-30T16:15:51Z</updated>

		<summary type="html">&lt;p&gt;Not relevant to article itself. &amp;quot;Do not delete&amp;quot; doesn&amp;#039;t make sense, as this wiki keeps all histories, etc. The preamble is more suited to the talk page.&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 16:15, 30 July 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Introduction ==&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This is from the old iPhone Dev Wiki, but is not cached or saved anywhere else. I saw how in-depth it got and at the time I was thinking that it would get removed. I was right. Luckily, I saved it, and I have been holding on to it for when the time was right. Now that we have this open wiki, the time is right. This article details the old software updates, usually less than 10mb in size, that Apple used to update firmwares. They worked much better, and were based on good old .patch files. &amp;lt;b&amp;gt;Please do not delete this preamble&amp;lt;/b&amp;gt;. And without further ado, here is the article.&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;PS: I have slightly editted it because of formatting reasons, as well as made it look neater.&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Tasks: Applying updates on a jailbreaked system ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Tasks: Applying updates on a jailbreaked system ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key theiphon_wikidb:diff:wikidiff2:1.12:old-668:rev-741:1.7.2:0 --&gt;
&lt;/table&gt;</summary>
		<author><name>Pumpkin</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=668&amp;oldid=prev</id>
		<title>ChronicDev at 20:13, 29 July 2008</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=668&amp;oldid=prev"/>
		<updated>2008-07-29T20:13:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;amp;diff=668&amp;amp;oldid=665&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>ChronicDev</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=665&amp;oldid=prev</id>
		<title>ChronicDev: New page: == Introduction == This is from the old iPhone Dev Wiki, but is not cached or saved anywhere else. I saw how in-depth it got and at the time I was thinking that it would get removed. I was...</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Software_Update_Service&amp;diff=665&amp;oldid=prev"/>
		<updated>2008-07-29T20:05:32Z</updated>

		<summary type="html">&lt;p&gt;New page: == Introduction == This is from the old iPhone Dev Wiki, but is not cached or saved anywhere else. I saw how in-depth it got and at the time I was thinking that it would get removed. I was...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Introduction ==&lt;br /&gt;
This is from the old iPhone Dev Wiki, but is not cached or saved anywhere else. I saw how in-depth it got and at the time I was thinking that it would get removed. I was right. Luckily, I saved it, and I have been holding on to it for when the time was right. Now that we have this open wiki, the time is right. This article details the old software updates, usually less than 10mb in size, that Apple used to update firmwares. They worked much better, and were based on good old .patch files. &amp;lt;b&amp;gt;Please do not delete this preamble&amp;lt;/b&amp;gt;. And without further ado, here is the article.&lt;br /&gt;
&lt;br /&gt;
PS: I have slightly editted it because of formatting reasons, as well as made it look neater.&lt;br /&gt;
&lt;br /&gt;
== Tasks: Applying updates on a jailbreaked system ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Describing the update process&amp;lt;/b&amp;gt;: DONE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Understanding the BOM file format on the iPhone&amp;lt;/b&amp;gt;: IN PROGRESS (see the BOM framework)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Patch the pre/post BOM to only check the files that are patched&amp;lt;/b&amp;gt;: IN PROGRESS (compare BOM list with cpio'ed archive content)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Regenerating/signing the update files&amp;lt;/b&amp;gt;: IN PROGRESS (iZsh has some stuff)&lt;br /&gt;
&lt;br /&gt;
== Update archive content ==&lt;br /&gt;
&lt;br /&gt;
The update archive is a zip contains the following files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;archive.cpio.gz&amp;lt;/b&amp;gt;: the actual cpio patch archive (encrypted). Contains a list of BSDiff patches (*) and baseband firmware updates, if available, with the associated flashing tools (bbupdater/imeisv).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Info.plist&amp;lt;/b&amp;gt;: description of the update and hashes of the update components (cleartext)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Info.plist.signature&amp;lt;/b&amp;gt;: asymmetric signature of Info.plist validated against /System/Library/Lockdown/iPhoneSoftwareUpdate.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;libupdate_brain.dylib&amp;lt;/b&amp;gt;: stage 2 update process library (encrypted)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;pre.bom&amp;lt;/b&amp;gt;: Bill Of Material stating the filesystem state before the update process (encrypted)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;post.bom&amp;lt;/b&amp;gt;: Bill Of Material stating the filesystem state after the update process (encrypted)&lt;br /&gt;
&lt;br /&gt;
(*) there is a different update file to go from 1.0 to 1.0.2 and from 1.0.1 to 1.0.2 since bsdiff does not apply partial patches.&lt;br /&gt;
&lt;br /&gt;
The BOM files can be used to validate the CRC 32 checksums of the modified files. They can be browsed with lsbom on OS X.&lt;br /&gt;
&lt;br /&gt;
== Update process ==&lt;br /&gt;
&lt;br /&gt;
# Software_Update is invoked&lt;br /&gt;
&lt;br /&gt;
# The files signatures are checked&lt;br /&gt;
&lt;br /&gt;
# libupdate_brain.dylib, pre.bost and post.bom are decrypted&lt;br /&gt;
&lt;br /&gt;
# gogo_software_update in libupdate_brain.dylib is called to perform the actual update process&lt;br /&gt;
Blocking automatic updates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;A quick reversible way to disable automatic updates&amp;lt;/b&amp;gt;: remove the executable permission on software_update&lt;br /&gt;
&lt;br /&gt;
 chmod a-x /usr/libexec/software_update&lt;br /&gt;
&lt;br /&gt;
Since bbupdater is included in the updates, you must block all automatic updates to prevent baseband updates&lt;br /&gt;
&lt;br /&gt;
== Debugging software_update ==&lt;br /&gt;
&lt;br /&gt;
software_update fails when launched from dropbear because it cannot connect to lockdownd (validated with weasel, the minimal debugger included in the toolchain)&lt;br /&gt;
&lt;br /&gt;
Further investigation is needed to know why this happen. Probably because it must be spawned from a specific process. In this case weasel could probably be modified to accept remote commands in order to debug that kind of processes with minimal side effects.&lt;br /&gt;
&lt;br /&gt;
== Decrypting the update files ==&lt;br /&gt;
&lt;br /&gt;
The update files are AES-128 CBC encrypted with a key dependant of the software version.&lt;br /&gt;
&lt;br /&gt;
To retrieve the key, compute a SHA-1 hash of /System/Library/Caches/com.apple.kernelcaches/kernelcache.s5l8900xrb from offset (size / 2 - 0x2000) for 0x4000 bytes (or used the utility described below)&lt;br /&gt;
&lt;br /&gt;
To decrypt the update files from a desktop computer - funny facts : the IV is TheIphoneLovesU&lt;br /&gt;
&lt;br /&gt;
openssl enc -d -aes-128-cbc -K hex_key_obtained_in_the_previous_step -iv 5468656950686F6E654C6F7665735500 -in encrypted_file -out decrypted_file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Another quick &amp;amp; dirty way to recover the decrypted files&amp;lt;/b&amp;gt;: Have software_update crash before running stage 2 and scavenge the files, for example by modifying the name of the function called in stage 2 (gogo_software_update) - the decrypted files are in /private/var/software_update/foo.pkg&lt;br /&gt;
Reversing BOM&lt;br /&gt;
&lt;br /&gt;
The BOM framework (located in /System/Library/PrivateFrameworks/Bom.framework/Bom) is not documented, but very easy to reverse.&lt;br /&gt;
&lt;br /&gt;
Here is the .h used to implment the prototype checker&lt;br /&gt;
&lt;br /&gt;
 // BOM framework header - v0.1&lt;br /&gt;
 // Zf for iPhone Developers Wiki&lt;br /&gt;
 // Licensed under GPLv2&lt;br /&gt;
 typedef void* BOM;&lt;br /&gt;
 typedef void* BOMEnumerator;&lt;br /&gt;
 typedef void* BOMFSObject;&lt;br /&gt;
 typedef enum BOMObjectType {&lt;br /&gt;
	BOMFile = 1,&lt;br /&gt;
	BOMDirectory,&lt;br /&gt;
	BOMLink&lt;br /&gt;
 } BOMObjectType;&lt;br /&gt;
 typedef struct BOMSize {&lt;br /&gt;
	int low;&lt;br /&gt;
	int high;&lt;br /&gt;
 } BOMSize;&lt;br /&gt;
 int BOMCRC32ForFile(char *path, unsigned int *crc, BOMSize *size);&lt;br /&gt;
 BOM BOMBomOpen(char *path, int unk1); // 0 == error&lt;br /&gt;
 // unk1 = 0&lt;br /&gt;
 int BOMBomFree(BOM bom);&lt;br /&gt;
 BOM BOMBomNew(char *path);&lt;br /&gt;
 int BOMBomCommit(BOM bom);&lt;br /&gt;
 int BOMBomInsertFSObject(BOM bom, BOMFSObject object, int  unk1);&lt;br /&gt;
 // unk1=0&lt;br /&gt;
&lt;br /&gt;
 BOMEnumerator BOMBomEnumeratorNewWithOptions(BOM bom, int unk1, int unk2);&lt;br /&gt;
 // unk1=0 unk2=1&lt;br /&gt;
 BOMFSObject BOMBomEnumeratorNext(BOMEnumerator enumerator); // 0 == last&lt;br /&gt;
 int BOMEnumeratorFree(BOMEnumerator enumerator);&lt;br /&gt;
 BOMObjectType BOMFSObjectType(BOMFSObject object);&lt;br /&gt;
 char* BOMFSObjectPathName(BOMFSObject object);&lt;br /&gt;
 unsigned int BOMFSObjectChecksum(BOMFSObject object);&lt;br /&gt;
 unsigned int BOMFSObjectSize(BOMFSObject object);&lt;br /&gt;
 int BOMFSObjectFree(BOMFSObject object);&lt;br /&gt;
&lt;br /&gt;
== Sample patch checker ==&lt;br /&gt;
&lt;br /&gt;
The following code (running on the iPhone to validate the checksums or on OS-X to modify the BOM), partially tested, creates a simplified BOM containing only references to the patched files. This does not work fully as expected because during the update process an error is generated if the file system contains more files than what is provided in the BOM. But the idea is still sound :)&lt;br /&gt;
&lt;br /&gt;
Program arguments : pre.bom, directory containing the extract patches (cpio -i &amp;lt;archive.cpio), target.bom to be created and / if running on the iPhone&lt;br /&gt;
&lt;br /&gt;
// Checkpatch - Sample update BOM cleaner - v0.1&lt;br /&gt;
// Zf for iPhone Developers Wiki&lt;br /&gt;
// Licensed under GPLv2&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;quot;bom.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
	BOM src, dst;&lt;br /&gt;
	BOMEnumerator bomEnumerator;&lt;br /&gt;
	BOMFSObject bomObject;&lt;br /&gt;
	char *root_dir = NULL;&lt;br /&gt;
	int count=0, errors=0;&lt;br /&gt;
&lt;br /&gt;
	if (argc &amp;lt; 4) {&lt;br /&gt;
		printf(&amp;quot;Usage: %s src_BOM patches_dir target_BOM [root_dir]\n&amp;quot;,&lt;br /&gt;
				argv[0]);&lt;br /&gt;
		printf(&amp;quot;\nCreate target_BOM a reduced version of src_BOM &amp;quot; &lt;br /&gt;
		       &amp;quot;containing only the references to patches_dir patches.&amp;quot;&lt;br /&gt;
		       &amp;quot;\nChecksums are validated against root_dir if given\n&amp;quot;);&lt;br /&gt;
		return 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	src = BOMBomOpen(argv[1], 0);&lt;br /&gt;
	dst = BOMBomNew(argv[3]);&lt;br /&gt;
	if (argc &amp;gt;= 4) {&lt;br /&gt;
		root_dir = argv[4];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (!src) {&lt;br /&gt;
		printf(&amp;quot;Couldn't open %s&amp;quot;, argv[1]);&lt;br /&gt;
		return 1;&lt;br /&gt;
	}&lt;br /&gt;
	bomEnumerator = BOMBomEnumeratorNewWithOptions(src, 0, 1);&lt;br /&gt;
	if (!bomEnumerator) {&lt;br /&gt;
		printf(&amp;quot;Open enumerator failed\n&amp;quot;);&lt;br /&gt;
		return 1;&lt;br /&gt;
	}&lt;br /&gt;
	while ((bomObject = BOMBomEnumeratorNext(bomEnumerator))) {&lt;br /&gt;
		BOMObjectType fsObjectType;&lt;br /&gt;
		unsigned int expectedCRC;&lt;br /&gt;
		char found = 0;&lt;br /&gt;
&lt;br /&gt;
		fsObjectType = BOMFSObjectType(bomObject);	&lt;br /&gt;
		if (fsObjectType == BOMFile) {&lt;br /&gt;
			char patchPath[400];&lt;br /&gt;
			sprintf(patchPath, &amp;quot;%s/%s.patch&amp;quot;, &lt;br /&gt;
				argv[2], &lt;br /&gt;
				BOMFSObjectPathName(bomObject));&lt;br /&gt;
			found = (access(patchPath, F_OK) == 0);&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		if (fsObjectType == BOMDirectory) {&lt;br /&gt;
			char patchPath[400];&lt;br /&gt;
			sprintf(patchPath, &amp;quot;%s/%s&amp;quot;, argv[2],&lt;br /&gt;
				BOMFSObjectPathName(bomObject));&lt;br /&gt;
			found = (access(patchPath, F_OK) == 0);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		expectedCRC = BOMFSObjectChecksum(bomObject);&lt;br /&gt;
		if (found &amp;amp;&amp;amp; root_dir != NULL &amp;amp;&amp;amp; expectedCRC != 0) {&lt;br /&gt;
			char rootPath[400];&lt;br /&gt;
			unsigned int computedCRC;&lt;br /&gt;
			sprintf(rootPath, &amp;quot;%s/%s&amp;quot;, root_dir,&lt;br /&gt;
				BOMFSObjectPathName(bomObject));&lt;br /&gt;
			if (access(rootPath, R_OK) != 0) {&lt;br /&gt;
				errors++;&lt;br /&gt;
				fprintf(stderr, &amp;quot;%s not found\n&amp;quot;,&lt;br /&gt;
						rootPath);&lt;br /&gt;
				found = 0;&lt;br /&gt;
			}&lt;br /&gt;
			BOMCRC32ForFile(rootPath, &amp;amp;computedCRC, NULL);&lt;br /&gt;
			if (computedCRC != expectedCRC) {&lt;br /&gt;
				errors++;&lt;br /&gt;
				fprintf(stderr, &amp;quot;CRC mismatched for %s &amp;quot;&lt;br /&gt;
					&amp;quot;expected %u got %u\n&amp;quot;,&lt;br /&gt;
					rootPath, expectedCRC, computedCRC);&lt;br /&gt;
				found = 0; &lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if (found) {&lt;br /&gt;
			count++;&lt;br /&gt;
			BOMBomInsertFSObject(dst, bomObject, 0);&lt;br /&gt;
		}&lt;br /&gt;
		BOMFSObjectFree(bomObject);&lt;br /&gt;
	}&lt;br /&gt;
	BOMBomEnumeratorFree(bomEnumerator);&lt;br /&gt;
	BOMBomFree(src);&lt;br /&gt;
&lt;br /&gt;
	BOMBomCommit(dst);&lt;br /&gt;
&lt;br /&gt;
	if (root_dir == NULL) {&lt;br /&gt;
		printf(&amp;quot;%d entries added. No consistency check done\n&amp;quot;,&lt;br /&gt;
				count);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		if (errors) {&lt;br /&gt;
			printf(&amp;quot;%d entries added, %d errors.\n&amp;quot;&lt;br /&gt;
			       &amp;quot;VALIDATE BEFORE PATCHING !\n&amp;quot;,&lt;br /&gt;
				count, errors);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			printf(&amp;quot;%d entries added, good to go :)\n&amp;quot;,&lt;br /&gt;
					count);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update utilities ==&lt;br /&gt;
&lt;br /&gt;
A set of utilities to manipulate update files on the iPhone is provided - current version 0.1 available here http://dl.free.fr/aqIyfnGZU/iPhone-update-utilities-0.1.tar.gz&lt;br /&gt;
&lt;br /&gt;
These utilities should be trivial to port to OS X.&lt;br /&gt;
&lt;br /&gt;
Utilities currently provided&lt;br /&gt;
&lt;br /&gt;
 bspatch	Port of bspatch used to apply specific update patches&lt;br /&gt;
		extracted from the cpio archive&lt;br /&gt;
		bspatch [original file] [patch file] [target file]&lt;br /&gt;
		The original file and target file can be the same&lt;br /&gt;
&lt;br /&gt;
 getUpdateKey	Retrieve the update key used to decrypt libupdate_brain.dylib&lt;br /&gt;
		(and subsequent data files : boms and the main archive)&lt;br /&gt;
		Run without parameters or with the path to a specific &lt;br /&gt;
		kernelcache&lt;br /&gt;
&lt;br /&gt;
 listBOM	Very simple lsbom - list the contents of a BOM file&lt;br /&gt;
&lt;br /&gt;
 checkBOM	Validates BOM checksums against a list of files&lt;br /&gt;
		checkBOM [BOM file] [path to root]&lt;br /&gt;
		On the iPhone path to root will be /&lt;br /&gt;
&lt;br /&gt;
 reduceBOMPatch	Create a reduced BOM limited to files matching a patch set&lt;br /&gt;
		reduceBOMpatch [source BOM] [patch dir.] [target BOM] [path&lt;br /&gt;
				to root (optional)]&lt;br /&gt;
		If a root path is provided the BOM files checksum will be&lt;br /&gt;
		checked against the local filesystem&lt;br /&gt;
&lt;br /&gt;
== Early alpha: applying an update without wiping modified content ==&lt;br /&gt;
&lt;br /&gt;
The following steps were used to update from 1.0.1 to 1.0.2 without wiping everything. It's still not user friendly, and buggy, but you can try to follow them and report your ideas to improve it&lt;br /&gt;
&lt;br /&gt;
Pre-steps (to be performed once or once per update)&lt;br /&gt;
&lt;br /&gt;
1) Install your own Software Update certificate. This will block Apple automatic updates (interesting side effect :p) but more importantly allow you to install your own.&lt;br /&gt;
&lt;br /&gt;
  The file to replace is /System/Library/Lockdown/iPhoneSoftwareUpdate.pem&lt;br /&gt;
&lt;br /&gt;
2) Obtain your current update key according to your kernel cache version&lt;br /&gt;
&lt;br /&gt;
  Run getUpdateKey on the iPhone and copy the result&lt;br /&gt;
&lt;br /&gt;
Preparing the update files&lt;br /&gt;
&lt;br /&gt;
1) Obtain your update file from iTunes, do not install it. The file name should be iPhone1,updateVersion_initialBuild_to_updateBuild_Update.ipsw&lt;br /&gt;
&lt;br /&gt;
2) Unzip it&lt;br /&gt;
&lt;br /&gt;
3) Decrypt archive.cpio.gz, libupdate_brain.dylib, pre.bom, post.bom with&lt;br /&gt;
&lt;br /&gt;
openssl enc -d -aes-128-cbc -K update_key -iv 5468656950686F6E654C6F7665735500 -in encrypted_file -out decrypted_file&lt;br /&gt;
&lt;br /&gt;
4) Extract archive.cpio.gz with gzip -d archive.cpio.gz ; cpio -i &amp;lt; archive.cpio&lt;br /&gt;
&lt;br /&gt;
(here you could choose specific patches to install, remove the baseband update, and so on ... but this first version is complicated enough :p)&lt;br /&gt;
&lt;br /&gt;
Generating the modified BOMs&lt;br /&gt;
&lt;br /&gt;
1) Copy the obtaines patches/ directory, pre.bom, post.bom to the iPhone, for example in /tmp/upd&lt;br /&gt;
&lt;br /&gt;
2) Prepare the reduced pre BOM : from /tmp/upd run&lt;br /&gt;
&lt;br /&gt;
reduceBOMPatch pre.bom patches/ pre.bom.reduced /&lt;br /&gt;
&lt;br /&gt;
If you get a checksum warning - fix it (for example reinstall the original lockdownd if it was modified)&lt;br /&gt;
&lt;br /&gt;
3) Prepare the reduced post BOM : from /tmp/upd run&lt;br /&gt;
&lt;br /&gt;
reduceBOMPatch post.bom patches/ post.bom.reduced&lt;br /&gt;
&lt;br /&gt;
4) Upload back pre.bom.reduced and post.bom.reduced to your computer&lt;br /&gt;
&lt;br /&gt;
Patching libupdate_brain.dylib (temporary step, ugly hack, and so on)&lt;br /&gt;
&lt;br /&gt;
Several controls are made on the BOM file that are not patched correctly - local supplementary files should be merged with the BOM in the visited directories.&lt;br /&gt;
&lt;br /&gt;
For the moment patching libupdate_brain.dylib to remove the control (call to verify_uberbom) is faster :)&lt;br /&gt;
&lt;br /&gt;
The following patch is valid for the for the 1.0.2 update and probably below&lt;br /&gt;
&lt;br /&gt;
Comparing files libupdate_brain.dylib and LIBUPDATE_BRAIN.DYLIB.MODIF&lt;br /&gt;
000059CC: BE 00&lt;br /&gt;
000059CD: F2 00&lt;br /&gt;
000059CE: FF A0&lt;br /&gt;
000059CF: EB E3&lt;br /&gt;
00006670: 95 00&lt;br /&gt;
00006671: EF 00&lt;br /&gt;
00006672: FF A0&lt;br /&gt;
00006673: EB E3&lt;br /&gt;
&lt;br /&gt;
=== Preparing the new update archive ===&lt;br /&gt;
&lt;br /&gt;
1) Rename pre.bom.reduced pre.bom and post.bom.reduced post.bom.&lt;br /&gt;
&lt;br /&gt;
  If you did some modifications to the patches, put them back in the gzipped cpio archive&lt;br /&gt;
  Have the original Info.plist ready as well &lt;br /&gt;
&lt;br /&gt;
2a) Edit Info.plist, set the Encrypted key to &amp;lt;false/&amp;gt; OR process to 2b)&lt;br /&gt;
&lt;br /&gt;
2b) Encrypt pre.bom, post.bom, libupdate_brain.dylib and archive.cpio.gz with the following command&lt;br /&gt;
&lt;br /&gt;
openssl enc -e -aes-128-cbc -K update_key -iv 5468656950686F6E654C6F7665735500 -in cleartext_file -out encrypted_file&lt;br /&gt;
&lt;br /&gt;
3) Edit Info.plist and update the base64 digests for each modified component. You'll obtain the new digest with&lt;br /&gt;
&lt;br /&gt;
openssl sha1 -binary file_to_check | openssl base64 -e&lt;br /&gt;
&lt;br /&gt;
4) Generate Info.plist.signature with your own private key associated to the update certificate you replaced with&lt;br /&gt;
&lt;br /&gt;
cat Info.plist | openssl dgst -sha1 -key /path/to/your/private/key &amp;gt; Info.plist.signature&lt;br /&gt;
&lt;br /&gt;
5) Zip back all files and replace iTunes ipsw&lt;br /&gt;
&lt;br /&gt;
Running the update and checking all is fine&lt;br /&gt;
&lt;br /&gt;
1) Connect to iTunes and install the update. If you're prompted to restore, you lose :p&lt;br /&gt;
&lt;br /&gt;
2) Upload post.bom.reduced to /tmp/upd on the Iphone and run from /tmp/upd&lt;br /&gt;
&lt;br /&gt;
checkBOM post.bom.reduced / &lt;br /&gt;
&lt;br /&gt;
You should not see any checksum error. If you see some, report the problem, it means that some patches have not been applied.&lt;br /&gt;
&lt;br /&gt;
3) If some patches are missing, upload them on the iPhone in /tmp/upd and run&lt;br /&gt;
&lt;br /&gt;
bspatch /file/to/patch /tmp/upd/patch_content /file/to/patch&lt;br /&gt;
&lt;br /&gt;
4) Revalidate with step 2)&lt;br /&gt;
&lt;br /&gt;
  If you still see checksum errors, go buy a Nokia :)&lt;br /&gt;
&lt;br /&gt;
== Sample pre BOM list between 1.0 and 1.0.2 ==&lt;br /&gt;
&lt;br /&gt;
See http://www.pastebin.ca/668944&lt;br /&gt;
&lt;br /&gt;
The checksum is the last big number before the date. It's a typical CRC 32 checksum than can be checked with GNU cksum&lt;/div&gt;</summary>
		<author><name>ChronicDev</name></author>
		
	</entry>
</feed>