IOS 命令行工具开发
例子 我们需要查看手机APP里面的某个应用的架构
新建一个Single View App 的ios项目 ToolCL
然后在 main函数中加入以下代码
// // main.m // ToolCL // // Created by zsj on 2018/8/10. // Copyright © 2018年 ITpower. All rights reserved. // #import <UIKit/UIKit.h> #import <mach-o/loader.h> #import <mach-o/fat.h> /** @param argc 入参个数 @param argv 入参数组 argv【0】为可执行文件路径 */ int main(int argc, char * argv[]) { @autoreleasepool { if(argc==1 ){ printf("-l 查看MachO信息\n"); return 0; } if (strcmp(argv[1], "-l")!=0) { printf("-l 查看MachO信息\n"); return 0; } //优酷视频APP 的mach-o文件的地址 NSString *path = @"/private/var/mobile/Containers/Bundle/Application/72B419F5-0200-48D7-964C-20954B77E00B/Youkui4Phone.app/Youkui4Phone"; NSFileHandle *handle=[NSFileHandle fileHandleForUpdatingAtPath:path]; int length= sizeof(uint32_t); //读取前面4个字节(magic\number\魔数用来标识文件类型) NSData *magicData=[handle readDataOfLength:length]; //魔数 文件类型 uint32_t magicNumber; [magicData getBytes:&magicNumber length:length]; if (magicNumber==FAT_CIGAM ||magicNumber==FAT_MAGIC) { printf("FAT文件\n"); }else if (magicNumber==MH_MAGIC || magicNumber==MH_CIGAM){ printf("非64bit架构文件\n"); }else if (magicNumber==MH_MAGIC_64 || magicNumber==MH_CIGAM_64){ printf("64bit架构文件\n"); }else{ printf("读取失败"); } printf("magicNumber=0X%x\n",magicNumber); [handle closeFile]; return 0; } }
然后选择Release 真机编译 不选择真机执行命令会报下面的错误
找到可执行文件 找到手机系统的SpringBoard 将它的权限导出 然后赋值个刚刚生成的可执行文件
然后将可执行文件放入手机的user/var/bin 目录下 然后给可执行文件赋予执行权限 chmod +x /usr/bin/ToolCL
至此命令工具类就开发完毕了
可能出现的问题 如果出现 Killed: 9 每次将可执行文件删除再放入新的即可解决
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构