IOS 动态hook API 测试记录

本测试均在IOS8.3上

一、coreTelephony.framework

1:CTTelephonyCenterAddObserver:来电监听

函数原型是:void CTTelephonyCenterAddObserver(CFNotificationCenterRef center, const void *observer, CFNotificationCallback callBack, CFStringRef name, const void *object, CFNotificationSuspensionBehavior suspensionBehavior);

这是一个C函数 hook如下


IOS 动态hook API 测试记录_第1张图片

hook成功 log如下


2:CTCallCopyAddress :来电号码获取

NSString *CTCallCopyAddress(CFAllocatorRef, CTCall *call); 返回值为来电号码

这是一个C函数 hook如下


IOS 动态hook API 测试记录_第2张图片

hook成功 log如下


3:CTCallDisconnect:来电挂断监听

函数原型:void CTCallDisconnect(CTCall *call);

这是一个C函数 hook如下


IOS 动态hook API 测试记录_第3张图片

hook成功 log如下


二、MobileCoreServices.framework

allApplictaions 这是一个类函数 所属的类是LSApplicationWorkspace

函数原型是: - (id)allApplications;

hook过程如下


IOS 动态hook API 测试记录_第4张图片

hook成功 log如下


IOS 动态hook API 测试记录_第5张图片

三、MobileInstallation.framework

MobileInstallationInstall

int MobileInstallationInstall(CFStringRef path, CFDictionaryRef parameters, MobileInstallationCallback callback, void *unknown);

添加正确的framework路径后 仍然报错


IOS 动态hook API 测试记录_第6张图片

原来因为

IOS8之后MobileInstallationUninstallForLaunchServices、MobileInstallationInstallForLaunchServices 、IOS8中没有MobileInstallationLookup

IOS8之前 MobileInstallationUninstall、MobileInstallationInstall、MobileInstallationLookup

其中IOS8之后 可用MobileCoreServices.framework的allApplications 替代

IOS8之后的头文件为


IOS 动态hook API 测试记录_第7张图片

1:MobileInstallationUninstallForLaunchServices

函数原型为:MobileInstallationUninstallForLaunchServices(CFStringRef bundleIdentifier, CFDictionaryRef parameters, MobileInstallationCallback callback, void *unknown)

作用为 程序卸载的监控 是个C函数


hook成功 log为


2:MobileInstallationInstallForLaunchServices

函数原型为int MobileInstallationInstallForLaunchServices(CFStringRef bundlePath, CFDictionaryRef parameters, void *unknown1, void *unknown2)

作用为 程序安装的监控 是个C函数


IOS 动态hook API 测试记录_第8张图片

此处hook 是越狱后系统不稳定的原因 log为


IOS 动态hook API 测试记录_第9张图片

四、SpringBoardServices.framework

SBSSpringBoardServerPort

int SBSSpringBoardServerPort();

头文件里的形式是:mach_port_t SBSSpringBoardServerPort(); 功能为:获取与springboard通信的端口 与下列函数配合使用

SBSCopyApplicationDisplayIdentifiers 函数原型:NSArray* SBSCopyApplicationDisplayIdentifiers(mach_port_t* port, BOOL runningApps,BOOL debuggablet); 功能为:获取当前所有正在活动的app 的bunde id

SBSCopyFrontmostApplicationDisplayIdentifier 函数原型为NSString * SBSCopyFrontmostApplicationDisplayIdentifier(); 作用为:获取当前前台的app 的bundle ID

SBSLaunchApplicationWithIdentifier 函数原型为:intSBSLaunchApplicationWithIdentifier(CFStringRef identifier, Boolean suspended)  作用为:静默启动一个指定bundle id的app

hook无效 原因在于 需要有一个app来实际的调用这些函数

app调用为


IOS 动态hook API 测试记录_第10张图片


hook为


IOS 动态hook API 测试记录_第11张图片

hook结果为


IOS 动态hook API 测试记录_第12张图片

hook有效 但hook的数据无效 原因在于 在基于IOS9的编译器,IOS8的环境下 这种app的调用可能哪里不正确 与hook无关

五、Security.framework

不知道为何 这个库 class dump不出来

SSLRead,SSLWrite 路径为

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Security.framework/Headers/SecureTransport.h

两函数的原型为

OSStatus SSLRead(SSLContextRef context,void* data,size_t dataLength,size_t* processed);

OSStatus SSLWrite(SSLContextRef context,const void * __nullable data,size_t dataLength,size_t* processed);

均为C函数 功能为https协议的数据写入和读出

hook过程为


IOS 动态hook API 测试记录_第13张图片


由于机型上暂未有https的数据写入写出 所以log上暂时未能看到数据  这个需要后续做相关测试

SecItemCopyMatching、SecItemAdd、SecItemUpdate、SecItemDelete、SecIdentityCopyCertificate、SecIdentityCopyPrivateKey等均需要做样本做测试


IOS 动态hook API 测试记录_第14张图片

六、MobileKeyBag.framework

这个class dump里也没有 但是 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/有 不过是tdb的格式

1:MKBUnlockDevice 函数原型是 int MKBUnlockDevice(NSData* passcode, int flags);

是个C 函数 作用是解锁的过程

hook如下


IOS 动态hook API 测试记录_第15张图片

hook成功 结果如下 解锁密码得到是1234


2:MKBGetDeviceLockState 函数原型是int MKBGetDeviceLockState();

hook失败 导致SpringBoard进入安全模式 原因目前不明

3:MKBDeviceUnlockedSinceBoot 函数原型是:int MKBDeviceUnlockedSinceBoot();

C函数 返回自从启动以来 解锁的次数

hook如下


IOS 动态hook API 测试记录_第16张图片

hook成功 如下


你可能感兴趣的:(IOS 动态hook API 测试记录)