<?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=QWAZ</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=QWAZ"/>
	<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/wiki/Special:Contributions/QWAZ"/>
	<updated>2026-04-14T07:30:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=MobileDevice_Library&amp;diff=9403</id>
		<title>MobileDevice Library</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=MobileDevice_Library&amp;diff=9403"/>
		<updated>2010-09-23T02:25:42Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: /* OSX.6 - iTunes 9.0.2(25) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MobileDevice Library is used by [[iTunes]] to transfer data between iPhone and computer over the USB connection.&lt;br /&gt;
&lt;br /&gt;
===PC Windows : iTunesMobileDevice.dll===&lt;br /&gt;
The DLL is written using Microsoft Visual C++ 8.0 DLL Method [2].&lt;br /&gt;
&lt;br /&gt;
* Location : Location is stored in '''iTunesMobileDeviceDLL''' registry value under '''HKLM\SOFTWARE\Apple Inc.\Apple Mobile Device Support\Shared''' key. Usually - C:\Program Files\Common Files\Apple\Mobile Device Support\bin\iTunesMobileDevice.dll.&lt;br /&gt;
&lt;br /&gt;
* Supporting CoreFoundation.dll (used for CFStringRef, CFPropertyListRef management) is located in the same dir (when using iTunes prior 9.0). &lt;br /&gt;
&lt;br /&gt;
* For iTunes 9.0 location of CoreFoundation.dll is stored in '''InstallDir''' registry value under '''HKLM\SOFTWARE\Apple Inc.\Apple Application Support''' key, usually C:\Program Files\Common Files\Apple\Apple Application Support\. CoreFoundation.dll from Mobile Device Support\bin should not be used.&lt;br /&gt;
&lt;br /&gt;
===Mac OSX : MobileDevice.framework===&lt;br /&gt;
&lt;br /&gt;
* Location : /System/Library/PrivateFrameworks/MobileDevice.framework&lt;br /&gt;
* Export command : &amp;quot;nm /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===MobileDevice Header (mobiledevice.h)===&lt;br /&gt;
&lt;br /&gt;
Reverse engineered C header for MobileDevice Library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* ----------------------------------------------------------------------------&lt;br /&gt;
 *   MobileDevice.h - interface to MobileDevice.framework &lt;br /&gt;
 * ------------------------------------------------------------------------- */&lt;br /&gt;
#pragma once&lt;br /&gt;
&lt;br /&gt;
#ifndef MOBILEDEVICE_H&lt;br /&gt;
#define MOBILEDEVICE_H&lt;br /&gt;
&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
extern &amp;quot;C&amp;quot; {&lt;br /&gt;
#endif&lt;br /&gt;
	&lt;br /&gt;
#ifndef __GCC__&lt;br /&gt;
#pragma pack&lt;br /&gt;
#define __PACK&lt;br /&gt;
#else&lt;br /&gt;
#define __PACK __attribute__((__packed__))&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
#if defined(WIN32)&lt;br /&gt;
#define __DLLIMPORT [DllImport(&amp;quot;iTunesMobileDevice.dll&amp;quot;)]&lt;br /&gt;
	using namespace System::Runtime::InteropServices;&lt;br /&gt;
#include &amp;lt;CoreFoundation.h&amp;gt;&lt;br /&gt;
	typedef unsigned int mach_error_t;&lt;br /&gt;
#elif defined(__APPLE__)&lt;br /&gt;
#define __DLLIMPORT&lt;br /&gt;
#include &amp;lt;CoreFoundation/CoreFoundation.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mach/error.h&amp;gt;&lt;br /&gt;
#endif	&lt;br /&gt;
	&lt;br /&gt;
	/* Error codes */&lt;br /&gt;
#define MDERR_APPLE_MOBILE  (err_system(0x3a))&lt;br /&gt;
#define MDERR_IPHONE        (err_sub(0))&lt;br /&gt;
	&lt;br /&gt;
	/* Apple Mobile (AM*) errors */&lt;br /&gt;
#define MDERR_OK                ERR_SUCCESS&lt;br /&gt;
#define MDERR_SYSCALL           (ERR_MOBILE_DEVICE | 0x01)&lt;br /&gt;
#define MDERR_OUT_OF_MEMORY     (ERR_MOBILE_DEVICE | 0x03)&lt;br /&gt;
#define MDERR_QUERY_FAILED      (ERR_MOBILE_DEVICE | 0x04) &lt;br /&gt;
#define MDERR_INVALID_ARGUMENT  (ERR_MOBILE_DEVICE | 0x0b)&lt;br /&gt;
#define MDERR_DICT_NOT_LOADED   (ERR_MOBILE_DEVICE | 0x25)&lt;br /&gt;
	&lt;br /&gt;
	/* Apple File Connection (AFC*) errors */&lt;br /&gt;
#define MDERR_AFC_OUT_OF_MEMORY 0x03&lt;br /&gt;
	&lt;br /&gt;
	/* USBMux errors */&lt;br /&gt;
#define MDERR_USBMUX_ARG_NULL   0x16&lt;br /&gt;
#define MDERR_USBMUX_FAILED     0xffffffff&lt;br /&gt;
	&lt;br /&gt;
	/* Messages passed to device notification callbacks: passed as part of&lt;br /&gt;
	 * am_device_notification_callback_info. */&lt;br /&gt;
#define ADNCI_MSG_CONNECTED     1&lt;br /&gt;
#define ADNCI_MSG_DISCONNECTED  2&lt;br /&gt;
#define ADNCI_MSG_UNSUBSCRIBED  3&lt;br /&gt;
	&lt;br /&gt;
#define AMD_IPHONE_PRODUCT_ID   0x1290&lt;br /&gt;
	//#define AMD_IPHONE_SERIAL       &amp;quot;&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	/* Services, found in /System/Library/Lockdown/Services.plist */&lt;br /&gt;
#define AMSVC_AFC                   CFSTR(&amp;quot;com.apple.afc&amp;quot;)&lt;br /&gt;
#define AMSVC_BACKUP                CFSTR(&amp;quot;com.apple.mobilebackup&amp;quot;)&lt;br /&gt;
#define AMSVC_CRASH_REPORT_COPY     CFSTR(&amp;quot;com.apple.crashreportcopy&amp;quot;)&lt;br /&gt;
#define AMSVC_DEBUG_IMAGE_MOUNT     CFSTR(&amp;quot;com.apple.mobile.debug_image_mount&amp;quot;)&lt;br /&gt;
#define AMSVC_NOTIFICATION_PROXY    CFSTR(&amp;quot;com.apple.mobile.notification_proxy&amp;quot;)&lt;br /&gt;
#define AMSVC_PURPLE_TEST           CFSTR(&amp;quot;com.apple.purpletestr&amp;quot;)&lt;br /&gt;
#define AMSVC_SOFTWARE_UPDATE       CFSTR(&amp;quot;com.apple.mobile.software_update&amp;quot;)&lt;br /&gt;
#define AMSVC_SYNC                  CFSTR(&amp;quot;com.apple.mobilesync&amp;quot;)&lt;br /&gt;
#define AMSVC_SCREENSHOT            CFSTR(&amp;quot;com.apple.screenshotr&amp;quot;)&lt;br /&gt;
#define AMSVC_SYSLOG_RELAY          CFSTR(&amp;quot;com.apple.syslog_relay&amp;quot;)&lt;br /&gt;
#define AMSVC_SYSTEM_PROFILER       CFSTR(&amp;quot;com.apple.mobile.system_profiler&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	typedef unsigned int afc_error_t;&lt;br /&gt;
	typedef unsigned int usbmux_error_t;&lt;br /&gt;
	&lt;br /&gt;
	struct am_recovery_device;&lt;br /&gt;
	&lt;br /&gt;
	struct am_device_notification_callback_info {&lt;br /&gt;
		struct am_device *dev;  /* 0    device */ &lt;br /&gt;
		unsigned int msg;       /* 4    one of ADNCI_MSG_* */&lt;br /&gt;
                struct am_device_notification* subscription; &lt;br /&gt;
	} __PACK;&lt;br /&gt;
	&lt;br /&gt;
	/* The type of the device restore notification callback functions.&lt;br /&gt;
	 * TODO: change to correct type. */&lt;br /&gt;
	typedef void (*am_restore_device_notification_callback)(struct am_recovery_device *);&lt;br /&gt;
	&lt;br /&gt;
	/* This is a CoreFoundation object of class AMRecoveryModeDevice. */&lt;br /&gt;
	struct am_recovery_device {&lt;br /&gt;
		unsigned char unknown0[8];                          /* 0 */&lt;br /&gt;
		am_restore_device_notification_callback callback;   /* 8 */&lt;br /&gt;
		void *user_info;                                    /* 12 */&lt;br /&gt;
		unsigned char unknown1[12];                         /* 16 */&lt;br /&gt;
		unsigned int readwrite_pipe;                        /* 28 */&lt;br /&gt;
		unsigned char read_pipe;                            /* 32 */&lt;br /&gt;
		unsigned char write_ctrl_pipe;                      /* 33 */&lt;br /&gt;
		unsigned char read_unknown_pipe;                    /* 34 */&lt;br /&gt;
		unsigned char write_file_pipe;                      /* 35 */&lt;br /&gt;
		unsigned char write_input_pipe;                     /* 36 */&lt;br /&gt;
	} __PACK;&lt;br /&gt;
	&lt;br /&gt;
	/* A CoreFoundation object of class AMRestoreModeDevice. */&lt;br /&gt;
	struct am_restore_device {&lt;br /&gt;
		unsigned char unknown[32];&lt;br /&gt;
		int port;&lt;br /&gt;
	} __PACK;&lt;br /&gt;
	&lt;br /&gt;
	/* The type of the device notification callback function. */&lt;br /&gt;
	typedef void(*am_device_notification_callback)(struct am_device_notification_callback_info *, int cookie);&lt;br /&gt;
	&lt;br /&gt;
	/* The type of the _AMDDeviceAttached function.&lt;br /&gt;
	 * TODO: change to correct type. */&lt;br /&gt;
	typedef void *amd_device_attached_callback;&lt;br /&gt;
	&lt;br /&gt;
	/* The type of the device restore notification callback functions.&lt;br /&gt;
	 * TODO: change to correct type. */&lt;br /&gt;
	typedef void (*am_restore_device_notification_callback)(struct am_recovery_device *);&lt;br /&gt;
&lt;br /&gt;
	/* Structure that contains internal data used by AMDevice... functions. Never try &lt;br /&gt;
         * to access its members directly! Use AMDeviceCopyDeviceIdentifier, &lt;br /&gt;
         * AMDeviceGetConnectionID, AMDeviceRetain, AMDeviceRelease instead. */&lt;br /&gt;
	struct am_device {&lt;br /&gt;
		unsigned char unknown0[16]; /* 0 - zero */&lt;br /&gt;
		unsigned int device_id;     /* 16 */&lt;br /&gt;
		unsigned int product_id;    /* 20 - set to AMD_IPHONE_PRODUCT_ID */&lt;br /&gt;
		char *serial;               /* 24 - set to UDID, Unique Device Identifier */&lt;br /&gt;
		unsigned int unknown1;      /* 28 */&lt;br /&gt;
		unsigned int unknown2;      /* 32 - reference counter, increased by AMDeviceRetain, decreased by AMDeviceRelease*/&lt;br /&gt;
		unsigned int lockdown_conn; /* 36 */&lt;br /&gt;
		unsigned char unknown3[8];  /* 40 */&lt;br /&gt;
#if (__ITUNES_VER &amp;gt; 740)&lt;br /&gt;
		unsigned int unknown4;      /* 48 - used to store CriticalSection Handle*/&lt;br /&gt;
#endif&lt;br /&gt;
#if (__ITUNES_VER &amp;gt;= 800)&lt;br /&gt;
		unsigned char unknown5[24];  /* 52 */&lt;br /&gt;
#endif&lt;br /&gt;
	} __PACK;&lt;br /&gt;
	&lt;br /&gt;
	struct am_device_notification {&lt;br /&gt;
		unsigned int unknown0;                      /* 0 */&lt;br /&gt;
		unsigned int unknown1;                      /* 4 */&lt;br /&gt;
		unsigned int unknown2;                      /* 8 */&lt;br /&gt;
		am_device_notification_callback callback;   /* 12 */ &lt;br /&gt;
		unsigned int cookie;                      /* 16 */&lt;br /&gt;
	} __PACK;&lt;br /&gt;
	&lt;br /&gt;
	struct afc_connection {&lt;br /&gt;
		unsigned int handle;            /* 0 */&lt;br /&gt;
		unsigned int unknown0;          /* 4 */&lt;br /&gt;
		unsigned char unknown1;         /* 8 */&lt;br /&gt;
		unsigned char padding[3];       /* 9 */&lt;br /&gt;
		unsigned int unknown2;          /* 12 */&lt;br /&gt;
		unsigned int unknown3;          /* 16 */&lt;br /&gt;
		unsigned int unknown4;          /* 20 */&lt;br /&gt;
		unsigned int fs_block_size;     /* 24 */&lt;br /&gt;
		unsigned int sock_block_size;   /* 28: always 0x3c */&lt;br /&gt;
		unsigned int io_timeout;        /* 32: from AFCConnectionOpen, usu. 0 */&lt;br /&gt;
		void *afc_lock;                 /* 36 */&lt;br /&gt;
		unsigned int context;           /* 40 */&lt;br /&gt;
	} __PACK;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	struct afc_device_info {&lt;br /&gt;
		unsigned char unknown[12];  /* 0 */&lt;br /&gt;
	} __PACK;&lt;br /&gt;
&lt;br /&gt;
	struct afc_directory {&lt;br /&gt;
		unsigned char unknown[0];   /* size unknown */&lt;br /&gt;
	} __PACK;&lt;br /&gt;
&lt;br /&gt;
	struct afc_dictionary {&lt;br /&gt;
		unsigned char unknown[0];   /* size unknown */&lt;br /&gt;
	} __PACK;&lt;br /&gt;
	&lt;br /&gt;
	typedef unsigned long long afc_file_ref;&lt;br /&gt;
	&lt;br /&gt;
	struct usbmux_listener_1 {                  /* offset   value in iTunes */&lt;br /&gt;
		unsigned int unknown0;                  /* 0        1 */&lt;br /&gt;
		unsigned char *unknown1;                /* 4        ptr, maybe device? */&lt;br /&gt;
		amd_device_attached_callback callback;  /* 8        _AMDDeviceAttached */&lt;br /&gt;
		unsigned int unknown3;                  /* 12 */&lt;br /&gt;
		unsigned int unknown4;                  /* 16 */&lt;br /&gt;
		unsigned int unknown5;                  /* 20 */&lt;br /&gt;
	} __PACK;&lt;br /&gt;
	&lt;br /&gt;
	struct usbmux_listener_2 {&lt;br /&gt;
		unsigned char unknown0[4144];&lt;br /&gt;
	} __PACK;&lt;br /&gt;
	&lt;br /&gt;
	struct am_bootloader_control_packet {&lt;br /&gt;
		unsigned char opcode;       /* 0 */&lt;br /&gt;
		unsigned char length;       /* 1 */&lt;br /&gt;
		unsigned char magic[2];     /* 2: 0x34, 0x12 */&lt;br /&gt;
		unsigned char payload[0];   /* 4 */&lt;br /&gt;
	} __PACK;&lt;br /&gt;
	&lt;br /&gt;
	/* ----------------------------------------------------------------------------&lt;br /&gt;
	 *   Public routines&lt;br /&gt;
	 * ------------------------------------------------------------------------- */&lt;br /&gt;
	&lt;br /&gt;
	/*  Registers a notification with the current run loop. The callback gets&lt;br /&gt;
	 *  copied into the notification struct, as well as being registered with the&lt;br /&gt;
	 *  current run loop. Cookie gets copied into cookie in the same.&lt;br /&gt;
	 *  (Cookie is a user info parameter that gets passed as an arg to&lt;br /&gt;
	 *  the callback) unused0 and unused1 are both 0 when iTunes calls this.&lt;br /&gt;
	 *&lt;br /&gt;
	 *  Never try to acces directly or copy contents of dev and subscription fields &lt;br /&gt;
	 *  in am_device_notification_callback_info. Treat them as abstract handles. &lt;br /&gt;
	 *  When done with connection use AMDeviceRelease to free resources allocated for am_device.&lt;br /&gt;
	 *  &lt;br /&gt;
	 *  Returns:&lt;br /&gt;
	 *      MDERR_OK            if successful&lt;br /&gt;
	 *      MDERR_SYSCALL       if CFRunLoopAddSource() failed&lt;br /&gt;
	 *      MDERR_OUT_OF_MEMORY if we ran out of memory&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceNotificationSubscribe(am_device_notification_callback callback, &lt;br /&gt;
								unsigned int unused0, unsigned int unused1, &lt;br /&gt;
								unsigned int cookie, &lt;br /&gt;
								struct am_device_notification **subscription);&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
        /* Unregisters notifications. Buggy (iTunes 8.2): if you subscribe, unsubscribe and subscribe again, arriving &lt;br /&gt;
           notifications will contain cookie and subscription from 1st call to subscribe, not the 2nd one. iTunes &lt;br /&gt;
           calls this function only once on exit.&lt;br /&gt;
        */&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceNotificationUnsubscribe(am_device_notification* subscription);&lt;br /&gt;
&lt;br /&gt;
	/*  Returns device_id field of am_device structure&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT unsigned int AMDeviceGetConnectionID(struct am_device *device);&lt;br /&gt;
&lt;br /&gt;
	/*  Returns serial field of am_device structure&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT CFStringRef AMDeviceCopyDeviceIdentifier(struct am_device *device);&lt;br /&gt;
&lt;br /&gt;
	/*  Connects to the iPhone. Pass in the am_device structure that the&lt;br /&gt;
	 *  notification callback will give to you.&lt;br /&gt;
	 *&lt;br /&gt;
	 *  Returns:&lt;br /&gt;
	 *      MDERR_OK                if successfully connected&lt;br /&gt;
	 *      MDERR_SYSCALL           if setsockopt() failed&lt;br /&gt;
	 *      MDERR_QUERY_FAILED      if the daemon query failed&lt;br /&gt;
	 *      MDERR_INVALID_ARGUMENT  if USBMuxConnectByPort returned 0xffffffff&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceConnect(struct am_device *device);&lt;br /&gt;
	&lt;br /&gt;
	/*  Calls PairingRecordPath() on the given device, than tests whether the path&lt;br /&gt;
	 *  which that function returns exists. During the initial connect, the path&lt;br /&gt;
	 *  returned by that function is '/', and so this returns 1.&lt;br /&gt;
	 *&lt;br /&gt;
	 *  Returns:&lt;br /&gt;
	 *      0   if the path did not exist&lt;br /&gt;
	 *      1   if it did&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceIsPaired(struct am_device *device);&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDevicePair(struct am_device *device);&lt;br /&gt;
	&lt;br /&gt;
	/*  iTunes calls this function immediately after testing whether the device is&lt;br /&gt;
	 *  paired. It creates a pairing file and establishes a Lockdown connection.&lt;br /&gt;
	 *&lt;br /&gt;
	 *  Returns:&lt;br /&gt;
	 *      MDERR_OK                if successful&lt;br /&gt;
	 *      MDERR_INVALID_ARGUMENT  if the supplied device is null&lt;br /&gt;
	 *      MDERR_DICT_NOT_LOADED   if the load_dict() call failed&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceValidatePairing(struct am_device *device);&lt;br /&gt;
	&lt;br /&gt;
	/*  Creates a Lockdown session and adjusts the device structure appropriately&lt;br /&gt;
	 *  to indicate that the session has been started. iTunes calls this function&lt;br /&gt;
	 *  after validating pairing.&lt;br /&gt;
	 *&lt;br /&gt;
	 *  Returns:&lt;br /&gt;
	 *      MDERR_OK                if successful&lt;br /&gt;
	 *      MDERR_INVALID_ARGUMENT  if the Lockdown conn has not been established&lt;br /&gt;
	 *      MDERR_DICT_NOT_LOADED   if the load_dict() call failed&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceStartSession(struct am_device *device);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	/* Reads various device settings. One of domain or cfstring arguments should be NULL.&lt;br /&gt;
         *&lt;br /&gt;
         * Possible values for cfstring:&lt;br /&gt;
	 * ActivationState&lt;br /&gt;
	 * ActivationStateAcknowledged&lt;br /&gt;
	 * BasebandBootloaderVersion&lt;br /&gt;
	 * BasebandVersion&lt;br /&gt;
	 * BluetoothAddress&lt;br /&gt;
	 * BuildVersion&lt;br /&gt;
	 * DeviceCertificate&lt;br /&gt;
	 * DeviceClass&lt;br /&gt;
	 * DeviceName&lt;br /&gt;
	 * DevicePublicKey&lt;br /&gt;
	 * FirmwareVersion&lt;br /&gt;
	 * HostAttached&lt;br /&gt;
	 * IntegratedCircuitCardIdentity&lt;br /&gt;
	 * InternationalMobileEquipmentIdentity&lt;br /&gt;
	 * InternationalMobileSubscriberIdentity&lt;br /&gt;
	 * ModelNumber&lt;br /&gt;
	 * PhoneNumber&lt;br /&gt;
	 * ProductType&lt;br /&gt;
	 * ProductVersion&lt;br /&gt;
	 * ProtocolVersion&lt;br /&gt;
	 * RegionInfo&lt;br /&gt;
	 * SBLockdownEverRegisteredKey&lt;br /&gt;
	 * SIMStatus&lt;br /&gt;
	 * SerialNumber&lt;br /&gt;
	 * SomebodySetTimeZone&lt;br /&gt;
	 * TimeIntervalSince1970&lt;br /&gt;
	 * TimeZone&lt;br /&gt;
	 * TimeZoneOffsetFromUTC&lt;br /&gt;
	 * TrustedHostAttached&lt;br /&gt;
	 * UniqueDeviceID&lt;br /&gt;
	 * Uses24HourClock&lt;br /&gt;
	 * WiFiAddress&lt;br /&gt;
	 * iTunesHasConnected&lt;br /&gt;
         *&lt;br /&gt;
         * Possible values for domain:&lt;br /&gt;
         * com.apple.mobile.battery&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT CFStringRef AMDeviceCopyValue(struct am_device *device, CFStringRef domain, CFStringRef cfstring);&lt;br /&gt;
	&lt;br /&gt;
	/* Starts a service and returns a socket file descriptor that can be used in order to further&lt;br /&gt;
	 * access the service. You should stop the session and disconnect before using&lt;br /&gt;
	 * the service. iTunes calls this function after starting a session. It starts &lt;br /&gt;
	 * the service and the SSL connection. service_name should be one of the AMSVC_*&lt;br /&gt;
	 * constants.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Returns:&lt;br /&gt;
	 *      MDERR_OK                if successful&lt;br /&gt;
	 *      MDERR_SYSCALL           if the setsockopt() call failed&lt;br /&gt;
	 *      MDERR_INVALID_ARGUMENT  if the Lockdown conn has not been established&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceStartService(struct am_device *device, CFStringRef &lt;br /&gt;
									  service_name, int *socket_fd);&lt;br /&gt;
	&lt;br /&gt;
	/* Stops a session. You should do this before accessing services.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Returns:&lt;br /&gt;
	 *      MDERR_OK                if successful&lt;br /&gt;
	 *      MDERR_INVALID_ARGUMENT  if the Lockdown conn has not been established&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceStopSession(struct am_device *device);&lt;br /&gt;
	&lt;br /&gt;
	/* Decrements reference counter and, if nothing left, releases resources hold &lt;br /&gt;
	 * by connection, invalidates  pointer to device&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT void AMDeviceRelease(struct am_device *device);&lt;br /&gt;
&lt;br /&gt;
	/* Increments reference counter&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT void AMDeviceRetain(struct am_device *device);&lt;br /&gt;
&lt;br /&gt;
	/* Opens an Apple File Connection. You must start the appropriate service&lt;br /&gt;
	 * first with AMDeviceStartService(). In iTunes, io_timeout is 0.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Returns:&lt;br /&gt;
	 *      MDERR_OK                if successful&lt;br /&gt;
	 *      MDERR_AFC_OUT_OF_MEMORY if malloc() failed&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCConnectionOpen(int socket_fd, unsigned int io_timeout,&lt;br /&gt;
								  struct afc_connection **conn);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        /* Copy an enviromental variable value from iBoot&lt;br /&gt;
         */&lt;br /&gt;
        __DLLIMPORT CFStringRef AMRecoveryModeCopyEnvironmentVariable(struct am_recovery_device *rdev, CFStringRef var);&lt;br /&gt;
	&lt;br /&gt;
	/* Pass in a pointer to an afc_dictionary structure. It will be filled. You can&lt;br /&gt;
	 * iterate it using AFCKeyValueRead. When done use AFCKeyValueClose. Possible keys:&lt;br /&gt;
	 * FSFreeBytes - free bytes on system device for afc2, user device for afc&lt;br /&gt;
	 * FSBlockSize - filesystem block size&lt;br /&gt;
	 * FSTotalBytes - size of device&lt;br /&gt;
	 * Model - iPhone1,1 etc.&lt;br /&gt;
&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCDeviceInfoOpen(struct afc_connection *conn, struct&lt;br /&gt;
								  afc_dictionary **info);&lt;br /&gt;
	&lt;br /&gt;
	/* Turns debug mode on if the environment variable AFCDEBUG is set to a numeric&lt;br /&gt;
	 * value, or if the file '/AFCDEBUG' is present and contains a value. */&lt;br /&gt;
#if defined(__APPLE__)&lt;br /&gt;
	void AFCPlatformInitialize();&lt;br /&gt;
#endif&lt;br /&gt;
	&lt;br /&gt;
	/* Opens a directory on the iPhone. Pass in a pointer in dir to be filled in.&lt;br /&gt;
	 * Note that this normally only accesses the iTunes sandbox/partition as the&lt;br /&gt;
	 * root, which is /var/root/Media. Pathnames are specified with '/' delimiters&lt;br /&gt;
	 * as in Unix style. Use UTF-8 to specify non-ASCII symbols in path.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Returns:&lt;br /&gt;
	 *      MDERR_OK                if successful&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCDirectoryOpen(struct afc_connection *conn, char *path, struct&lt;br /&gt;
								 afc_directory **dir);&lt;br /&gt;
	&lt;br /&gt;
	/* Acquires the next entry in a directory previously opened with&lt;br /&gt;
	 * AFCDirectoryOpen(). When dirent is filled with a NULL value, then the end&lt;br /&gt;
	 * of the directory has been reached. '.' and '..' will be returned as the&lt;br /&gt;
	 * first two entries in each directory except the root; you may want to skip&lt;br /&gt;
	 * over them.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Returns:&lt;br /&gt;
	 *      MDERR_OK                if successful, even if no entries remain&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCDirectoryRead(struct afc_connection *conn, struct afc_directory *dir,&lt;br /&gt;
								 char **dirent);&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCDirectoryClose(afc_connection *conn, struct afc_directory *dir);&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCDirectoryCreate(afc_connection *conn, char *dirname);&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCRemovePath(afc_connection *conn, char *dirname);&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCRenamePath(afc_connection *conn, char *oldpath, char *newpath);&lt;br /&gt;
&lt;br /&gt;
#if (__ITUNES_VER &amp;gt;= 800)&lt;br /&gt;
	/* Creates symbolic or hard link&lt;br /&gt;
         * linktype - int64: 1 means hard link, 2 - soft (symbolic) link&lt;br /&gt;
         * target - absolute or relative path to link target&lt;br /&gt;
         * linkname - absolute path where to create new link&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCLinkPath(struct afc_connection *conn, long long int linktype, const char *target, &lt;br /&gt;
								                              const char *linkname);&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
	/* Opens file for reading or writing without locking it in any way. afc_file_ref should not be shared between threads - &lt;br /&gt;
         * opening file in one thread and closing it in another will lead to possible crash.&lt;br /&gt;
	 * path - UTF-8 encoded absolute path to file&lt;br /&gt;
	 * mode 2 = read, mode 3 = write; unknown = 0 &lt;br /&gt;
	 * ref - receives file handle&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCFileRefOpen(struct afc_connection *conn, char *path, unsigned&lt;br /&gt;
							   long long int mode, afc_file_ref *ref);&lt;br /&gt;
	/* Reads specified amount (len) of bytes from file into buf. Puts actual count of read bytes into len on return&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCFileRefRead(struct afc_connection *conn, afc_file_ref ref,&lt;br /&gt;
							   void *buf, unsigned int *len);&lt;br /&gt;
	/* Writes specified amount (len) of bytes from buf into file.&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCFileRefWrite(struct afc_connection *conn, afc_file_ref ref,&lt;br /&gt;
								void *buf, unsigned int len);&lt;br /&gt;
	/* Moves the file pointer to a specified location.&lt;br /&gt;
	 * offset - Number of bytes from origin (int64)&lt;br /&gt;
	 * origin - 0 = from beginning, 1 = from current position, 2 = from end&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCFileRefSeek(struct afc_connection *conn, afc_file_ref ref,&lt;br /&gt;
							   unsigned long long offset, int origin, int unused);&lt;br /&gt;
&lt;br /&gt;
	/* Gets the current position of a file pointer into offset argument.&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCFileRefTell(struct afc_connection *conn, afc_file_ref ref,&lt;br /&gt;
							   unsigned long long* offset);&lt;br /&gt;
&lt;br /&gt;
	/*  Truncates a file at the specified offset.&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCFileRefSetFileSize(struct afc_connection *conn, afc_file_ref ref,&lt;br /&gt;
							   unsigned long long offset);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCFileRefLock(struct afc_connection *conn, afc_file_ref ref);&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCFileRefUnlock(struct afc_connection *conn, afc_file_ref ref);&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCFileRefClose(struct afc_connection *conn, afc_file_ref ref);&lt;br /&gt;
&lt;br /&gt;
	/* Opens dictionary describing specified file or directory (iTunes below 8.2 allowed using AFCGetFileInfo&lt;br /&gt;
	   to get the same information)&lt;br /&gt;
	*/&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCFileInfoOpen(struct afc_connection *conn, char *path, struct&lt;br /&gt;
								afc_dictionary **info);&lt;br /&gt;
&lt;br /&gt;
	/* Reads next entry from dictionary. When last entry is read, function returns NULL in key argument&lt;br /&gt;
	   Possible keys:&lt;br /&gt;
	     &amp;quot;st_size&amp;quot;:     val - size in bytes&lt;br /&gt;
	     &amp;quot;st_blocks&amp;quot;:   val - size in blocks&lt;br /&gt;
	     &amp;quot;st_nlink&amp;quot;:    val - number of hardlinks&lt;br /&gt;
	     &amp;quot;st_ifmt&amp;quot;:     val - &amp;quot;S_IFDIR&amp;quot; for folders&lt;br /&gt;
	                        &amp;quot;S_IFLNK&amp;quot; for symlinks&lt;br /&gt;
	     &amp;quot;LinkTarget&amp;quot;:  val - path to symlink target&lt;br /&gt;
	*/&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCKeyValueRead(struct afc_dictionary *dict, char **key, char **&lt;br /&gt;
								val);&lt;br /&gt;
	/* Closes dictionary&lt;br /&gt;
	*/&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCKeyValueClose(struct afc_dictionary *dict);&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	/* Returns the context field of the given AFC connection. */&lt;br /&gt;
	__DLLIMPORT unsigned int AFCConnectionGetContext(struct afc_connection *conn);&lt;br /&gt;
	&lt;br /&gt;
	/* Returns the fs_block_size field of the given AFC connection. */&lt;br /&gt;
	__DLLIMPORT unsigned int AFCConnectionGetFSBlockSize(struct afc_connection *conn);&lt;br /&gt;
	&lt;br /&gt;
	/* Returns the io_timeout field of the given AFC connection. In iTunes this is&lt;br /&gt;
	 * 0. */&lt;br /&gt;
	__DLLIMPORT unsigned int AFCConnectionGetIOTimeout(struct afc_connection *conn);&lt;br /&gt;
	&lt;br /&gt;
	/* Returns the sock_block_size field of the given AFC connection. */&lt;br /&gt;
	__DLLIMPORT unsigned int AFCConnectionGetSocketBlockSize(struct afc_connection *conn);&lt;br /&gt;
	&lt;br /&gt;
	/* Closes the given AFC connection. */&lt;br /&gt;
	__DLLIMPORT afc_error_t AFCConnectionClose(struct afc_connection *conn);&lt;br /&gt;
	&lt;br /&gt;
	/* Registers for device notifications related to the restore process. unknown0&lt;br /&gt;
	 * is zero when iTunes calls this. In iTunes,&lt;br /&gt;
	 * the callbacks are located at:&lt;br /&gt;
	 *      1: $3ac68e-$3ac6b1, calls $3ac542(unknown1, arg, 0)&lt;br /&gt;
	 *      2: $3ac66a-$3ac68d, calls $3ac542(unknown1, 0, arg)&lt;br /&gt;
	 *      3: $3ac762-$3ac785, calls $3ac6b2(unknown1, arg, 0)&lt;br /&gt;
	 *      4: $3ac73e-$3ac761, calls $3ac6b2(unknown1, 0, arg)&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT unsigned int AMRestoreRegisterForDeviceNotifications(&lt;br /&gt;
				am_restore_device_notification_callback dfu_connect_callback,&lt;br /&gt;
				am_restore_device_notification_callback recovery_connect_callback,&lt;br /&gt;
				am_restore_device_notification_callback dfu_disconnect_callback,&lt;br /&gt;
				am_restore_device_notification_callback recovery_disconnect_callback,&lt;br /&gt;
				unsigned int unknown0,&lt;br /&gt;
				void *user_info);&lt;br /&gt;
	&lt;br /&gt;
	/* Causes the restore functions to spit out (unhelpful) progress messages to&lt;br /&gt;
	 * the file specified by the given path. iTunes always calls this right before&lt;br /&gt;
	 * restoring with a path of&lt;br /&gt;
	 * &amp;quot;$HOME/Library/Logs/iPhone Updater Logs/iPhoneUpdater X.log&amp;quot;, where X is an&lt;br /&gt;
	 * unused number.&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT unsigned int AMRestoreEnableFileLogging(char *path);&lt;br /&gt;
	&lt;br /&gt;
	/* Initializes a new option dictionary to default values. Pass the constant&lt;br /&gt;
	 * kCFAllocatorDefault as the allocator. The option dictionary looks as&lt;br /&gt;
	 * follows:&lt;br /&gt;
	 * {&lt;br /&gt;
	 *      NORImageType =&amp;gt; 'production',&lt;br /&gt;
	 *      AutoBootDelay =&amp;gt; 0,&lt;br /&gt;
	 *      KernelCacheType =&amp;gt; 'Release',&lt;br /&gt;
	 *      UpdateBaseband =&amp;gt; true,&lt;br /&gt;
	 *      DFUFileType =&amp;gt; 'RELEASE',&lt;br /&gt;
	 *      SystemImageType =&amp;gt; 'User',&lt;br /&gt;
	 *      CreateFilesystemPartitions =&amp;gt; true,&lt;br /&gt;
	 *      FlashNOR =&amp;gt; true,&lt;br /&gt;
	 *      RestoreBootArgs =&amp;gt; 'rd=md0 nand-enable-reformat=1 -progress'&lt;br /&gt;
	 *      BootImageType =&amp;gt; 'User'&lt;br /&gt;
	 *  }&lt;br /&gt;
	 *&lt;br /&gt;
	 * Returns:&lt;br /&gt;
	 *      the option dictionary   if successful&lt;br /&gt;
	 *      NULL                    if out of memory&lt;br /&gt;
	 */ &lt;br /&gt;
	__DLLIMPORT CFMutableDictionaryRef AMRestoreCreateDefaultOptions(CFAllocatorRef allocator);&lt;br /&gt;
	&lt;br /&gt;
	/* ----------------------------------------------------------------------------&lt;br /&gt;
	 *   Less-documented public routines&lt;br /&gt;
	 * ------------------------------------------------------------------------- */&lt;br /&gt;
	&lt;br /&gt;
	__DLLIMPORT unsigned int AMRestorePerformRecoveryModeRestore(struct am_recovery_device *&lt;br /&gt;
				rdev, CFDictionaryRef opts, void *callback, void *user_info);&lt;br /&gt;
	__DLLIMPORT unsigned int AMRestorePerformRestoreModeRestore(struct am_restore_device *&lt;br /&gt;
				rdev, CFDictionaryRef opts, void *callback, void *user_info);&lt;br /&gt;
	__DLLIMPORT struct am_restore_device *AMRestoreModeDeviceCreate(unsigned int unknown0,&lt;br /&gt;
				unsigned int connection_id, unsigned int unknown1);&lt;br /&gt;
	__DLLIMPORT unsigned int AMRestoreCreatePathsForBundle(CFStringRef restore_bundle_path,&lt;br /&gt;
				CFStringRef kernel_cache_type, CFStringRef boot_image_type, unsigned int&lt;br /&gt;
				unknown0, CFStringRef *firmware_dir_path, CFStringRef *&lt;br /&gt;
				kernelcache_restore_path, unsigned int unknown1, CFStringRef *&lt;br /&gt;
				ramdisk_path);&lt;br /&gt;
	__DLLIMPORT unsigned int AMRestoreModeDeviceReboot(struct am_restore_device *rdev);	// Added by JB 30.07.2008&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceEnterRecovery(struct am_device *device);&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceDisconnect(struct am_device *device);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	/* to use this, start the service &amp;quot;com.apple.mobile.notification_proxy&amp;quot;, handle will be the socket to use */&lt;br /&gt;
	typedef void (*NOTIFY_CALLBACK)(CFSTR notification, USERDATA data);&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDPostNotification(SOCKET socket, CFStringRef  notification, CFStringRef userinfo);&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDObserveNotification(SOCKET socket, CFSTR notification);&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDListenForNotifications(SOCKET socket, NOTIFY_CALLBACK cb, USERDATA data);&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDShutdownNotificationProxy(SOCKET socket);&lt;br /&gt;
	&lt;br /&gt;
	/*edits by geohot*/&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceDeactivate(struct am_device *device);&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceActivate(struct am_device *device, CFDictionaryRef dict);&lt;br /&gt;
	__DLLIMPORT mach_error_t AMDeviceRemoveValue(struct am_device *device, unsigned int, CFStringRef cfstring);&lt;br /&gt;
	&lt;br /&gt;
	/* ----------------------------------------------------------------------------&lt;br /&gt;
	 *   Semi-private routines&lt;br /&gt;
	 * ------------------------------------------------------------------------- */&lt;br /&gt;
	&lt;br /&gt;
	/*  Pass in a usbmux_listener_1 structure and a usbmux_listener_2 structure&lt;br /&gt;
	 *  pointer, which will be filled with the resulting usbmux_listener_2.&lt;br /&gt;
	 *&lt;br /&gt;
	 *  Returns:&lt;br /&gt;
	 *      MDERR_OK                if completed successfully&lt;br /&gt;
	 *      MDERR_USBMUX_ARG_NULL   if one of the arguments was NULL&lt;br /&gt;
	 *      MDERR_USBMUX_FAILED     if the listener was not created successfully&lt;br /&gt;
	 */&lt;br /&gt;
	__DLLIMPORT usbmux_error_t USBMuxListenerCreate(struct usbmux_listener_1 *esi_fp8, struct&lt;br /&gt;
										usbmux_listener_2 **eax_fp12);&lt;br /&gt;
	&lt;br /&gt;
	/* ----------------------------------------------------------------------------&lt;br /&gt;
	 *   Less-documented semi-private routines&lt;br /&gt;
	 * ------------------------------------------------------------------------- */&lt;br /&gt;
	__DLLIMPORT usbmux_error_t USBMuxListenerHandleData(void *);&lt;br /&gt;
	&lt;br /&gt;
	/* ----------------------------------------------------------------------------&lt;br /&gt;
	 *   Private routines - here be dragons&lt;br /&gt;
	 * ------------------------------------------------------------------------- */&lt;br /&gt;
	&lt;br /&gt;
	/* AMRestorePerformRestoreModeRestore() calls this function with a dictionary&lt;br /&gt;
	 * in order to perform certain special restore operations&lt;br /&gt;
	 * (RESTORED_OPERATION_*). It is thought that this function might enable&lt;br /&gt;
	 * significant access to the phone. */&lt;br /&gt;
	&lt;br /&gt;
	/*&lt;br /&gt;
	 typedef unsigned int (*t_performOperation)(struct am_restore_device *rdev,&lt;br /&gt;
	 CFDictionaryRef op) __attribute__ ((regparm(2)));&lt;br /&gt;
	 t_performOperation _performOperation = (t_performOperation)0x3c39fa4b;&lt;br /&gt;
	 */ &lt;br /&gt;
	&lt;br /&gt;
	/* ----------------------------------------------------------------------------&lt;br /&gt;
	 *   Less-documented private routines&lt;br /&gt;
	 * ------------------------------------------------------------------------- */&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/*&lt;br /&gt;
	 typedef int (*t_socketForPort)(struct am_restore_device *rdev, unsigned int port)&lt;br /&gt;
	 __attribute__ ((regparm(2)));&lt;br /&gt;
	 t_socketForPort _socketForPort = (t_socketForPort)(void *)0x3c39f36c;&lt;br /&gt;
	 &lt;br /&gt;
	 typedef void (*t_restored_send_message)(int port, CFDictionaryRef msg);&lt;br /&gt;
	 t_restored_send_message _restored_send_message = (t_restored_send_message)0x3c3a4e40;&lt;br /&gt;
	 &lt;br /&gt;
	 typedef CFDictionaryRef (*t_restored_receive_message)(int port);&lt;br /&gt;
	 t_restored_receive_message _restored_receive_message = (t_restored_receive_message)0x3c3a4d40;&lt;br /&gt;
	 &lt;br /&gt;
	 typedef unsigned int (*t_sendControlPacket)(struct am_recovery_device *rdev, unsigned&lt;br /&gt;
	 int msg1, unsigned int msg2, unsigned int unknown0, unsigned int *unknown1,&lt;br /&gt;
	 unsigned char *unknown2) __attribute__ ((regparm(3)));&lt;br /&gt;
	 t_sendControlPacket _sendControlPacket = (t_sendControlPacket)0x3c3a3da3;;&lt;br /&gt;
	 &lt;br /&gt;
	 typedef unsigned int (*t_sendCommandToDevice)(struct am_recovery_device *rdev,&lt;br /&gt;
	 CFStringRef cmd) __attribute__ ((regparm(2)));&lt;br /&gt;
	 t_sendCommandToDevice _sendCommandToDevice = (t_sendCommandToDevice)0x3c3a3e3b;&lt;br /&gt;
	 &lt;br /&gt;
	 typedef unsigned int (*t_AMRUSBInterfaceReadPipe)(unsigned int readwrite_pipe, unsigned&lt;br /&gt;
	 int read_pipe, unsigned char *data, unsigned int *len);&lt;br /&gt;
	 t_AMRUSBInterfaceReadPipe _AMRUSBInterfaceReadPipe = (t_AMRUSBInterfaceReadPipe)0x3c3a27e8;&lt;br /&gt;
	 &lt;br /&gt;
	 typedef unsigned int (*t_AMRUSBInterfaceWritePipe)(unsigned int readwrite_pipe, unsigned&lt;br /&gt;
	 int write_pipe, void *data, unsigned int len);&lt;br /&gt;
	 t_AMRUSBInterfaceWritePipe _AMRUSBInterfaceWritePipe = (t_AMRUSBInterfaceWritePipe)0x3c3a27cb;&lt;br /&gt;
	 */&lt;br /&gt;
	&lt;br /&gt;
	int performOperation(am_restore_device *rdev, CFMutableDictionaryRef message);&lt;br /&gt;
	int socketForPort(am_restore_device *rdev, unsigned int portnum);&lt;br /&gt;
	int sendCommandToDevice(am_recovery_device *rdev, CFStringRef cfs, int block);&lt;br /&gt;
	int sendFileToDevice(am_recovery_device *rdev, CFStringRef filename); &lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
}&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
/* -*- mode:c; indent-tabs-mode:nil; c-basic-offset:2; tab-width:2; */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===AFC Connection===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
===Locking the Device for Sync===&lt;br /&gt;
When iTunes sends a new song to the device, the device shows a &amp;quot;Sync in progress&amp;quot; screen and when complete, the Music app on the device re-reads the iTunesDB file so it picks up the new song.&lt;br /&gt;
&lt;br /&gt;
To get this behaviour, first start the notification service:&lt;br /&gt;
&amp;lt;pre&amp;gt;SOCKET socket;&lt;br /&gt;
AMDeviceStartService(dev, CFSTR(&amp;quot;com.apple.mobile.notification_proxy&amp;quot;), &amp;amp;socket, NULL);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we post a notificaton message to signal that we are going to start a sync:&lt;br /&gt;
&amp;lt;pre&amp;gt;AMDPostNotification(socket, CFSTR(&amp;quot;com.apple.itunes-mobdev.syncWillStart&amp;quot;), NULL);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we open the itunes lock file:&lt;br /&gt;
&amp;lt;pre&amp;gt;afc_file_ref lockref;&lt;br /&gt;
AFCFileRefOpen(conn, &amp;quot;/com.apple.itunes.lock_sync&amp;quot;, 2, &amp;amp;lockref);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now post a notification to say we are going to lock this file, and try and lock it.&lt;br /&gt;
If the AFCFileRefLock call fails, pause and repeat.&lt;br /&gt;
&amp;lt;pre&amp;gt;AMDPostNotification(socket, CFSTR(&amp;quot;com.apple.itunes-mobdev.syncLockRequest&amp;quot;), NULL);&lt;br /&gt;
mach_error_t error = AFCFileRefLock(conn, lockref);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the file is successfully locked, post another notification, and stop the notification service.&lt;br /&gt;
&amp;lt;pre&amp;gt;AMDPostNotification(socket,CFSTR(&amp;quot;com.apple.itunes-mobdev.syncDidStart&amp;quot;), NULL);&lt;br /&gt;
AMDShutdownNotificationProxy(socket);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the sync can proceed, so copy your files across and make the changes to the iTunesDB.&lt;br /&gt;
&lt;br /&gt;
To release the lock, start the notification system again, unlock and close the lock file, and send a sync finished notification message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;AFCFileRefUnlock(conn, lockref);&lt;br /&gt;
AFCFileRefClose(conn, lockref);&lt;br /&gt;
AMDeviceStartService(dev, CFSTR(&amp;quot;com.apple.mobile.notification_proxy&amp;quot;), &amp;amp;socket, NULL);&lt;br /&gt;
AMDPostNotification(socket, &amp;amp;CFSTR(&amp;quot;com.apple.itunes-mobdev.syncDidFinish&amp;quot;), NULL);&lt;br /&gt;
AMDShutdownNotificationProxy(socket);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To handle &amp;quot;Slide to Cancel&amp;quot; and terminate sync when user slides cancel switch, use AMDObserveNotification to subscribe notifications about “com.apple.itunes-client.syncCancelRequest”. Then start listening for notifications (AMDListenForNotifications) until you get “AMDNotificationFaceplant”.&lt;br /&gt;
When notification got, you should unlock and close lock file handle (don’t sure if you need to post “syncDidFinish” to proxy, seems it doesn’t matter) and terminate sync gracefully.&lt;br /&gt;
The same notification is also got when you unplug your device, so you should always be ready for errors.&lt;br /&gt;
&lt;br /&gt;
NOTE: You may find that starting the notification_proxy service once and once only at the start of your app and using the same socket in calls to AMDPostNotification works better. iTunes opens and closes the notification_proxy regularly, but it appears to be a bit flakey when you open/close it all the time.&lt;br /&gt;
&lt;br /&gt;
===Known Functions===&lt;br /&gt;
&lt;br /&gt;
 AFCLockCreate&lt;br /&gt;
 AFCLockFree&lt;br /&gt;
 AFCLockLock&lt;br /&gt;
 AFCLockTryLock&lt;br /&gt;
 AFCLockUnlock&lt;br /&gt;
 AFCStringBufferAlloc&lt;br /&gt;
 AFCStringBufferAppend&lt;br /&gt;
 AFCStringBufferFree&lt;br /&gt;
 AFCStringCopy&lt;br /&gt;
 MISProfileCopyPayload&lt;br /&gt;
 MISProfileCopySignerSubjectSummary&lt;br /&gt;
 MISProfileCreateDataRepresentation&lt;br /&gt;
 MISProfileCreateWithData&lt;br /&gt;
 MISProfileCreateWithFile&lt;br /&gt;
 MISProfileGetValue&lt;br /&gt;
 MISProfileIsMutable&lt;br /&gt;
 MISProfileValidateSignature&lt;br /&gt;
 MISProfileValidateSignatureWithAnchors&lt;br /&gt;
 MISProfileWriteToFile&lt;br /&gt;
 MISProvisioningProfileCheckValidity&lt;br /&gt;
 MISProvisioningProfileGetCreationDate&lt;br /&gt;
 MISProvisioningProfileGetDeveloperCertificates&lt;br /&gt;
 MISProvisioningProfileGetExpirationDate&lt;br /&gt;
 MISProvisioningProfileGetName&lt;br /&gt;
 MISProvisioningProfileGetProvisionedDevices&lt;br /&gt;
 MISProvisioningProfileGetUUID&lt;br /&gt;
 MISProvisioningProfileGetVersion&lt;br /&gt;
 MISProvisioningProfileIncludesDevice&lt;br /&gt;
 MISProvisioningProfileProvisionsAllDevices&lt;br /&gt;
 MISProvisioningProfileValidateSignature&lt;br /&gt;
 AFCConnectionClose&lt;br /&gt;
 AFCConnectionGetContext&lt;br /&gt;
 AFCConnectionGetFSBlockSize&lt;br /&gt;
 AFCConnectionGetIOTimeout&lt;br /&gt;
 AFCConnectionGetSocketBlockSize&lt;br /&gt;
 AFCConnectionOpen&lt;br /&gt;
 AFCConnectionSetContext&lt;br /&gt;
 AFCConnectionSetFSBlockSize&lt;br /&gt;
 AFCConnectionSetFatalError&lt;br /&gt;
 AFCConnectionSetIOTimeout&lt;br /&gt;
 AFCConnectionSetSocketBlockSize&lt;br /&gt;
 AFCDeviceInfoOpen&lt;br /&gt;
 AFCDirectoryClose&lt;br /&gt;
 AFCDirectoryCreate&lt;br /&gt;
 AFCDirectoryOpen&lt;br /&gt;
 AFCDirectoryRead&lt;br /&gt;
 AFCDiscardBodyData&lt;br /&gt;
 AFCDiscardData&lt;br /&gt;
 AFCErrnoToAFCError&lt;br /&gt;
 AFCFileInfoOpen&lt;br /&gt;
 AFCFileRefClose&lt;br /&gt;
 AFCFileRefLock&lt;br /&gt;
 AFCFileRefOpen&lt;br /&gt;
 AFCFileRefRead&lt;br /&gt;
 AFCFileRefSeek&lt;br /&gt;
 AFCFileRefSetFileSize&lt;br /&gt;
 AFCFileRefTell&lt;br /&gt;
 AFCFileRefUnlock&lt;br /&gt;
 AFCFileRefWrite&lt;br /&gt;
 AFCFlushData&lt;br /&gt;
 AFCGetClientVersionString&lt;br /&gt;
 AFCGetDeviceInfo&lt;br /&gt;
 AFCGetFileInfo&lt;br /&gt;
 AFCInitHeader&lt;br /&gt;
 AFCKeyValueClose&lt;br /&gt;
 AFCKeyValueRead&lt;br /&gt;
 AFCParseDataPacketHeader&lt;br /&gt;
 AFCParseStatusPacket&lt;br /&gt;
 AFCReadData&lt;br /&gt;
 AFCReadPacket&lt;br /&gt;
 AFCReadPacketBody&lt;br /&gt;
 AFCReadPacketHeader&lt;br /&gt;
 AFCRemovePath&lt;br /&gt;
 AFCRenamePath&lt;br /&gt;
 AFCSendData&lt;br /&gt;
 AFCSendDataPacket&lt;br /&gt;
 AFCSendHeader&lt;br /&gt;
 AFCSendPacket&lt;br /&gt;
 AFCSendStatus&lt;br /&gt;
 AFCValidateHeader&lt;br /&gt;
 AMDFUModeDeviceGetLocationID&lt;br /&gt;
 AMDFUModeDeviceGetProductID&lt;br /&gt;
 AMDFUModeDeviceGetProductType&lt;br /&gt;
 AMDFUModeDeviceGetProgress&lt;br /&gt;
 AMDFUModeDeviceGetTypeID&lt;br /&gt;
 AMDListenForNotifications&lt;br /&gt;
 AMDObserveNotification&lt;br /&gt;
 AMDPostNotification&lt;br /&gt;
 AMDShutdownNotificationProxy&lt;br /&gt;
 AMDeviceActivate&lt;br /&gt;
 AMDeviceArchiveApplication&lt;br /&gt;
 AMDeviceConnect&lt;br /&gt;
 AMDeviceCopyDeviceIdentifier&lt;br /&gt;
 AMDeviceCopyProvisioningProfiles&lt;br /&gt;
 AMDeviceCopyValue&lt;br /&gt;
 AMDeviceDeactivate&lt;br /&gt;
 AMDeviceDisconnect&lt;br /&gt;
 AMDeviceEnterRecovery&lt;br /&gt;
 AMDeviceGetConnectionID&lt;br /&gt;
 AMDeviceInstallApplication&lt;br /&gt;
 AMDeviceInstallProvisioningProfile&lt;br /&gt;
 AMDeviceIsPaired&lt;br /&gt;
 AMDeviceIsValid&lt;br /&gt;
 AMDeviceLookupApplicationArchives&lt;br /&gt;
 AMDeviceLookupApplications&lt;br /&gt;
 AMDeviceNotificationGetThreadHandle&lt;br /&gt;
 AMDeviceNotificationSubscribe&lt;br /&gt;
 AMDeviceNotificationUnsubscribe&lt;br /&gt;
 AMDevicePair&lt;br /&gt;
 AMDeviceRelease&lt;br /&gt;
 AMDeviceRemoveApplicationArchive&lt;br /&gt;
 AMDeviceRemoveProvisioningProfile&lt;br /&gt;
 AMDeviceRemoveValue&lt;br /&gt;
 AMDeviceRestoreApplication&lt;br /&gt;
 AMDeviceRetain&lt;br /&gt;
 AMDeviceSetValue&lt;br /&gt;
 AMDeviceSoftwareUpdate&lt;br /&gt;
 AMDeviceStartHouseArrestService&lt;br /&gt;
 AMDeviceStartService&lt;br /&gt;
 AMDeviceStartSession&lt;br /&gt;
 AMDeviceStopSession&lt;br /&gt;
 AMDeviceTransferApplication&lt;br /&gt;
 AMDeviceUninstallApplication&lt;br /&gt;
 AMDeviceValidatePairing&lt;br /&gt;
 AMRecoveryModeDeviceCopyIMEI&lt;br /&gt;
 AMRecoveryModeDeviceCopySerialNumber&lt;br /&gt;
 AMRecoveryModeDeviceGetLocationID&lt;br /&gt;
 AMRecoveryModeDeviceGetProductID&lt;br /&gt;
 AMRecoveryModeDeviceGetProductType&lt;br /&gt;
 AMRecoveryModeDeviceGetProgress&lt;br /&gt;
 AMRecoveryModeDeviceGetSecurityEpoch&lt;br /&gt;
 AMRecoveryModeDeviceGetTypeID&lt;br /&gt;
 AMRecoveryModeDeviceReboot&lt;br /&gt;
 AMRecoveryModeDeviceSetAutoBoot&lt;br /&gt;
 AMRecoveryModeGetSoftwareBuildVersion&lt;br /&gt;
 AMRestoreCreateBootArgsByAddingArg&lt;br /&gt;
 AMRestoreCreateBootArgsByRemovingArg&lt;br /&gt;
 AMRestoreCreateDefaultOptions&lt;br /&gt;
 AMRestoreCreateDefaultOptionsForIdentification&lt;br /&gt;
 AMRestoreCreatePathsForBundle&lt;br /&gt;
 AMRestoreDisableFileLogging&lt;br /&gt;
 AMRestoreEnableExtraDFUDevices&lt;br /&gt;
 AMRestoreEnableFileLogging&lt;br /&gt;
 AMRestoreGetSupportedPayloadVersion&lt;br /&gt;
 AMRestoreModeDeviceCopyIMEI&lt;br /&gt;
 AMRestoreModeDeviceCopyRestoreLog&lt;br /&gt;
 AMRestoreModeDeviceCopySerialNumber&lt;br /&gt;
 AMRestoreModeDeviceCreate&lt;br /&gt;
 AMRestoreModeDeviceGetDeviceID&lt;br /&gt;
 AMRestoreModeDeviceGetLocationID&lt;br /&gt;
 AMRestoreModeDeviceGetProgress&lt;br /&gt;
 AMRestoreModeDeviceGetTypeID&lt;br /&gt;
 AMRestoreModeDeviceReboot&lt;br /&gt;
 AMRestorePerformDFURestore&lt;br /&gt;
 AMRestorePerformRecoveryModeRestore&lt;br /&gt;
 AMRestorePerformRestoreModeRestore&lt;br /&gt;
 AMRestoreRegisterForDeviceNotifications&lt;br /&gt;
 AMRestoreSetLogLevel&lt;br /&gt;
 AMSBackup&lt;br /&gt;
 AMSBeginSync&lt;br /&gt;
 AMSBeginSyncForDataClasses&lt;br /&gt;
 AMSCancelBackupRestore&lt;br /&gt;
 AMSCancelCrashReportCopy&lt;br /&gt;
 AMSCancelSync&lt;br /&gt;
 AMSCancelSyncDiagnostics&lt;br /&gt;
 AMSCleanup&lt;br /&gt;
 AMSConnectToCrashReportCopyTarget&lt;br /&gt;
 AMSCopyAndSubmitCrashLogs&lt;br /&gt;
 AMSCopyAndSubmitCrashLogsFromTarget&lt;br /&gt;
 AMSCopyApplicationListFromBackup&lt;br /&gt;
 AMSCopyCrashReportPath&lt;br /&gt;
 AMSCopyCrashReportsFromTarget&lt;br /&gt;
 AMSCopySourcesForRestoreCompatibleWith&lt;br /&gt;
 AMSDisconnectFromCrashReportCopyTarget&lt;br /&gt;
 AMSGetAOSUsername&lt;br /&gt;
 AMSGetApplicationProviderInfo&lt;br /&gt;
 AMSGetCalendarDayLimit&lt;br /&gt;
 AMSGetClientIdentifierAndDisplayNameForTarget&lt;br /&gt;
 AMSGetCollectionsForDataClassName&lt;br /&gt;
 AMSGetConflictInformation&lt;br /&gt;
 AMSGetConflictInformationForIdentifiers&lt;br /&gt;
 AMSGetCrashReportCopyPreferencesForTarget&lt;br /&gt;
 AMSGetDCAChangeInformation&lt;br /&gt;
 AMSGetDataChangeAlertInfo&lt;br /&gt;
 AMSGetDataClassInfoForTarget&lt;br /&gt;
 AMSGetLastSyncDateForDataClass&lt;br /&gt;
 AMSGetNewRecordCalendarName&lt;br /&gt;
 AMSGetNewRecordGroupName&lt;br /&gt;
 AMSGetNumberOfCrashReportsToCopy&lt;br /&gt;
 AMSGetNumberOfCrashReportsToSubmit&lt;br /&gt;
 AMSGetSourcesForRestore&lt;br /&gt;
 AMSGetSupportedDataClassNames&lt;br /&gt;
 AMSInitialize&lt;br /&gt;
 AMSRefreshCollectionsForDataClassName&lt;br /&gt;
 AMSRegisterCallbacks&lt;br /&gt;
 AMSRegisterClientWithTargetIdentifierAndDisplayName&lt;br /&gt;
 AMSResetSyncData&lt;br /&gt;
 AMSRestore&lt;br /&gt;
 AMSRestoreWithApplications&lt;br /&gt;
 AMSRunSyncDiagnostics&lt;br /&gt;
 AMSSetCalendarDayLimit&lt;br /&gt;
 AMSSetConflictWinners&lt;br /&gt;
 AMSSetCrashReportCopyPreferencesForTarget&lt;br /&gt;
 AMSSetDataChangeAlertInfo&lt;br /&gt;
 AMSSetDataClassInfoForTarget&lt;br /&gt;
 AMSSetDesignatedProviderForDataClassName&lt;br /&gt;
 AMSSetFilteredCollectionNamesForDataClassName&lt;br /&gt;
 AMSSetNewRecordCalendarName&lt;br /&gt;
 AMSSetNewRecordGroupName&lt;br /&gt;
 AMSSubmitCrashReportsFromTarget&lt;br /&gt;
 AMSSyncConflictsSelections&lt;br /&gt;
 AMSUnregisterTarget&lt;br /&gt;
 ASRServerHandleConnection&lt;br /&gt;
 GoogleSyncConduitCopyUsername&lt;br /&gt;
 GoogleSyncConduitRegisterClient&lt;br /&gt;
 GoogleSyncConduitSetUsernameAndPassword&lt;br /&gt;
 GoogleSyncConduitUnregisterClient&lt;br /&gt;
 GoogleSyncConduitValidateUser&lt;br /&gt;
 USBMuxConnectByPort&lt;br /&gt;
 USBMuxListenForDevices&lt;br /&gt;
 USBMuxListenerClose&lt;br /&gt;
 USBMuxListenerCreate&lt;br /&gt;
 USBMuxListenerGetEvent&lt;br /&gt;
 USBMuxListenerGetFD&lt;br /&gt;
 USBMuxListenerHandleData&lt;br /&gt;
 USBMuxListenerSetDebug&lt;br /&gt;
 YahooConduitCopyYahooID&lt;br /&gt;
 YahooConduitIsTokenValid&lt;br /&gt;
 YahooConduitLastSyncError&lt;br /&gt;
 YahooConduitRegister&lt;br /&gt;
 YahooConduitUnregister&lt;br /&gt;
 kAMDMobileDeviceVersionNumber&lt;br /&gt;
 kLDErrorInvalidResponse&lt;br /&gt;
 lockdown_activate&lt;br /&gt;
 lockdown_connection_create&lt;br /&gt;
 lockdown_connection_destroy&lt;br /&gt;
 lockdown_get_value&lt;br /&gt;
 lockdown_goodbye&lt;br /&gt;
 lockdown_pair&lt;br /&gt;
 lockdown_remove_value&lt;br /&gt;
 lockdown_service_start&lt;br /&gt;
 lockdown_session_start&lt;br /&gt;
 lockdown_session_stop&lt;br /&gt;
 lockdown_set_value&lt;br /&gt;
&lt;br /&gt;
===Private Functions===&lt;br /&gt;
&lt;br /&gt;
====How to find address of privates functions in iTunesMobileDevice.dll or MobileDevice.framework====&lt;br /&gt;
&lt;br /&gt;
In order to obtain the address of a usable private function in MobileDevice, you will have to be able to understand x86-64 assembly to reverse engineer it. A private function will not have its name exported in the mach-o symbol table, so in a debugger, like GDB, it will show up as part of another function. However, you will know that it is a separate function as a new stack frame is set up.&lt;br /&gt;
&lt;br /&gt;
====Private Function Address List====&lt;br /&gt;
&lt;br /&gt;
=====OSX.6 - iTunes 9.0.2(25)=====&lt;br /&gt;
&amp;lt;pre&amp;gt;unsigned int sendCommandToiBoot(struct am_recovery_device *rdev, CFStringRef command, int u);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Address is obtainable by adding 868(0x364) to the address of AMRecoveryDeviceGetProductType(), a public symbol that you can obtain via nlist() or dlsym(). &lt;br /&gt;
Address: 0x1000245ea&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
1. rdev - the device you wish to send the command to.&lt;br /&gt;
2. a CFStringRef of the command to send.&lt;br /&gt;
3. an integer, whose use is currently unknown, but should be set to 0 to work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;unsigned int sendFileToiDevice(struct am_recovery_device *rdev, CFStringRef filename);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Address is obtainable by adding 1763(0x6e3) to the address of AMRecoveryDeviceGetProductType(), a public symbol that you can obtain via nlist() or dlsym().&lt;br /&gt;
Address: 0x100024969&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
1. rdev - the device you wish to send the file to.&lt;br /&gt;
2. a CFStringRef of the path to the file to send.&lt;br /&gt;
&lt;br /&gt;
=====OSX.6 - iTunes 9.0.3(15)=====&lt;br /&gt;
&amp;lt;pre&amp;gt;unsigned int sendCommandToiBoot(struct am_recovery_device *rdev, CFStringRef command, int u);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addresss: AMRecoveryDeviceGetProductType() + 0x37f(895); full offset: 0x2a0ed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;unsigned int sendFileToiDevice(struct am_recovery_device *rdev, CFStringRef filename);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Address: AMRecoveryDeviceGetProductType()+0x6f3(1790); full offset: 0x2a46c&lt;br /&gt;
&lt;br /&gt;
===Libraries Implementations===&lt;br /&gt;
&lt;br /&gt;
* [http://gojohnnyboi.com/source/afcinstall.cpp afcinstall (command line, os x file install via afc)]&lt;br /&gt;
* [http://code.google.com/p/iphuc/ iPhuc (Command line utility)]&lt;br /&gt;
* [http://code.google.com/p/iphucwin32/ iPhuc Win32 (Command line utility)]&lt;br /&gt;
* [http://code.google.com/p/manzana/ manzana (.Net Library)]&lt;br /&gt;
* [http://code.google.com/p/independence/source/browse/trunk/libPhoneInteraction/ libPhoneInteraction (C Library)]&lt;br /&gt;
* [http://github.com/Fallensn0w/MobileDevice-Reb0rn VB.NET Implementation for MobileDevice.h By Fallensn0w]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9401</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9401"/>
		<updated>2010-09-23T02:23:09Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9399 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
'''Note''': [[iBoot]] on the S5L8720 can be downgraded, allowing any of these exploits to be used on future firmwares&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
=== [[Kernel]] ===&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[IOSurface Kernel Exploit]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
=== [[Userland]] ===&lt;br /&gt;
* [[Symlinks]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[LibTiff]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[Mknod]] - Works up to [[iOS]] 1.1.2&lt;br /&gt;
* [[Dual Boot Exploit]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[PDF CFF Font Stack Overflow]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
===Boot Chain===&lt;br /&gt;
[[VROM]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[System|System Software]]&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU]]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9400</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9400"/>
		<updated>2010-09-23T02:22:49Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9398 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
'''Note''': [[iBoot]] on the S5L8720 can be downgraded, allowing any of these exploits to be used on future firmwares&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
===[[Firmware|Userland]]===&lt;br /&gt;
* [[Restore Mode]] - Firmware v1.0.2 and below&lt;br /&gt;
* [[Symlinks]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[LibTiff]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[Mknod]] - Firmware v1.1.2 and below&lt;br /&gt;
* [[Dual Boot Exploit]] - Firmware v2.0b3 and below&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Firmware 3.1.3 and below&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Firmware 3.1.3 and below&lt;br /&gt;
&lt;br /&gt;
===Boot Chain===&lt;br /&gt;
[[VROM]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[System|System Software]]&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU]]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9399</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9399"/>
		<updated>2010-09-23T02:21:34Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9397 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Application Processor shared between the [[M68ap|iPhone]], [[N45ap|iPod touch]], and the [[N82ap|iPhone 3G]]. Not much is known about it through official sources. This processor is not used in any of the newest devices, being replaced by the [[S5L8720]] and [[S5L8920]].&lt;br /&gt;
&lt;br /&gt;
==[[S5L File Formats|Firmware File Formats]]==&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
===[[VROM (S5L8900)|Bootrom]]===&lt;br /&gt;
* [[pwnage|Pwnage 1.0 (Ramdisk + AppleImage2NORAccess)]]&lt;br /&gt;
* [[Pwnage 2.0|Pwnage 2.0 (DFU + Malformed Certificate)]]&lt;br /&gt;
&lt;br /&gt;
===[[Firmware|Userland]]===&lt;br /&gt;
* [[Restore Mode]] - Firmware v1.0.2 and below&lt;br /&gt;
* [[Symlinks]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[LibTiff]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[Mknod]] - Firmware v1.1.2 and below&lt;br /&gt;
* [[Dual Boot Exploit]] - Firmware v2.0b3 and below&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Firmware 3.1.3 and below&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Firmware 3.1.3 and below&lt;br /&gt;
&lt;br /&gt;
==Boot Chain==&lt;br /&gt;
[[VROM (S5L8900)]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Firmware|System Software]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the [[iPhoneLinux]] goals are to replace that Boot Chain after iBoot:&lt;br /&gt;
&lt;br /&gt;
[[VROM (S5L8900)]]-&amp;gt;OpeniBoot-&amp;gt;Linux Kernel-&amp;gt;X Server-&amp;gt;Window Manager&lt;br /&gt;
&lt;br /&gt;
==Upgrade Process==&lt;br /&gt;
&lt;br /&gt;
=== [[Restore Mode]] ===&lt;br /&gt;
The common upgrade process chain is [[VROM]]-&amp;gt;[[DFU Mode]]-&amp;gt;[[WTF]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Ramdisk]]-&amp;gt;[[Restore Mode]].&lt;br /&gt;
&lt;br /&gt;
=== [[DFU Mode]] ===&lt;br /&gt;
To flash an older version of the iPhone software you have to let your phone reside in [[DFU Mode]]. In iTunes you have to press the option key (Mac) or the shift key (Windows) when pressing 'Restore' to be able to manually chose an [[IPSW File Format|IPSW]].&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU Mode]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf Technical Reference Manual: ARM1176JZF-S]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9398</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9398"/>
		<updated>2010-09-23T02:21:07Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9396 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Application Processor shared between the [[M68ap|iPhone]], [[N45ap|iPod touch]], and the [[N82ap|iPhone 3G]]. Not much is known about it through official sources. This processor is not used in any of the newest devices, being replaced by the [[S5L8720]] and [[S5L8920]].&lt;br /&gt;
&lt;br /&gt;
==[[S5L File Formats|Firmware File Formats]]==&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
===[[VROM (S5L8900)|Bootrom]]===&lt;br /&gt;
* [[pwnage|Pwnage 1.0 (Ramdisk + AppleImage2NORAccess)]]&lt;br /&gt;
* [[Pwnage 2.0|Pwnage 2.0 (DFU + Malformed Certificate)]]&lt;br /&gt;
&lt;br /&gt;
=== [[Kernel]] ===&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[IOSurface Kernel Exploit]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
=== [[Userland]] ===&lt;br /&gt;
* [[Symlinks]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[LibTiff]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[Mknod]] - Works up to [[iOS]] 1.1.2&lt;br /&gt;
* [[Dual Boot Exploit]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[PDF CFF Font Stack Overflow]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
==Boot Chain==&lt;br /&gt;
[[VROM (S5L8900)]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Firmware|System Software]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the [[iPhoneLinux]] goals are to replace that Boot Chain after iBoot:&lt;br /&gt;
&lt;br /&gt;
[[VROM (S5L8900)]]-&amp;gt;OpeniBoot-&amp;gt;Linux Kernel-&amp;gt;X Server-&amp;gt;Window Manager&lt;br /&gt;
&lt;br /&gt;
==Upgrade Process==&lt;br /&gt;
&lt;br /&gt;
=== [[Restore Mode]] ===&lt;br /&gt;
The common upgrade process chain is [[VROM]]-&amp;gt;[[DFU Mode]]-&amp;gt;[[WTF]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Ramdisk]]-&amp;gt;[[Restore Mode]].&lt;br /&gt;
&lt;br /&gt;
=== [[DFU Mode]] ===&lt;br /&gt;
To flash an older version of the iPhone software you have to let your phone reside in [[DFU Mode]]. In iTunes you have to press the option key (Mac) or the shift key (Windows) when pressing 'Restore' to be able to manually chose an [[IPSW File Format|IPSW]].&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU Mode]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf Technical Reference Manual: ARM1176JZF-S]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9397</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9397"/>
		<updated>2010-09-23T02:20:26Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9395 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
'''Note''': [[iBoot]] on the S5L8720 can be downgraded, allowing any of these exploits to be used on future firmwares&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
=== [[Kernel]] ===&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[IOSurface Kernel Exploit]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
=== [[Userland]] ===&lt;br /&gt;
* [[Symlinks]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[LibTiff]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[Mknod]] - Works up to [[iOS]] 1.1.2&lt;br /&gt;
* [[Dual Boot Exploit]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[PDF CFF Font Stack Overflow]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
===Boot Chain===&lt;br /&gt;
[[VROM]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[System|System Software]]&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU]]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9396</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9396"/>
		<updated>2010-09-23T02:19:39Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9394 by Iemit737 (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
'''Note''': [[iBoot]] on the S5L8720 can be downgraded, allowing any of these exploits to be used on future firmwares&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
===[[Firmware|Userland]]===&lt;br /&gt;
* [[Restore Mode]] - Firmware v1.0.2 and below&lt;br /&gt;
* [[Symlinks]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[LibTiff]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[Mknod]] - Firmware v1.1.2 and below&lt;br /&gt;
* [[Dual Boot Exploit]] - Firmware v2.0b3 and below&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Firmware 3.1.3 and below&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Firmware 3.1.3 and below&lt;br /&gt;
&lt;br /&gt;
===Boot Chain===&lt;br /&gt;
[[VROM]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[System|System Software]]&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU]]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9395</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9395"/>
		<updated>2010-09-23T02:17:40Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Application Processor shared between the [[M68ap|iPhone]], [[N45ap|iPod touch]], and the [[N82ap|iPhone 3G]]. Not much is known about it through official sources. This processor is not used in any of the newest devices, being replaced by the [[S5L8720]] and [[S5L8920]].&lt;br /&gt;
&lt;br /&gt;
==[[S5L File Formats|Firmware File Formats]]==&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
===[[VROM (S5L8900)|Bootrom]]===&lt;br /&gt;
* [[pwnage|Pwnage 1.0 (Ramdisk + AppleImage2NORAccess)]]&lt;br /&gt;
* [[Pwnage 2.0|Pwnage 2.0 (DFU + Malformed Certificate)]]&lt;br /&gt;
&lt;br /&gt;
===[[Firmware|Userland]]===&lt;br /&gt;
* [[Restore Mode]] - Firmware v1.0.2 and below&lt;br /&gt;
* [[Symlinks]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[LibTiff]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[Mknod]] - Firmware v1.1.2 and below&lt;br /&gt;
* [[Dual Boot Exploit]] - Firmware v2.0b3 and below&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Firmware 3.1.3 and below&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Firmware 3.1.3 and below&lt;br /&gt;
&lt;br /&gt;
==Boot Chain==&lt;br /&gt;
[[VROM (S5L8900)]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Firmware|System Software]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the [[iPhoneLinux]] goals are to replace that Boot Chain after iBoot:&lt;br /&gt;
&lt;br /&gt;
[[VROM (S5L8900)]]-&amp;gt;OpeniBoot-&amp;gt;Linux Kernel-&amp;gt;X Server-&amp;gt;Window Manager&lt;br /&gt;
&lt;br /&gt;
==Upgrade Process==&lt;br /&gt;
&lt;br /&gt;
=== [[Restore Mode]] ===&lt;br /&gt;
The common upgrade process chain is [[VROM]]-&amp;gt;[[DFU Mode]]-&amp;gt;[[WTF]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Ramdisk]]-&amp;gt;[[Restore Mode]].&lt;br /&gt;
&lt;br /&gt;
=== [[DFU Mode]] ===&lt;br /&gt;
To flash an older version of the iPhone software you have to let your phone reside in [[DFU Mode]]. In iTunes you have to press the option key (Mac) or the shift key (Windows) when pressing 'Restore' to be able to manually chose an [[IPSW File Format|IPSW]].&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU Mode]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf Technical Reference Manual: ARM1176JZF-S]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9393</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9393"/>
		<updated>2010-09-23T02:14:46Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
'''Note''': [[iBoot]] on the S5L8720 can be downgraded, allowing any of these exploits to be used on future firmwares&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
=== [[Kernel]] ===&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[IOSurface Kernel Exploit]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
=== [[Userland]] ===&lt;br /&gt;
* [[Symlinks]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[LibTiff]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[Mknod]] - Works up to [[iOS]] 1.1.2&lt;br /&gt;
* [[Dual Boot Exploit]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[PDF CFF Font Stack Overflow]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
===Boot Chain===&lt;br /&gt;
[[VROM]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[System|System Software]]&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU]]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9392</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9392"/>
		<updated>2010-09-23T02:01:54Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 5962 by I1029ai (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
'''Note''': [[iBoot]] on the S5L8720 can be downgraded, allowing any of these exploits to be used on future firmwares&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
=== [[Kernel]] ===&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[IOSurface Kernel Exploit]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
=== [[Userland]] ===&lt;br /&gt;
* [[Symlinks]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[LibTiff]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[Mknod]] - Works up to [[iOS]] 1.1.2&lt;br /&gt;
* [[Dual Boot Exploit]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[PDF CFF Font Stack Overflow]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
==Boot Chain==&lt;br /&gt;
[[VROM]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[System|System Software]]&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU]]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9391</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9391"/>
		<updated>2010-09-23T02:01:09Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
'''Note''': [[iBoot]] on the S5L8720 can be downgraded, allowing any of these exploits to be used on future firmwares&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
=== [[Kernel]] ===&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[IOSurface Kernel Exploit]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
=== [[Userland]] ===&lt;br /&gt;
* [[Symlinks]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[LibTiff]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[Mknod]] - Works up to [[iOS]] 1.1.2&lt;br /&gt;
* [[Dual Boot Exploit]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[PDF CFF Font Stack Overflow]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
==Boot Chain==&lt;br /&gt;
[[VROM]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[System|System Software]]&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
Haxed by 1337Urmom at The Pois0nhack team&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf Technical Reference Manual: ARM1176JZF-S]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9390</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9390"/>
		<updated>2010-09-23T02:00:58Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 7694 by Dialexio (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Application Processor shared between the [[M68ap|iPhone]], [[N45ap|iPod touch]], and the [[N82ap|iPhone 3G]]. Not much is known about it through official sources. This processor is not used in any of the newest devices, being replaced by the [[S5L8720]] and [[S5L8920]].&lt;br /&gt;
&lt;br /&gt;
==[[S5L File Formats|Firmware File Formats]]==&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
'''Note''': [[iBoot]] on the S5L8720 can be downgraded, allowing any of these exploits to be used on future firmwares&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
===[[VROM (S5L8900)|Bootrom]]===&lt;br /&gt;
* [[pwnage|Pwnage 1.0 (Ramdisk + AppleImage2NORAccess)]]&lt;br /&gt;
* [[Pwnage 2.0|Pwnage 2.0 (DFU + Malformed Certificate)]]&lt;br /&gt;
&lt;br /&gt;
=== [[Kernel]] ===&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[IOSurface Kernel Exploit]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
=== [[Userland]] ===&lt;br /&gt;
* [[Symlinks]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[LibTiff]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[Mknod]] - Works up to [[iOS]] 1.1.2&lt;br /&gt;
* [[Dual Boot Exploit]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[PDF CFF Font Stack Overflow]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
==Boot Chain==&lt;br /&gt;
[[VROM]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[System|System Software]]&lt;br /&gt;
&lt;br /&gt;
One of the [[iPhoneLinux]] goals are to replace that Boot Chain after iBoot:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[VROM]]-&amp;gt;OpeniBoot-&amp;gt;Linux Kernel-&amp;gt;X Server-&amp;gt;Window Manager&lt;br /&gt;
&lt;br /&gt;
==Upgrade Process==&lt;br /&gt;
&lt;br /&gt;
=== [[Restore Mode]] ===&lt;br /&gt;
The common upgrade process chain is [[VROM]]-&amp;gt;[[DFU]]-&amp;gt;[[WTF]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Ramdisk]]-&amp;gt;[[Restore Mode]].&lt;br /&gt;
&lt;br /&gt;
=== [[DFU|DFU Mode]] ===&lt;br /&gt;
To flash an older version of the iPhone software you have to let your phone reside in [[DFU]]. In iTunes you have to press the option key (Mac) or the shift key (Windows) when pressing 'Restore' to be able to manually chose an [[IPSW File Format|IPSW]].&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf Technical Reference Manual: ARM1176JZF-S]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9389</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9389"/>
		<updated>2010-09-23T01:59:41Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 8600 by Dialexio (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Application Processor shared between the [[M68ap|iPhone]], [[N45ap|iPod touch]], and the [[N82ap|iPhone 3G]]. Not much is known about it through official sources. This processor is not used in any of the newest devices, being replaced by the [[S5L8720]] and [[S5L8920]].&lt;br /&gt;
&lt;br /&gt;
==[[S5L File Formats|Firmware File Formats]]==&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
'''Note''': [[iBoot]] on the S5L8720 can be downgraded, allowing any of these exploits to be used on future firmwares&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
===[[VROM (S5L8900)|Bootrom]]===&lt;br /&gt;
* [[pwnage|Pwnage 1.0 (Ramdisk + AppleImage2NORAccess)]]&lt;br /&gt;
* [[Pwnage 2.0|Pwnage 2.0 (DFU + Malformed Certificate)]]&lt;br /&gt;
&lt;br /&gt;
=== [[Kernel]] ===&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[IOSurface Kernel Exploit]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
=== [[Userland]] ===&lt;br /&gt;
* [[Symlinks]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[LibTiff]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[Mknod]] - Works up to [[iOS]] 1.1.2&lt;br /&gt;
* [[Dual Boot Exploit]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[PDF CFF Font Stack Overflow]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
==Boot Chain==&lt;br /&gt;
[[VROM (S5L8900)]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Firmware|System Software]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the [[iPhoneLinux]] goals are to replace that Boot Chain after iBoot:&lt;br /&gt;
&lt;br /&gt;
[[VROM (S5L8900)]]-&amp;gt;OpeniBoot-&amp;gt;Linux Kernel-&amp;gt;X Server-&amp;gt;Window Manager&lt;br /&gt;
&lt;br /&gt;
==Upgrade Process==&lt;br /&gt;
&lt;br /&gt;
=== [[Restore Mode]] ===&lt;br /&gt;
The common upgrade process chain is [[VROM]]-&amp;gt;[[DFU]]-&amp;gt;[[WTF]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Ramdisk]]-&amp;gt;[[Restore Mode]].&lt;br /&gt;
&lt;br /&gt;
=== [[DFU|DFU Mode]] ===&lt;br /&gt;
To flash an older version of the iPhone software you have to let your phone reside in [[DFU]]. In iTunes you have to press the option key (Mac) or the shift key (Windows) when pressing 'Restore' to be able to manually chose an [[IPSW File Format|IPSW]].&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf Technical Reference Manual: ARM1176JZF-S]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9388</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=9388"/>
		<updated>2010-09-23T01:59:19Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9360 by Dialexio (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Application Processor shared between the [[M68ap|iPhone]], [[N45ap|iPod touch]], and the [[N82ap|iPhone 3G]]. Not much is known about it through official sources. This processor is not used in any of the newest devices, being replaced by the [[S5L8720]] and [[S5L8920]].&lt;br /&gt;
&lt;br /&gt;
==[[S5L File Formats|Firmware File Formats]]==&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
'''Note''': [[iBoot]] on the S5L8720 can be downgraded, allowing any of these exploits to be used on future firmwares&lt;br /&gt;
* [[Restore Mode]] -  Works up to [[iOS]] 1.0.2&lt;br /&gt;
* [[Ramdisk Hack]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[diags]] - Works up to [[iOS]] 2.0 beta 5&lt;br /&gt;
* [[ARM7 Go]] - Works on [[iOS]] 2.1.1&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
===[[VROM (S5L8900)|Bootrom]]===&lt;br /&gt;
* [[pwnage|Pwnage 1.0 (Ramdisk + AppleImage2NORAccess)]]&lt;br /&gt;
* [[Pwnage 2.0|Pwnage 2.0 (DFU + Malformed Certificate)]]&lt;br /&gt;
&lt;br /&gt;
=== [[Kernel]] ===&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[IOSurface Kernel Exploit]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
=== [[Userland]] ===&lt;br /&gt;
* [[Symlinks]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[LibTiff]] - Works up to [[iOS]] 1.1.1&lt;br /&gt;
* [[Mknod]] - Works up to [[iOS]] 1.1.2&lt;br /&gt;
* [[Dual Boot Exploit]] - Works up to [[iOS]] 2.0 beta 3&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[PDF CFF Font Stack Overflow]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
==Boot Chain==&lt;br /&gt;
[[VROM (S5L8900)]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Firmware|System Software]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the [[iPhoneLinux]] goals are to replace that Boot Chain after iBoot:&lt;br /&gt;
&lt;br /&gt;
[[VROM (S5L8900)]]-&amp;gt;OpeniBoot-&amp;gt;Linux Kernel-&amp;gt;X Server-&amp;gt;Window Manager&lt;br /&gt;
&lt;br /&gt;
==Upgrade Process==&lt;br /&gt;
&lt;br /&gt;
=== [[Restore Mode]] ===&lt;br /&gt;
The common upgrade process chain is [[VROM]]-&amp;gt;[[DFU Mode]]-&amp;gt;[[WTF]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Ramdisk]]-&amp;gt;[[Restore Mode]].&lt;br /&gt;
&lt;br /&gt;
=== [[DFU Mode]] ===&lt;br /&gt;
To flash an older version of the iPhone software you have to let your phone reside in [[DFU Mode]]. In iTunes you have to press the option key (Mac) or the shift key (Windows) when pressing 'Restore' to be able to manually chose an [[IPSW File Format|IPSW]].&lt;br /&gt;
&lt;br /&gt;
==== Boot Chain ====&lt;br /&gt;
[[VROM]]-&amp;gt;[[DFU Mode]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf Technical Reference Manual: ARM1176JZF-S]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:/Applications/iOS_Diagnostics.app&amp;diff=9385</id>
		<title>Talk:/Applications/iOS Diagnostics.app</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:/Applications/iOS_Diagnostics.app&amp;diff=9385"/>
		<updated>2010-09-23T01:47:20Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9327 by Iemit737 (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://forums.macrumors.com/showthread.php?t=1008756&lt;br /&gt;
&lt;br /&gt;
Can someone take all this info and wikify it? [[User:Iemit737|Iemit737]] 23:26, 21 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Done. :) --[[User:Dialexio|&amp;lt;span style=&amp;quot;color:#C20; font-weight:normal;&amp;quot;&amp;gt;Dialexio&amp;lt;/span&amp;gt;]] 00:13, 22 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thanks! &lt;br /&gt;
I was kind of disappointed to learn that all iOS diagnostics is send logs to apple :/&lt;br /&gt;
Btw I'm pretty sure my laziness is a function of my ADD though so there :P [[User:Iemit737|Iemit737]] 00:33, 22 September 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9384</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9384"/>
		<updated>2010-09-23T01:15:03Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9381 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
-----&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9383</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9383"/>
		<updated>2010-09-23T01:14:47Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9380 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
----&lt;br /&gt;
I wish we can talk by email. How can I send my email to you in a secure way ?&lt;br /&gt;
&lt;br /&gt;
== contact ==&lt;br /&gt;
&lt;br /&gt;
I hang out in #iphone-hax on irc.osx86.hu if you have that&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9382</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9382"/>
		<updated>2010-09-23T01:14:36Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9379 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
----&lt;br /&gt;
I wish we can talk by email. How can I send my email to you in a secure way ?&lt;br /&gt;
&lt;br /&gt;
== contact ==&lt;br /&gt;
&lt;br /&gt;
I hang out in #iphone-hax on irc.osx86.hu if you have that&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9381</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9381"/>
		<updated>2010-09-23T01:14:14Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9378 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
----&lt;br /&gt;
I wish we can talk by email. How can I send my email to you in a secure way ?&lt;br /&gt;
&lt;br /&gt;
== contact ==&lt;br /&gt;
&lt;br /&gt;
I hang out in #iphone-hax on irc.osx86.hu if you have that&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9380</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9380"/>
		<updated>2010-09-23T01:14:01Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9376 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
-----&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9379</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9379"/>
		<updated>2010-09-23T01:13:47Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9377 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
-----&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9378</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9378"/>
		<updated>2010-09-23T01:13:30Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9375 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
-----&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9377</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9377"/>
		<updated>2010-09-23T01:13:18Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9374 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
----&lt;br /&gt;
I wish we can talk by email. How can I send my email to you in a secure way ?&lt;br /&gt;
&lt;br /&gt;
== contact ==&lt;br /&gt;
&lt;br /&gt;
I hang out in #iphone-hax on irc.osx86.hu if you have that&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9376</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9376"/>
		<updated>2010-09-23T01:13:08Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9373 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
----&lt;br /&gt;
I wish we can talk by email. How can I send my email to you in a secure way ?&lt;br /&gt;
&lt;br /&gt;
== contact ==&lt;br /&gt;
&lt;br /&gt;
I hang out in #iphone-hax on irc.osx86.hu if you have that&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9375</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9375"/>
		<updated>2010-09-23T01:12:39Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9372 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
----&lt;br /&gt;
I wish we can talk by email. How can I send my email to you in a secure way ?&lt;br /&gt;
&lt;br /&gt;
== contact ==&lt;br /&gt;
&lt;br /&gt;
I hang out in #iphone-hax on irc.osx86.hu if you have that&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9374</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9374"/>
		<updated>2010-09-23T01:12:26Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9371 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
-----&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9373</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9373"/>
		<updated>2010-09-23T01:12:05Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9370 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
-----&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9372</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9372"/>
		<updated>2010-09-23T01:11:27Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9369 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
-----&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9371</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9371"/>
		<updated>2010-09-23T01:10:27Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9368 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
----&lt;br /&gt;
I wish we can talk by email. How can I send my email to you in a secure way ?&lt;br /&gt;
&lt;br /&gt;
== contact ==&lt;br /&gt;
&lt;br /&gt;
I hang out in #iphone-hax on irc.osx86.hu if you have that&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9370</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9370"/>
		<updated>2010-09-23T01:09:50Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 9367 by QWAZ (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
----&lt;br /&gt;
I wish we can talk by email. How can I send my email to you in a secure way ?&lt;br /&gt;
&lt;br /&gt;
== contact ==&lt;br /&gt;
&lt;br /&gt;
I hang out in #iphone-hax on irc.osx86.hu if you have that&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9369</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9369"/>
		<updated>2010-09-23T01:09:15Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 2859 by Pod2g (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
----&lt;br /&gt;
I wish we can talk by email. How can I send my email to you in a secure way ?&lt;br /&gt;
&lt;br /&gt;
== contact ==&lt;br /&gt;
&lt;br /&gt;
I hang out in #iphone-hax on irc.osx86.hu if you have that&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9368</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9368"/>
		<updated>2010-09-23T01:08:02Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 2856 by Pod2g (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
-----&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9367</id>
		<title>User talk:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:Pod2g&amp;diff=9367"/>
		<updated>2010-09-23T01:06:43Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: Undo revision 2853 by Pod2g (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Size ==&lt;br /&gt;
&lt;br /&gt;
Hey, thanks for the input on arm7_go. I'll try i tout....but when you said before 0x00000048, what exactly did you mean? The thing is, anyway, when I assemble it with gas there is no opcode there that has 0x48 in it...or is this not what you mean?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
-chronic&lt;br /&gt;
&lt;br /&gt;
PS: If this works I'll mirror it in the a7go page, I am just putting it here because people can see it in recent changes anyway, and because you will get a notification at the top of the screen next time you come here telling you that you have new messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chronic,&lt;br /&gt;
&lt;br /&gt;
Here is the script I use to compile with gas (I am not expert... it is my experiments) :&lt;br /&gt;
&lt;br /&gt;
$ cat compile.sh&lt;br /&gt;
arm-elf-as.exe -mcpu=arm7 -o test.o test.asm&lt;br /&gt;
arm-elf-objcopy.exe -I elf32-little -O binary test.o test.payload&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Then for the moment, I modify test.payload to add its size as a little endian double word manually (using WinHex)&lt;br /&gt;
&lt;br /&gt;
For your example : the size of your code is 72 =&amp;gt; 0x48.&lt;br /&gt;
&lt;br /&gt;
So I add 48 00 00 00 just before the payload.&lt;br /&gt;
&lt;br /&gt;
After that I upload the payload with your iRecovery -f&lt;br /&gt;
&lt;br /&gt;
Then arm7_go :)&lt;br /&gt;
----&lt;br /&gt;
I just tested to make a payload with just a RET (MOV PC, LR) in it and it didn't crashed my ipod.&lt;br /&gt;
It means nothing but... I continue !&lt;br /&gt;
-----&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Fakeblank&amp;diff=9363</id>
		<title>Fakeblank</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Fakeblank&amp;diff=9363"/>
		<updated>2010-09-23T00:58:27Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: /* Other links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This exploit is in the [[Baseband Bootrom]]. There are hardware (testpoint) and software variations of this.&lt;br /&gt;
&lt;br /&gt;
==Credit==&lt;br /&gt;
gray, iProof, geohot, dinopio, lazyc0der, and an anonymous contributor&lt;br /&gt;
&lt;br /&gt;
==X-Gold 608==&lt;br /&gt;
The bootrom is located at 0x400000, and can be dumped via geohotz 5.8bl loader exploit&lt;br /&gt;
&lt;br /&gt;
This is the first code that runs on the baseband. It resides in internal ROM.&lt;br /&gt;
&lt;br /&gt;
==S-Gold 2==&lt;br /&gt;
The bootrom here is located at 0x400000. It was initially dumped using exploits in java on other [[S-Gold 2]] phones. It allows unsigned code to be uploaded using [[Baseband Bootrom Protocol]]. On non debug variants of the chip, it requires [[Fakeblank]] to run that code&lt;br /&gt;
&lt;br /&gt;
==X-Gold 608==&lt;br /&gt;
The bootrom is located at 0x400000, and can be dumped via geohotz 5.8bl loader exploit&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Fakeblank&amp;diff=9362</id>
		<title>Fakeblank</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Fakeblank&amp;diff=9362"/>
		<updated>2010-09-23T00:55:31Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This exploit is in the [[Baseband Bootrom]]. There are hardware (testpoint) and software variations of this.&lt;br /&gt;
&lt;br /&gt;
==Credit==&lt;br /&gt;
gray, iProof, geohot, dinopio, lazyc0der, and an anonymous contributor&lt;br /&gt;
&lt;br /&gt;
==X-Gold 608==&lt;br /&gt;
The bootrom is located at 0x400000, and can be dumped via geohotz 5.8bl loader exploit&lt;br /&gt;
&lt;br /&gt;
==Other links==&lt;br /&gt;
[http://wikee.iphwn.org/sgold_bootrom:fakeblank dev team description of fakeblank]&lt;br /&gt;
&lt;br /&gt;
[[Category:Baseband Exploits]]&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=/private&amp;diff=9359</id>
		<title>/private</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=/private&amp;diff=9359"/>
		<updated>2010-09-23T00:52:16Z</updated>

		<summary type="html">&lt;p&gt;QWAZ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
== Parents ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[/|Root]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Children ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[/private/etc| etc]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[/private/var| var]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>QWAZ</name></author>
		
	</entry>
</feed>