From ModMyiFone - Wiki
Located in:
/System/Library/PrivateFrameworks/MobileDevice.framework/Resources.
Running this with "AppleMobileDeviceHelper --pipe X Y" opens an input pipe X and an output pipe Y for communication with the iPhone.
iTunes uses this exclusively in order to communicate with the iPhone to restore it. Note that the data traveling over these pipes is unencrypted: presumably the MobileDevice framework handles the actual encryption stuff.
Objective-C portion of the binary:
/*
* Generated by class-dump 3.1.1.
*
* class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2006 by Steve Nygard.
*/
struct __CFRunLoop;
/*
* File: AppleMobileDeviceHelper
* Arch: Intel 80x86 (i386)
*/
@protocol ISyncFiltering <NSCoding>
- (BOOL)isEqual:(id)fp8;
- (id)supportedEntityNames;
- (BOOL)shouldApplyRecord:(id)fp8 withRecordIdentifier:(id)fp12;
@end
@protocol NSCoding
- (void)encodeWithCoder:(id)fp8;
- (id)initWithCoder:(id)fp8;
@end
@interface iPodSyncWaiter : NSObject
{
int _pid;
BOOL _keepRunning;
NSString *_clientIdentifier;
NSThread *_thread;
struct __CFRunLoop *_runloop;
}
- (id)initWithPid:(int)fp8 clientIdentifier:(id)fp12;
- (void)dealloc;
- (void)wait4AppleMobileSyncProcess:(id)fp8;
- (void)waiterThreadExited:(id)fp8;
- (void)run;
- (void)syncProgressNotificationCallback:(id)fp8 object:(id)fp12 info:(id)fp16;
- (void)syncPlanVersionMismatchNotificationCallback:(id)fp8 object:(id)fp12 info:(id)fp16;
@end
@interface IPodSyncHelperTool : NSObject
{
}
@end
@interface DataClassFilter : NSObject <ISyncFiltering>
{
NSString *_dataClassName;
NSArray *_entityNames;
id _criteria;
}
+ (id)createFilterWithDataClassName:(id)fp8 entityNames:(id)fp12 criteria:(id)fp16;
+ (id)filterForDataClassName:(id)fp8 fromFilters:(id)fp12;
+ (void)setDataClassHandler:(id)fp8;
- (id)initWithDataClassName:(id)fp8 entityNames:(id)fp12 criteria:(id)fp16;
- (void)dealloc;
- (id)initWithCoder:(id)fp8;
- (void)encodeWithCoder:(id)fp8;
- (BOOL)isEqual:(id)fp8;
- (id)supportedEntityNames;
- (BOOL)shouldApplyRecord:(id)fp8 withRecordIdentifier:(id)fp12;
- (id)arrayWithFilterFromExistingFiltersArray:(id)fp8;
- (id)dataClassName;
- (id)criteria;
- (void)setDataClassName:(id)fp8;
- (void)setEntityNames:(id)fp8;
- (void)setCriteria:(id)fp8;
@end
@interface ConcreteDataClassHandler : DataClassHandler
{
NSString *_dataClassName;
ISyncClient *_client;
ISyncSession *_session;
ISyncRecordSnapshot *_snapshot;
}
- (id)initWithDataClassName:(id)fp8 client:(id)fp12;
- (void)dealloc;
- (id)description;
- (id)dataClassName;
- (void)setSession:(id)fp8;
- (id)client;
- (id)session;
- (id)clearSnapshot;
- (id)snapshot;
- (id)getVersion;
- (BOOL)canSyncWithVersion:(id)fp8;
- (void)clientFinishedPushingRecords;
@end
@interface DataClassHandler : NSObject
{
}
+ (id)createHandlerForDataClassName:(id)fp8 client:(id)fp12;
+ (void)registerDataClassHandlerClass:(Class)fp8 forDataClassName:(id)fp12;
+ (id)defaultDataClassVersion;
- (id)getVersion;
- (BOOL)canSyncWithVersion:(id)fp8;
- (id)entityNamesToSync;
- (id)entityNamesInOrderToPull;
- (id)entityNamesOfRecordsToMutate;
- (id)mutateRecordFromTargetForSyncServices:(id)fp8 recordIdentifier:(id)fp12;
- (id)mutateRecordFromSyncServicesForTarget:(id)fp8 change:(id)fp12 recordIdentifier:(id)fp16 sendNow:(char *)fp20;
- (void)noteDeletedRecordFromSyncServices:(id)fp8;
- (void)noteTargetDeletedRecordWithIdentifier:(id)fp8;
- (void)noteTargetPushedRecord:(id)fp8 recordIdentifier:(id)fp12;
- (void)noteTargetPulledRecord:(id)fp8 recordIdentifier:(id)fp12 entityName:(id)fp16;
- (void)setFilteringCriteria:(id)fp8;
- (BOOL)shouldApplyRecord:(id)fp8 withRecordIdentifier:(id)fp12;
- (void)clientWillStartPushingRecords:(int)fp8;
- (void)clientFinishedPushingRecords;
- (void)noteClientRemappedRecordIdentifiers:(id)fp8;
- (void)clientFinishedPullingRecords;
- (id)updateFilterCriteriaAfterPushing;
- (id)updateFilterCriteriaAfterMingling;
- (void)clientCommittedPulledRecords;
- (id)dataClassName;
- (void)setSession:(id)fp8;
- (BOOL)refreshIfSlowSync;
@end