iphone开发中使用动态库(dylib)和动态加载framework (获取iphone的IMSI和设置飞行模式)
在iphone上使用动态库的多为dylib文件,这些文件使用标准的dlopen方式来使用是可以的。那相同的在使用framework文件也可以当做动态库的方式来动态加载,这样就可以比较自由的使用apple私有的framework了。
dlopen是打开库文件
dlsym是获取函数地址
dlclose是关闭。
当然,要使用这种方式也是有明显缺陷的,那就是你要知道函数名和参数,否则无法继续。
私有库的头文件可以使用class dump的方式导出来,这个详细的就需要google了。
下面是两个使用的例子
1: 这是使用coreTelephony.framework获取imsi
#define PRIVATE_PATH "/System/Library/PrivateFrameworks/CoreTelephony.framework/CoreTelephony"
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
#if !TARGET_IPHONE_SIMULATOR
void *kit = dlopen(PRIVATE_PATH,RTLD_LAZY);
NSString *imsi = nil;
int (*CTSIMSupportCopyMobileSubscriberIdentity)() = dlsym(kit, "CTSIMSupportCopyMobileSubscriberIdentity");
imsi = (NSString*)CTSIMSupportCopyMobileSubscriberIdentity(nil);
dlclose(kit);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"IMSI"
message:imsi
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
#endif
}
2:这是使用SpringBoardServices.framework来设置飞行模式开关
#ifdef SUPPORTS_UNDOCUMENTED_API
#define SBSERVPATH "/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices"
#define UIKITPATH "/System/Library/Framework/UIKit.framework/UIKit"
// Don't use this code in real life, boys and girls. It is not App Store friendly.
// It is, however, really nice for testing callbacks
+ (void) setAirplaneMode: (BOOL)status;
{
mach_port_t *thePort;
void *uikit = dlopen(UIKITPATH, RTLD_LAZY);
int (*SBSSpringBoardServerPort)() = dlsym(uikit, "SBSSpringBoardServerPort");
thePort = (mach_port_t *)SBSSpringBoardServerPort();
dlclose(uikit);
// Link to SBSetAirplaneModeEnabled
void *sbserv = dlopen(SBSERVPATH, RTLD_LAZY);
int (*setAPMode)(mach_port_t* port, BOOL status) = dlsym(sbserv, "SBSetAirplaneModeEnabled");
setAPMode(thePort, status);
dlclose(sbserv);
}
#endif
iphone开发中使用动态库(dylib)和动态加载framework (获取iphone的IMSI和设置飞行模式)相关推荐
- 获取iphone的IMSI和设置飞行模式
iphone开发中使用动态库(dylib)和动态加载framework (获取iphone的IMSI和设置飞行模式) 在iphone上使用动态库的多为dylib文件,这些文件使用标准的dlopen方 ...
- iOS Hacker 重签名实现无需越狱注入动态库 dylib
iOS Hacker 重签名实现无需越狱注入动态库 dylib 一.获取 ipa 文件 iOS 的应用都是打包成 ipa 的文件格式,ipa 文件实际上就是 zip 格式的文件,通过 unzip 可以 ...
- java查看动态库路径_Linux动态库(.so)搜索路径
众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib.动态库被创建后,一般都复制到这两个目录中.当程序执行时需要某动态库,并且该 动 态库还未加载到内存中,则系统会自动到这两个默认搜索 ...
- 学习iPhone开发中 sqlite3的使用
由于我主要负责我们小组项目数据库模块的部分所以这几天都一直在研究在iphone中最为常用的一个简单数据库sqlite,自己也搜集很多资料,因此在这里总结一下这几天的学习成果: 1.Sqlite操作简明 ...
- iOS Hacker 动态库 dylib 注入
iOS Hacker 动态库 dylib 注入 很多情况下我们希望自己写的代码能够在其他应用中运行,如果代码简单的话,可以写 Tweak 或者使用 Cycript.但如果代码多的话,那最好是写一个动态 ...
- 在Linux中创建静态库.a和动态库.so
转自:http://www.cnblogs.com/laojie4321/archive/2012/03/28/2421056.html 在Linux中创建静态库.a和动态库.so 我们通常把一些公用 ...
- iPhone开发中的技巧整理(四)
iphone开发笔记 退回输入键盘 - (BOOL) textFieldShouldReturn:(id)textField{ [textField resignFirstResponder]; } ...
- 拒绝内存泄露,谈一些纯代码iPhone开发中的内存管理
笔者刚从学校出来,算上实习期,接触iPhone开发已有半载,也算是对iPhone(iOS)开发中的内存管理有了些认识,由于开发中一直没有用Interface Builder,本文就谈谈纯代码iPhon ...
- iPhone开发中现文件的增加 删除和查询
iPhone开发中,我们常常用到一些对于文件的增加,删除和查询,这些基本的功能对于开发者来说非常的重要,而且非常实用.本文给大家介绍一下如何实现这几个具体的功能. //创建文件 -(void)Crea ...
最新文章
- 《Nmap渗透测试指南》—第1章1.2节Windows下安装Nmap
- php如何进修,PHP进修材料汇总华文_PHP教程
- 【STM32】光敏传感器示例
- 分布式任务调度平台一站式讲解
- C语言 位段(位域)总结
- T2 Funcin T1,out T2(T1 arg)
- quartz配置参数说明
- 在Docker和Kubernetes上运行MongoDB微服务
- java后台导出word文档正文、表格、图片
- 阿里褚霸专访-揭秘技术男开挂升级的职业路径(回帖有奖)
- PTA 厘米换算英尺英寸
- linux编译trinitycore,[MAC] 编译安装和测试《魔兽世界》模拟服务端 TrinityCore
- 华为电脑怎么把虚拟化打开_【解决方案】华为虚拟化解决方案
- 宝贝对不起,放下工作养不起你,拿起工作陪不了你…
- 如何将几个pdf合并成一个pdf?教你pdf合并最快速的方法
- 如何使用aircrack破解wifi密码
- uni-app 中文档阅读倒计时
- 分享:从华为转正到离职
- 将 Word 转换为 Markdown格式 【详细教程】
- 光纤传输网和接入网一些知识
热门文章
- 计算机网络进阶 ---- 网络类型 ---- 二层封装协议 ---- HDLC ---- PPP ---- pap认证 ---- chap认证 ---- 详解
- AutoCAD按坐标打印图纸
- go 日志库zap的使用
- Windows电脑双屏设置不一样的壁纸
- 【收藏】最全计算机网络基础思维导图
- 北京交通大学计算机考研02103复试经验分享
- 服务器微信了早上好,每天问候早上好的微信话语
- protobuf网络传输协议的优缺点
- [HY000][1822] Failed to add the foreign key constraint. Missing index for constraint ‘fk_com’
- BetaFlight飞控AOCODARC-F7MINI固件编译