例子  我们需要查看手机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. bean的装配方式(注入方式,构造注入,setter属性注入)

    bean的装配方式有两种,构造注入和setter属性注入. public class User { private String username; private String password; ...

  2. bean的实例化方式

    spring中bean的实例化方式有三种,1.构造器实例化,2.实例工厂实例化,3.静态工厂实例化 1.构造器实例化方式 public class bean1 { public bean1() { } ...

  3. Java SE之正则表达式二:匹配

    package demo.regex; import java.util.regex.Pattern; /* 正则表达式:匹配 */ public class RegexMatchesDemo { / ...

  4. Chrome及Firefox插件

    注:以下所有工具都是笔者自己目前使用的 密码管理工具 lastpass 护眼工具 眼睛护航 待续……

  5. Hbase思维导图之调优

  6. LOJ #2542「PKUWC2018」随机游走

    $ Min$-$Max$容斥真好用 $ PKUWC$滚粗后这题一直在$ todolist$里 今天才补掉..还要更加努力啊.. LOJ #2542 题意:给一棵不超过$ 18$个节点的树,$ 5000 ...

  7. Delphi线程定时器TThreadedTimer及用法--还有TThreadList用法可以locklist

    Delphi线程定时器 - -人生如歌- - 博客园http://www.cnblogs.com/zhengwei0113/p/4192010.html (* 自己编写的线程计时器,没有采用消息机制, ...

  8. Javascript - ExtJs - Window组件

    1.所有组件都可以放入window,此时子组件不需要配置renderTo,只需要将它们作为window的items子项即可. 2.items子项必须先创建,最后创建window,否则子项不会显示. 3 ...

  9. ajax跨域请求のJSONP

    简单说了一下,JSON是一种基于文本的数据交换方式,或者叫做数据描述格式. JSON的优点: 1.基于纯文本,跨平台传递极其简单: 2.Javascript原生支持,后台语言几乎全部支持: 3.轻量级 ...

  10. JavaWeb - 目录

    参考:https://www.cnblogs.com/xdp-gacl/tag/JavaWeb%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/default.html?pag ...