<?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=Vega01</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=Vega01"/>
	<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/wiki/Special:Contributions/Vega01"/>
	<updated>2026-04-14T07:30:35Z</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=52798</id>
		<title>MobileDevice Library</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=MobileDevice_Library&amp;diff=52798"/>
		<updated>2016-05-07T19:24:36Z</updated>

		<summary type="html">&lt;p&gt;Vega01: Added information about mobiledevice console tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{float toc|right}}&lt;br /&gt;
MobileDevice Library is used by [[iTunes]] to transfer data between iPhone and computer over both USB and WiFi connections.&lt;br /&gt;
&lt;br /&gt;
=== PC Windows: iTunesMobileDevice.dll ===&lt;br /&gt;
* Location: &amp;lt;code&amp;gt;C:\Program Files\Common Files\Apple\Mobile Device Support\iTunesMobileDevice.dll&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;Program Files (x86)&amp;lt;/code&amp;gt; on 64-bit)&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;
* For [[iTunes]] 9.0, the location of CoreFoundation.dll is stored in '''InstallDir''' registry value under '''HKLM\SOFTWARE\Apple Inc.\Apple Application Support''' registry key.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X: MobileDevice.framework ===&lt;br /&gt;
* Location: /System/Library/PrivateFrameworks/MobileDevice.framework&lt;br /&gt;
* Export command: &amp;lt;code&amp;gt;nm /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Library Interfaces ===&lt;br /&gt;
* [http://www.libimobiledevice.org/ libimobiledevice] (provides the same functionality on GNU/Linux)&lt;br /&gt;
* [https://github.com/imkira/mobiledevice mobiledevice] (command line utility for interacting with MobileDevice Framework)&lt;br /&gt;
* [https://github.com/samdmarshall/SDMMobileDevice SDMMobileDevice] (OS X framework written in C that can be used interchangeably with Apple's private framework MobileDevice.framework)&lt;br /&gt;
* [https://bitbucket.org/tristero/mobiledeviceaccess MobileDeviceAccess] (similar to above, but written in Objective-C)&lt;br /&gt;
* [http://samdmarshall.com/media/MobileDevice.h MobileDevice.h] (old reverse engineered header for interfacing with MobileDevice library)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Private Functions ===&lt;br /&gt;
&lt;br /&gt;
==== Obtaining address ====&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. These methods differ slightly based on platform due to how dynamically linked libraries handle position independent code.&lt;br /&gt;
&lt;br /&gt;
=====Mac OS X (MobileDevice.framework)=====&lt;br /&gt;
A private function is not marked as exported in the mach-o symbol table. This means it cannot be called by simply linking against the library. To call unexported functions, the mach-o symbol table must be stepped through manually to find the offset of a particular function call. Calls can be verified by checking against the offset of the name inside the name table.&lt;br /&gt;
&lt;br /&gt;
=====Windows (MobileDevice.dll)=====&lt;br /&gt;
Unlike OS X's dynamically linkable libraries, Windows dynamic libraries do not support position independent code in the same manner. A private function will not have its name in the exported 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;
&lt;br /&gt;
&lt;br /&gt;
=== Known Error Codes ===&lt;br /&gt;
* kAMDSuccess = 0x0&lt;br /&gt;
* kAMDUndefinedError = 0xe8000001&lt;br /&gt;
* kAMDBadHeaderError = 0xe8000002&lt;br /&gt;
* kAMDNoResourcesError = 0xe8000003&lt;br /&gt;
* kAMDReadError = 0xe8000004&lt;br /&gt;
* kAMDWriteError = 0xe8000005&lt;br /&gt;
* kAMDUnknownPacketError = 0xe8000006&lt;br /&gt;
* kAMDInvalidArgumentError = 0xe8000007&lt;br /&gt;
* kAMDNotFoundError = 0xe8000008&lt;br /&gt;
* kAMDIsDirectoryError = 0xe8000009&lt;br /&gt;
* kAMDPermissionError = 0xe800000a&lt;br /&gt;
* kAMDNotConnectedError = 0xe800000b&lt;br /&gt;
* kAMDTimeOutError = 0xe800000c&lt;br /&gt;
* kAMDOverrunError = 0xe800000d&lt;br /&gt;
* kAMDEOFError = 0xe800000e&lt;br /&gt;
* kAMDUnsupportedError = 0xe800000f&lt;br /&gt;
* kAMDFileExistsError = 0xe8000010&lt;br /&gt;
* kAMDBusyError = 0xe8000011&lt;br /&gt;
* kAMDCryptoError = 0xe8000012&lt;br /&gt;
* kAMDInvalidResponseError = 0xe8000013&lt;br /&gt;
* kAMDMissingKeyError = 0xe8000014&lt;br /&gt;
* kAMDMissingValueError = 0xe8000015&lt;br /&gt;
* kAMDGetProhibitedError = 0xe8000016&lt;br /&gt;
* kAMDSetProhibitedError = 0xe8000017&lt;br /&gt;
* kAMDRemoveProhibitedError = 0xe8000018&lt;br /&gt;
* kAMDImmutableValueError = 0xe8000019&lt;br /&gt;
* kAMDPasswordProtectedError = 0xe800001a&lt;br /&gt;
* kAMDMissingHostIDError = 0xe800001b&lt;br /&gt;
* kAMDInvalidHostIDError = 0xe800001c&lt;br /&gt;
* kAMDSessionActiveError = 0xe800001d&lt;br /&gt;
* kAMDSessionInactiveError = 0xe800001e&lt;br /&gt;
* kAMDMissingSessionIDError = 0xe800001f&lt;br /&gt;
* kAMDInvalidSessionIDError = 0xe8000020&lt;br /&gt;
* kAMDMissingServiceError = 0xe8000021&lt;br /&gt;
* kAMDInvalidServiceError = 0xe8000022&lt;br /&gt;
* kAMDInvalidCheckinError = 0xe8000023&lt;br /&gt;
* kAMDCheckinTimeoutError = 0xe8000024&lt;br /&gt;
* kAMDMissingPairRecordError = 0xe8000025&lt;br /&gt;
* kAMDInvalidActivationRecordError = 0xe8000026&lt;br /&gt;
* kAMDMissingActivationRecordError = 0xe8000027&lt;br /&gt;
* kAMDWrongDroidError = 0xe8000028&lt;br /&gt;
* kAMDSUVerificationError = 0xe8000029&lt;br /&gt;
* kAMDSUPatchError = 0xe800002a&lt;br /&gt;
* kAMDSUFirmwareError = 0xe800002b&lt;br /&gt;
* kAMDProvisioningProfileNotValid = 0xe800002c&lt;br /&gt;
* kAMDSendMessageError = 0xe800002d&lt;br /&gt;
* kAMDReceiveMessageError = 0xe800002e&lt;br /&gt;
* kAMDMissingOptionsError = 0xe800002f&lt;br /&gt;
* kAMDMissingImageTypeError = 0xe8000030&lt;br /&gt;
* kAMDDigestFailedError = 0xe8000031&lt;br /&gt;
* kAMDStartServiceError = 0xe8000032&lt;br /&gt;
* kAMDInvalidDiskImageError = 0xe8000033&lt;br /&gt;
* kAMDMissingDigestError = 0xe8000034&lt;br /&gt;
* kAMDMuxError = 0xe8000035&lt;br /&gt;
* kAMDApplicationAlreadyInstalledError = 0xe8000036&lt;br /&gt;
* kAMDApplicationMoveFailedError = 0xe8000037&lt;br /&gt;
* kAMDApplicationSINFCaptureFailedError = 0xe8000038&lt;br /&gt;
* kAMDApplicationSandboxFailedError = 0xe8000039&lt;br /&gt;
* kAMDApplicationVerificationFailedError = 0xe800003a&lt;br /&gt;
* kAMDArchiveDestructionFailedError = 0xe800003b&lt;br /&gt;
* kAMDBundleVerificationFailedError = 0xe800003c&lt;br /&gt;
* kAMDCarrierBundleCopyFailedError = 0xe800003d&lt;br /&gt;
* kAMDCarrierBundleDirectoryCreationFailedError = 0xe800003e&lt;br /&gt;
* kAMDCarrierBundleMissingSupportedSIMsError = 0xe800003f&lt;br /&gt;
* kAMDCommCenterNotificationFailedError = 0xe8000040&lt;br /&gt;
* kAMDContainerCreationFailedError = 0xe8000041&lt;br /&gt;
* kAMDContainerP0wnFailedError = 0xe8000042&lt;br /&gt;
* kAMDContainerRemovalFailedError = 0xe8000043&lt;br /&gt;
* kAMDEmbeddedProfileInstallFailedError = 0xe8000044&lt;br /&gt;
* kAMDErrorError = 0xe8000045&lt;br /&gt;
* kAMDExecutableTwiddleFailedError = 0xe8000046&lt;br /&gt;
* kAMDExistenceCheckFailedError = 0xe8000047&lt;br /&gt;
* kAMDInstallMapUpdateFailedError = 0xe8000048&lt;br /&gt;
* kAMDManifestCaptureFailedError = 0xe8000049&lt;br /&gt;
* kAMDMapGenerationFailedError = 0xe800004a&lt;br /&gt;
* kAMDMissingBundleExecutableError = 0xe800004b&lt;br /&gt;
* kAMDMissingBundleIdentifierError = 0xe800004c&lt;br /&gt;
* kAMDMissingBundlePathError = 0xe800004d&lt;br /&gt;
* kAMDMissingContainerError = 0xe800004e&lt;br /&gt;
* kAMDNotificationFailedError = 0xe800004f&lt;br /&gt;
* kAMDPackageExtractionFailedError = 0xe8000050&lt;br /&gt;
* kAMDPackageInspectionFailedError = 0xe8000051&lt;br /&gt;
* kAMDPackageMoveFailedError = 0xe8000052&lt;br /&gt;
* kAMDPathConversionFailedError = 0xe8000053&lt;br /&gt;
* kAMDRestoreContainerFailedError = 0xe8000054&lt;br /&gt;
* kAMDSeatbeltProfileRemovalFailedError = 0xe8000055&lt;br /&gt;
* kAMDStageCreationFailedError = 0xe8000056&lt;br /&gt;
* kAMDSymlinkFailedError = 0xe8000057&lt;br /&gt;
* kAMDiTunesArtworkCaptureFailedError = 0xe8000058&lt;br /&gt;
* kAMDiTunesMetadataCaptureFailedError = 0xe8000059&lt;br /&gt;
* kAMDAlreadyArchivedError = 0xe800005a&lt;br /&gt;
* kAMDProhibitedBySupervision = 0xe8000083&lt;/div&gt;</summary>
		<author><name>Vega01</name></author>
		
	</entry>
</feed>