<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.theiphonewiki.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=IZsh</id>
	<title>The iPhone Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.theiphonewiki.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=IZsh"/>
	<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/wiki/Special:Contributions/IZsh"/>
	<updated>2026-05-16T12:38:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=0x24000_Segment_Overflow&amp;diff=4364</id>
		<title>0x24000 Segment Overflow</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=0x24000_Segment_Overflow&amp;diff=4364"/>
		<updated>2009-07-19T15:45:18Z</updated>

		<summary type="html">&lt;p&gt;IZsh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also known by its codename, &amp;quot;24kpwn&amp;quot;, this was the first exploit in the [[S5L8720]] that allowed us to bypass the bootrom signature checks on [[LLB]] and create what is known as an [[untethered jailbreak]].&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
It is unclear how, but the company known as &amp;quot;NitroKey&amp;quot; is selling this. We were planning on holding back for the new iPhone (which subsequently could mean an iPod touch 3G as well), but now that they are profiteering off of this we would like to explain exactly how this works as soon as possible so people do not have to waste their good money on it.&lt;br /&gt;
&lt;br /&gt;
==Credit==&lt;br /&gt;
A &amp;quot;hybrid&amp;quot; dev team, in alphabetical order: '''chronic''', '''CPICH''', '''ius''', '''MuscleNerd''', '''planetbeing''', '''pod2g''', '''posixninja''', et al. (anyone wishing to be unnamed)&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
&lt;br /&gt;
Upon boot-up, the [[S5L8720]] and [[S5L8920]] SoC have a MIU configuration which maps the [[VROM (S5L8720)|Secure ROM]] to 0x0, providing the newly turned on device with an ARM exception vector and the first code to execute. This MIU configuration also maps a small amount of SRAM to 0x22000000 for the [[S5L8720]], and 0x84000000 for the [[S5L8920]]. Statically allocated variables, heap, and stack must use the SRAM, as &amp;quot;[[VROM (S5L8720)|Secure ROM]]&amp;quot; is unwritable. A region of memory starting from (SRAM Start)+24000 is used for this purpose. The region of memory from the start of SRAM to (SRAM Start)+0x24000 is used as a buffer for loading the [[LLB|next stage bootloader]] code. The [[LLB]] code is stored in [[NOR]], along with code for all other bootloader stages, as well as art resources (boot logos) and the [[DeviceTree|OpenFirmware device tree]] to provide to the XNU [[kernel]]. The first portion (first 0x160 bytes) of memory at (SRAM Start)+0x24000 is used for initialized statically allocated variables. Shortly after boot, values for that region are initialized from [[VROM (S5L8720)|Secure ROM]].&lt;br /&gt;
&lt;br /&gt;
==Vulnerability==&lt;br /&gt;
&lt;br /&gt;
The code that reads the [[LLB]] img3 from [[NOR]] into memory does not check the size of the [[LLB]] image being loaded, instead taking the size directly from the non-signature checked portion of its img3 header on the [[NOR]] (see ROM offset 0x2178). Any image greater than 0x24000 bytes in length will begin overwriting the portion of memory used to store Secure ROM statically allocated variables. Immediately vulnerable data includes USB data structures for [[DFU]] mode, a pointer to the bdev list structure, task list structures for the Secure ROM's scheduler, as well as the addresses of the hardware SHA1 registers. All of the above are potential avenues for exploitation.  The method described below uses the SHA1 register addresses.&lt;br /&gt;
&lt;br /&gt;
This vulnerability was discovered independently by '''pod2g''' and '''MuscleNerd'''.&lt;br /&gt;
&lt;br /&gt;
== Exploit==&lt;br /&gt;
&lt;br /&gt;
The goal of the exploit is to gain arbitrary code execution capability.&lt;br /&gt;
&lt;br /&gt;
The exploit, as proposed by '''planetbeing''', uses the overflow to overwrite one of the addresses of the SHA1 registers. The particular register is the only one that directly copies data to be hashed into the hardware (or into an arbitrary memory location, once the destination address has been overwritten). Code execution is achieved by writing data into the stack, specifically by overwriting the LR of the function performing the write to the &amp;quot;SHA1 register&amp;quot; so that instead of returning to the main SHA1 routine, it returns to a chosen location in memory that contains the payload code. The location chosen is within the range of memory that is filled with the [[LLB]] img3, so that the payload code can be placed within the [[LLB]] img3.&lt;br /&gt;
&lt;br /&gt;
The challenge is determining what to put in as the SHA1 register location so that the right portion of stack can be overwritten with the payload LR. This can be challenging without having access to any sort of exception dump (crash register dumps in the bootrom had been disabled by Apple). '''planetbeing''' performed a static analysis of a very detailed IDB produced by '''chronic''' and '''CPICH''' and determined the theoretical call stack for both of the invocations of the SHA1 hardware within the bootrom code [http://pastie.org/414981].&lt;br /&gt;
&lt;br /&gt;
In-situ verification of the LR location was performed by '''posixninja'''. '''CPICH''' discovered a way to alter the img3 DER so that the second invocation of the SHA1 hardware was not performed without affecting the first, allowing better confirmation that this step was performed properly.&lt;br /&gt;
&lt;br /&gt;
The final SHA1 register address was chosen so that the first dword of the DATA tag of the [[LLB]] img3 would replace sub_5E54's LR. This is because this is the first dword of the img3 that can be altered without substantially changing the img3's structure (and possibly disrupting earlier parsing code). The LR replacement must be done the first time the exploit is triggered (by the invocation of sub_5E54), or else the bootrom would crash. Since sub_5E54 takes 0x40 bytes of data at a time, the replacement LR thus must be within the first 0x40 bytes of data to be hashed. Data to be hashed starts at 0xC bytes from the start of the img3, and the first dword of the DATA tag is 0x20 bytes from the start of the img3. Thus, the SHA1 register address chosen should be 0x20 - 0xC = 0x14 bytes before sub_5E54's LR. So, it must be 0x2202FE24. Note that the exploit will also trash up to 0x2202FE24 + 0x40 = 0x2202FE64. So a sizeable portion of doComputeSHA1's stack will be trashed as well.&lt;br /&gt;
&lt;br /&gt;
The final exploit img3 was verified by '''posixninja''' under '''planetbeing''''s instructions to allow arbitrary code execution. It was a regular Img3 with padding up to 0x24000 bytes. The next 0x100 bytes were taken from the original initialization values for 0x22024000. However, 0x240FC, the offset of the SHA1 register address, was altered to 0x2202FE24. The first dword of the DATA tag (offset 0x20) was altered to 0x22023000. Payload code was placed at offset 0x23000.&lt;br /&gt;
&lt;br /&gt;
==Payload==&lt;br /&gt;
&lt;br /&gt;
The goal of the payload is to allow an unsigned [[LLB]] to be loaded.&lt;br /&gt;
&lt;br /&gt;
There are several ways that can be used, including directly calling the JumpToMemory function which is designed to prepare the SoC and invoke the [[LLB]] code. However, it's designed to be used on decrypted, unpacked code, and the [[LLB]] code currently resides in an encrypted from within the img3's DATA tag. The simplest solution is thus to use the bootrom's own machinery to decrypt and execute the code.&lt;br /&gt;
&lt;br /&gt;
The final payload evolved out of a discussion between '''pod2g''' and '''planetbeing''', based on an IDB documented by '''pod2g''', '''chronic''', '''CPICH''', et al. The lowest impact solution is to apply the pwnage patch to the rsaCheck subroutine of the bootrom, and returning from the payload from computing the SHA1 without crashing the bootrom. However, in this case, since bootrom text is unwritable, this was not a viable solution.&lt;br /&gt;
&lt;br /&gt;
The next lowest impact solution is to return from the entire parseFirmwareFooter function with a successful value, instead of the failure value it would normally return if signature checks fail. This would skip any remaining code  in that subroutine. This solution did not work in-situ. Failures checking the epoch tags prevented the firmware from being executed. The cause of this was not investigated.&lt;br /&gt;
&lt;br /&gt;
The final payload was to return past the verification of epoch and other tags in the [[LLB]] img3 to a spot right before the DATA tag was loaded from memory and decrypted. R5 was set to 0 to ensure decryption would not be skipped. The original value for the first DATA dword (before we had to overwrite it with the exploit LR) is written back to 0x22000020 by the payload, and the original SHA1 register value was written back to 0x2202FE24 to ensure the payload only activates once.&lt;br /&gt;
&lt;br /&gt;
==Deployment==&lt;br /&gt;
&lt;br /&gt;
Although the exploitive [[LLB]] can be manually written to [[NOR]] by bootstrapping from a tethered jailbreak, the easiest way is to use the Apple restore process itself. Apple's Restore process will write arbitrary img3s onto the [[NOR]], even if they fail signature checks. However, the &amp;quot;total size&amp;quot; value of the img3 is fixed up by the kernel before it is written to [[NOR]]. This would negate the exploit. However, '''MuscleNerd''' discovered that this could be bypassed by including the padding in another tag, such as CERT. Then, the written exploit [[LLB]] would have the &amp;quot;correct&amp;quot;, exploitive total size.&lt;br /&gt;
&lt;br /&gt;
==Timing Impact==&lt;br /&gt;
This exploit would have allowed the [[pwnage]] of the next generation iPhone without the discovery of an additional code execution vulnerability (required to write the exploit [[LLB]]), provided that the bug still existed in the next generation's bootrom. Even if it is too late to patch the bootrom now, it is not too late for Apple to repair the restore process in the stock IPSW so that we have no way to get the exploitive [[LLB]] onto the device. Before, Apple would have no reason to fix this, since writing arbitrary data to [[NOR]] does not negate their chain of trust. However, now that a way has been found, they now can prioritize a fix for this oversight.&lt;br /&gt;
&lt;br /&gt;
Thanks to irresponsible handling of the exploit by a third-party company known as [[NitroKey]], this eventuality is a near-certainty and pretty much erased the possibility of a day-of-release jailbreak for the next-generation iPhone or iPod touch. May they burn in hell for all eternity.&lt;br /&gt;
&lt;br /&gt;
==3GS Implementation==&lt;br /&gt;
&lt;br /&gt;
The exploit remains the same in spirit.&lt;br /&gt;
&lt;br /&gt;
The call tree and stacks analysis is very similar although a few bytes here and there changed it slightly. It was again done manually but afterward, and out of fun, an IDA Python Script was written to automate the process. The new static analysis can be seen here [http://pastie.org/551212], and the IDA Python Script for it there [http://github.com/iZsh/IDA-Python-Scripts/].&lt;br /&gt;
&lt;br /&gt;
The main differences are:&lt;br /&gt;
&lt;br /&gt;
* the SRAM is at 0x84000000 instead of 0x22000000&lt;br /&gt;
* the Original value of the first DATA dword is written back to 0x84000040 (which was overwritten by the LR address)&lt;br /&gt;
* the SHA1 register original value is written back to 0x840241CC&lt;br /&gt;
* '''The decrypt flag is not held in R5 anymore''', but in a local variable of the function &amp;quot;my_process_module&amp;quot; (sub_2564). An extra static analysis tells us this variable is held at 0x84033F30, thus that's where you have to store your 0x0 value before returning to this function.&lt;br /&gt;
&lt;br /&gt;
[[Category:Exploits]]&lt;/div&gt;</summary>
		<author><name>IZsh</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:ARM7_Go&amp;diff=4125</id>
		<title>Talk:ARM7 Go</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:ARM7_Go&amp;diff=4125"/>
		<updated>2009-07-07T19:35:57Z</updated>

		<summary type="html">&lt;p&gt;IZsh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Vulnerability vs. Exploit and Credits ==&lt;br /&gt;
@Chronic: I'm fine with you adding that you found it independently, but you have to be careful with the wording in general.&lt;br /&gt;
It seems there are a great deal of misusages of the word &amp;quot;exploit&amp;quot; vs. vulnerability in this community. So if you don't mind, I'd like to clarify:&lt;br /&gt;
&lt;br /&gt;
'''A vulnerability is the actual bug/security hole, whereas an exploit is the actual implementation which allows one to exploit the vulnerability.'''&lt;br /&gt;
&lt;br /&gt;
For instance in the following sentence from the wiki:&lt;br /&gt;
&amp;quot;The actual exploit is that, in the iPod Touch 2G 2.1.1 firmware, they left behind two commands: arm7_stop and arm7_go&amp;quot;, the word &amp;quot;exploit&amp;quot; is not used properly. You are here talking about the vulnerability, not the exploit.&lt;br /&gt;
&lt;br /&gt;
In my opinion, credits for vulnerability and exploit should be separated in general (I'm not talking about this one in particular, but I'm talking about vuln/exploit in general). One can find a vulnerability without exploiting it (because he doesn't want to, doesn't have the time, or it's too complicated and he doesn't manage actually to exploit it), and likewise someone can implement an actual exploit without discovering the initial vulnerability. IMHO, '''most of the time''', the exploit is where the skills really are, because it's one thing to understand why something is a security vulnerability, it's often another to make it actually real with a POC code (because of sanity checks, checking, filters and so on). Although sometimes, I do agree that finding the vulnerability itself requires mad skillz (as an example, prop' to Bleichenbacher for finding his RSA attack), it is my belief that most of the time, the exploit is where the difficulty lies.&lt;br /&gt;
&lt;br /&gt;
Anyway, I think this page contains misusage of the word exploit, and other pages too, and I just wanted to point it.&lt;br /&gt;
&lt;br /&gt;
Theres one thing to be said for finding a vuln and seeing it crash, sure, thats usually not where the skill is and I'm not sure how much credit it deserves. But after an exploit is out using the vuln, it's a lot easier to get yourself to write another exploit since you have confirmation that the vuln is exploitable. The iBoot envvar one happened to be reasonably easy to find yet reasonably hard to exploit. If you really had your exploit working pre ra1n then props. But if you wrote an exploit post ra1n it's a lot easier knowing that this vuln can work. --[[User:Geohot|geohot]] 18:44, 7 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
iZsh, when I wrote this article I was a little less experienced, and have adjusted it a bit. That being said, if you check the chronic dev google code svn, you will see that I did implement it in a payload called &amp;quot;0wnboot&amp;quot;. But yes, I did confuse the &amp;quot;exploit&amp;quot; and &amp;quot;vulnerability&amp;quot; definitions. [[User:ChronicDev|ChronicDev]] 19:16, 7 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
@geo: I can ensure you we definitely found it independently and implemented way before you released purplera!n. And I agree that re-implementing a different exploit once you know a vuln to be workable is not credit-able. Only fully independent discovery/implementation is.&lt;/div&gt;</summary>
		<author><name>IZsh</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:ARM7_Go&amp;diff=4121</id>
		<title>Talk:ARM7 Go</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:ARM7_Go&amp;diff=4121"/>
		<updated>2009-07-07T17:15:49Z</updated>

		<summary type="html">&lt;p&gt;IZsh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==My Payload==&lt;br /&gt;
(Since RedSn0w will be out any day, this is just for the hell of it :)&lt;br /&gt;
&lt;br /&gt;
If anyone has any ideas and would like to mess around with this hack, here is some code that (should) patch a 2.1.1 iBSS that you loaded, in memory. Again, just for fun, as the [[dev team]] probably has redsn0w, it's payload, and program almost completed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ ipod touch 2G ibss 2.1.1 patcher&lt;br /&gt;
@ by chronic with some gas help from ius&lt;br /&gt;
@&lt;br /&gt;
@ assemble this with gas&lt;br /&gt;
&lt;br /&gt;
.section .text&lt;br /&gt;
   .global _start&lt;br /&gt;
   _start:&lt;br /&gt;
      stmdb sp!, {r0-r6}&lt;br /&gt;
      ldr r0, =rangePatch&lt;br /&gt;
      ldr r1, =permsPatch&lt;br /&gt;
      ldr r2, =sigchPatch&lt;br /&gt;
      ldr r3, =sigchecLoc&lt;br /&gt;
      ldr r4, =permschLoc&lt;br /&gt;
      ldr r6, =rangechLoc&lt;br /&gt;
      strh r1, [r4]&lt;br /&gt;
      strh r0, [r6]&lt;br /&gt;
      strh r2, [r3]&lt;br /&gt;
      ldmia sp!, {r0-r6}&lt;br /&gt;
      mov pc, lr&lt;br /&gt;
&lt;br /&gt;
.section .data&lt;br /&gt;
   sigchecLoc: .word 0x2200F2FE&lt;br /&gt;
   permschLoc: .word 0x2200C330&lt;br /&gt;
   rangechLoc: .word 0x2200C3A6&lt;br /&gt;
   rangePatch: .hword 0x0120&lt;br /&gt;
   permsPatch: .hword 0x0124&lt;br /&gt;
   sigchPatch: .hword 0x0020&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[User:ChronicDev|ChronicDev]] 19:45, 16 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Chronic, I may have found the way to use arm7_go==&lt;br /&gt;
Try to add the size of your payload just before it as an 32bit integer.&lt;br /&gt;
&lt;br /&gt;
1. without size :&lt;br /&gt;
  I assembled your payload with gas then tried to upload it at 0x09000000 and start arm7_go.&lt;br /&gt;
  It did nothing.&lt;br /&gt;
2. with size before : 0x00000048 then your payload uploaded at 0x09000000.&lt;br /&gt;
  arm7_go =&amp;gt; it crashed my ipod 2G.&lt;br /&gt;
&lt;br /&gt;
I hope it can help. I am continuing my reasearches.&lt;br /&gt;
&lt;br /&gt;
~[[User:pod2g|pod2g]]&lt;br /&gt;
&lt;br /&gt;
==How do you pass the bootrom RSA checks?==&lt;br /&gt;
I've noticed that the exploit is at the iBoot level. So how do you (or the Dev-Team) pass the bootrom RSA checks?&lt;br /&gt;
&lt;br /&gt;
~[[User:Oranav|Oranav]]&lt;br /&gt;
&lt;br /&gt;
==RE: How do you pass the bootrom RSA checks?==&lt;br /&gt;
I do not know how it is done, but taking the screenshot on the latest devteam blog post, they have found a way to do so.&lt;br /&gt;
&lt;br /&gt;
== RE: RE: How do you pass the bootrom RSA checks? ==&lt;br /&gt;
&lt;br /&gt;
Okay, as to MuscleNerd's redsn0w demo, it's pretty yellowsn0w like - you have to let the bootrom sigchecks pass, and then use the exploit every time the device boots. Pretty annoying, but that's the only option without a way to pass bootrom sigchecks.&lt;br /&gt;
&lt;br /&gt;
~[[User:Oranav|Oranav]]&lt;br /&gt;
&lt;br /&gt;
== Wel... ==&lt;br /&gt;
&lt;br /&gt;
They noted they are looking for a way around that.&lt;br /&gt;
&lt;br /&gt;
== We may have something! ==&lt;br /&gt;
&lt;br /&gt;
I tried what iPod2G said.&lt;br /&gt;
&lt;br /&gt;
Now, after running my payload...well...things are acting really WEIRD. the first time I tried,it crashed, and now...&lt;br /&gt;
&lt;br /&gt;
http://pastie.org/private/gpsvfcve6yqnm3uk4qzouq&lt;br /&gt;
&lt;br /&gt;
mdb is messed up. Oh, and my screen turned blue for some reason.&lt;br /&gt;
&lt;br /&gt;
Just tried again, and it turned green :O&lt;br /&gt;
&lt;br /&gt;
== Vulnerability vs. Exploit and Credits ==&lt;br /&gt;
@Chronic: I'm fine with you adding that you found it independently, but you have to be careful with the wording in general.&lt;br /&gt;
It seems there are a great deal of misusages of the word &amp;quot;exploit&amp;quot; vs. vulnerability in this community. So if you don't mind, I'd like to clarify:&lt;br /&gt;
&lt;br /&gt;
'''A vulnerability is the actual bug/security hole, whereas an exploit is the actual implementation which allows one to exploit the vulnerability.'''&lt;br /&gt;
&lt;br /&gt;
For instance in the following sentence from the wiki:&lt;br /&gt;
&amp;quot;The actual exploit is that, in the iPod Touch 2G 2.1.1 firmware, they left behind two commands: arm7_stop and arm7_go&amp;quot;, the word &amp;quot;exploit&amp;quot; is not used properly. You are here talking about the vulnerability, not the exploit.&lt;br /&gt;
&lt;br /&gt;
In my opinion, credits for vulnerability and exploit should be separated in general (I'm not talking about this one in particular, but I'm talking about vuln/exploit in general). One can find a vulnerability without exploiting it (because he doesn't want to, doesn't have the time, or it's too complicated and he doesn't manage actually to exploit it), and likewise someone can implement an actual exploit without discovering the initial vulnerability. IMHO, '''most of the time''', the exploit is where the skills really are, because it's one thing to understand why something is a security vulnerability, it's often another to make it actually real with a POC code (because of sanity checks, checking, filters and so on). Although sometimes, I do agree that finding the vulnerability itself requires mad skillz (as an example, prop' to Bleichenbacher for finding his RSA attack), it is my belief that most of the time, the exploit is where the difficulty lies.&lt;br /&gt;
&lt;br /&gt;
Anyway, I think this page contains misusage of the word exploit, and other pages too, and I just wanted to point it.&lt;/div&gt;</summary>
		<author><name>IZsh</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:ARM7_Go&amp;diff=4120</id>
		<title>Talk:ARM7 Go</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:ARM7_Go&amp;diff=4120"/>
		<updated>2009-07-07T17:15:02Z</updated>

		<summary type="html">&lt;p&gt;IZsh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==My Payload==&lt;br /&gt;
(Since RedSn0w will be out any day, this is just for the hell of it :)&lt;br /&gt;
&lt;br /&gt;
If anyone has any ideas and would like to mess around with this hack, here is some code that (should) patch a 2.1.1 iBSS that you loaded, in memory. Again, just for fun, as the [[dev team]] probably has redsn0w, it's payload, and program almost completed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ ipod touch 2G ibss 2.1.1 patcher&lt;br /&gt;
@ by chronic with some gas help from ius&lt;br /&gt;
@&lt;br /&gt;
@ assemble this with gas&lt;br /&gt;
&lt;br /&gt;
.section .text&lt;br /&gt;
   .global _start&lt;br /&gt;
   _start:&lt;br /&gt;
      stmdb sp!, {r0-r6}&lt;br /&gt;
      ldr r0, =rangePatch&lt;br /&gt;
      ldr r1, =permsPatch&lt;br /&gt;
      ldr r2, =sigchPatch&lt;br /&gt;
      ldr r3, =sigchecLoc&lt;br /&gt;
      ldr r4, =permschLoc&lt;br /&gt;
      ldr r6, =rangechLoc&lt;br /&gt;
      strh r1, [r4]&lt;br /&gt;
      strh r0, [r6]&lt;br /&gt;
      strh r2, [r3]&lt;br /&gt;
      ldmia sp!, {r0-r6}&lt;br /&gt;
      mov pc, lr&lt;br /&gt;
&lt;br /&gt;
.section .data&lt;br /&gt;
   sigchecLoc: .word 0x2200F2FE&lt;br /&gt;
   permschLoc: .word 0x2200C330&lt;br /&gt;
   rangechLoc: .word 0x2200C3A6&lt;br /&gt;
   rangePatch: .hword 0x0120&lt;br /&gt;
   permsPatch: .hword 0x0124&lt;br /&gt;
   sigchPatch: .hword 0x0020&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[User:ChronicDev|ChronicDev]] 19:45, 16 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Chronic, I may have found the way to use arm7_go==&lt;br /&gt;
Try to add the size of your payload just before it as an 32bit integer.&lt;br /&gt;
&lt;br /&gt;
1. without size :&lt;br /&gt;
  I assembled your payload with gas then tried to upload it at 0x09000000 and start arm7_go.&lt;br /&gt;
  It did nothing.&lt;br /&gt;
2. with size before : 0x00000048 then your payload uploaded at 0x09000000.&lt;br /&gt;
  arm7_go =&amp;gt; it crashed my ipod 2G.&lt;br /&gt;
&lt;br /&gt;
I hope it can help. I am continuing my reasearches.&lt;br /&gt;
&lt;br /&gt;
~[[User:pod2g|pod2g]]&lt;br /&gt;
&lt;br /&gt;
==How do you pass the bootrom RSA checks?==&lt;br /&gt;
I've noticed that the exploit is at the iBoot level. So how do you (or the Dev-Team) pass the bootrom RSA checks?&lt;br /&gt;
&lt;br /&gt;
~[[User:Oranav|Oranav]]&lt;br /&gt;
&lt;br /&gt;
==RE: How do you pass the bootrom RSA checks?==&lt;br /&gt;
I do not know how it is done, but taking the screenshot on the latest devteam blog post, they have found a way to do so.&lt;br /&gt;
&lt;br /&gt;
== RE: RE: How do you pass the bootrom RSA checks? ==&lt;br /&gt;
&lt;br /&gt;
Okay, as to MuscleNerd's redsn0w demo, it's pretty yellowsn0w like - you have to let the bootrom sigchecks pass, and then use the exploit every time the device boots. Pretty annoying, but that's the only option without a way to pass bootrom sigchecks.&lt;br /&gt;
&lt;br /&gt;
~[[User:Oranav|Oranav]]&lt;br /&gt;
&lt;br /&gt;
== Wel... ==&lt;br /&gt;
&lt;br /&gt;
They noted they are looking for a way around that.&lt;br /&gt;
&lt;br /&gt;
== We may have something! ==&lt;br /&gt;
&lt;br /&gt;
I tried what iPod2G said.&lt;br /&gt;
&lt;br /&gt;
Now, after running my payload...well...things are acting really WEIRD. the first time I tried,it crashed, and now...&lt;br /&gt;
&lt;br /&gt;
http://pastie.org/private/gpsvfcve6yqnm3uk4qzouq&lt;br /&gt;
&lt;br /&gt;
mdb is messed up. Oh, and my screen turned blue for some reason.&lt;br /&gt;
&lt;br /&gt;
Just tried again, and it turned green :O&lt;br /&gt;
&lt;br /&gt;
@Chronic: I'm fine with you adding that you found it independently, but you have to be careful with the wording in general.&lt;br /&gt;
It seems there are a great deal of misusages of the word &amp;quot;exploit&amp;quot; vs. vulnerability in this community. So if you don't mind, I'd like to clarify:&lt;br /&gt;
&lt;br /&gt;
'''A vulnerability is the actual bug/security hole, whereas an exploit is the actual implementation which allows one to exploit the vulnerability.'''&lt;br /&gt;
&lt;br /&gt;
For instance in the following sentence from the wiki:&lt;br /&gt;
&amp;quot;The actual exploit is that, in the iPod Touch 2G 2.1.1 firmware, they left behind two commands: arm7_stop and arm7_go&amp;quot;, the word &amp;quot;exploit&amp;quot; is not used properly. You are here talking about the vulnerability, not the exploit.&lt;br /&gt;
&lt;br /&gt;
In my opinion, credits for vulnerability and exploit should be separated in general (I'm not talking about this one in particular, but I'm talking about vuln/exploit in general). One can find a vulnerability without exploiting it (because he doesn't want to, doesn't have the time, or it's too complicated and he doesn't manage actually to exploit it), and likewise someone can implement an actual exploit without discovering the initial vulnerability. IMHO, '''most of the time''', the exploit is where the skills really are, because it's one thing to understand why something is a security vulnerability, it's often another to make it actually real with a POC code (because of sanity checks, checking, filters and so on). Although sometimes, I do agree that finding the vulnerability itself requires mad skillz (as an example, prop' to Bleichenbacher for finding his RSA attack), it is my belief that most of the time, the exploit is where the difficulty lies.&lt;br /&gt;
&lt;br /&gt;
Anyway, I think this page contains misusage of the word exploit, and other pages too, and I just wanted to point it.&lt;/div&gt;</summary>
		<author><name>IZsh</name></author>
		
	</entry>
</feed>