例子  我们需要查看手机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== ){
printf("-l 查看MachO信息\n");
return ;
} if (strcmp(argv[], "-l")!=) {
printf("-l 查看MachO信息\n");
return ;
}
//优酷视频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 ;
}
}

然后选择Release 真机编译 不选择真机执行命令会报下面的错误

Bad CPU type in executable

找到可执行文件 找到手机系统的SpringBoard 将它的权限导出 然后赋值个刚刚生成的可执行文件

然后将可执行文件放入手机的user/var/bin 目录下 然后给可执行文件赋予执行权限 chmod +x /usr/bin/ToolCL

至此命令工具类就开发完毕了

可能出现的问题 如果出现 Killed: 9  每次将可执行文件删除再放入新的即可解决

IOS 命令行工具开发的更多相关文章

  1. 用PHP开发命令行工具

    介绍 用过laravel开发过项目的都应该用过artisan,通过artisan我们可以在命令行中创建控制器类,Eloquent类等,今天我们将通过php来开发命令行工具 开发环境与工具 使用vagr ...

  2. [原创]使用命令行工具提升cocos2d-x开发效率(一)之TexturePacker篇

    TexturePacker是一个常用的制作sprite sheet的工具,它提供了很多实用的功能. 一般我们制作sprite sheet都是使用他的gui版本,纯手工操作,就像下面这张图示的一样. 刚 ...

  3. Expo大作战(六)--expo开发模式,expo中exp命令行工具,expo中如何查看日志log,expo中的调试方式

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,将全部来与官网 我猜去全部机翻+个人 ...

  4. APICloud提供适用于命令行的开发工具,开发更具极客精神!

    APICloud近期大动作不断,上周刚刚支持Atom编辑器,并推出核心开发工具库.本周又为开发者提供了一款超轻便的新开发工具--CLI工具! 操作系统: Mac/Windows/Linux nodej ...

  5. Apache Commons CLI 开发命令行工具示例

    概念说明Apache Commons CLI 简介 虽然各种人机交互技术飞速发展,但最传统的命令行模式依然被广泛应用于各个领域:从编译代码到系统管理,命令行因其简洁高效而备受宠爱.各种工具和系统都 提 ...

  6. Go使用flag包开发命令行工具

    flag包是Go语言标准库提供用来解析命令行参数的包,使得开发命令行工具更为简单 常用方法 1.flag.Usage 输出使用方法,如linux下ls -h的帮助输出 2.flag.Type(参数名, ...

  7. 【Nodejs】326- 从零开发一个node命令行工具

    本文由 IMWeb 社区授权转载自腾讯内部 KM 论坛.点击阅读原文查看 IMWeb 社区更多精彩文章. 什么是命令行工具? 命令行工具(Cmmand Line Interface)简称cli,顾名思 ...

  8. 来认识一下venus-init——一个让你仅需一个命令开始Java开发的命令行工具

    源代码地址: Github仓库地址 个人网站:个人网站地址 前言 不知道你是否有过这样的经历.不管你是什么岗位,前端也好,后端也罢,想去了解一下Java开发到底是什么样的,它是不是真的跟传说中的一样. ...

  9. [原创]使用命令行工具提升cocos2d-x开发效率(二)之CocosBuilder篇

    如果你正在使用CocosBuilder或者是其他基于CocosBuilder源码改装而成的工具为你的游戏搭建场景或者UI,那你一定要看看这篇文章:)   你是否已经厌倦了无聊的手工publish操作? ...

随机推荐

  1. DAO层设计

    一.类图分析 二.参考文档 ( JavaBean中DAO设计模式介绍)(附:设计源码) 三.类图设计文件 百度云盘:https://pan.baidu.com/s/1i5xaS8P[Power Des ...

  2. RPO攻击 & share your mind

    参考文章: https://xz.aliyun.com/t/2220 http://www.thespanner.co.uk/2014/03/21/rpo/ https://www.lorexxar. ...

  3. constexpr和常量表达式

    常量表达式:值不会改变并且在编译过程就能得到计算结果的表达式. 字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式. 一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同 ...

  4. Django中模板语音变量forloop

    forloop.counter   从1开始 forloop.counter0 从0开始 forloop.revcounter  倒序(表示循环中剩余项的整型变量.) forloop.revcount ...

  5. python,栈的小例子

    ''' 1.首先确认栈的概念,先进后出 2.初始化的时候如果给了一个数组那么就要将数组进栈 ''' class Stack: def __init__(self,start=[]): self.sta ...

  6. 析构函数 声明为protected

    1.如果一个类被继承,同时定义了基类以外的成员对象,且基类析构函数不是virtual修饰的, 那么当基类指针或引用指向派生类对象并析构(例如自动对象在函数作用域结束时:或者通过delete)时,会调用 ...

  7. 20165231 2017-2018-2 《Java程序设计》第1周学习总结

    本周学习的是一些java简单的基本编译,反编译和解释器.然后学习使用git了上传到git@osc进行代码托管,git是初学的,需要建立库然后远程上传代码,如果建立失败或者因为种种缘故无法上传的可以一个 ...

  8. 新版本微信导致的ios表单bug

    解决方法如下: $(document).delegate('input, textarea, select', 'blur', function(){ setTimeout(function(){ $ ...

  9. centos6.9安装crontab

    yum install vixie-cron crontabs //安装 chkconfig crond on //开机自启动 service crond start //启动 然后就是执行 cron ...

  10. undefined reference to symbol '_ZNK11GenICam_3_016GenericException17GetSourceFileNameEv'

    今天在编译DALSA二次开发的源码时,出现了如下错误: /usr/bin/ld: ./out/camera.o: undefined reference to symbol '_ZNK11GenICa ...