mac os x lipo 工具
lipo是管理Fat文件的工具,可以查看平台列表,提取、重新打包
dreamdeMac-mini:test dream$ lipo -info libtest001.a
Architectures in the fat file: libtest001.a are: armv7 arm64
lipo -thin 提取出ARM64平台文件
dreamdeMac-mini:test dream$ lipo -thin arm64 libtest001.a -output libtest001.ar m64
ar -t 查看:
dreamdeMac-mini:test dream$ ar -t libtest001.arm64
__.SYMDEF
7zAes-9CC0839951E86BC.o
...
使用 ar -x 解包
dreamdeMac-mini:arm64 dream$ ar -x ../libtest001.arm64
dreamdeMac-mini:arm64 dream$ ls
7zAes-9CC0839951E86BC.o LzmaEnc-A77677D9F23EB2B0.o
...
打包使用 ar -r 命令
重打包成FAT文件使用 lipo -create
可 man lipo 查看 -create 参数使用
解决问题
使用o-llvm的代码混淆方案。但目前项目静态库大致分成两部分,一部分是开源的加密压缩库,一部分自己编码的加密库,由于压缩算法那块实现逻辑比较复杂,混淆后会大大影响程序执行效率,同时对代码逻辑保护起不到任何作用,因些只需单独将自己编码的加密库混淆。
翻阅了一些资料,Xcode不能单独给.a的某个.o文件设置编译选项,也可能没找着材料。
因此通过 lipo 的方式,替换掉里面开源库的 .o 为未混淆版本。
步骤以下:
lipo 拆包
lipo -thin armv7 xxx.a -output xxx.armv7
lipo -thin arm64 xxx.a -output xxx.arm64
ar 解包
ar -x xxx.armv7
ar -x xxx.arm64
ar 打包
ar -r xxx.armv7 *.o
ar -r xxx.arm64 *.o
lipo 打包
lipo -create xxx.armv7 xxx.arm64 -output xxx.a
mac os x lipo 工具的更多相关文章
- mac os颜色拾取工具/软件/器推荐
软件名:ColorSnappe 目前我用的时1.1.0版本 该工具可以利用alt+command+c快捷键拾取颜色,拾取后可以自动把颜色代码放入剪切板 .我最喜欢它可以生成ios开发的代码,比如选择了 ...
- mac os下不同工具go env下gopath显示不同
设置 vim ~/.zshrc 设置 vim ~/.bash_profile
- VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- mac os develop
. 安装PCRE Download latest PCRE. After download go to download directory from terminal. $ cd ~/Downloa ...
- 【Xamarin 在Mac OS 上的部署安装环境】
******************没用Mac 的机子,也只能靠虚拟机了**********1 安装VMware 10 从网上下载即可2 下载MAC OS 10.9.5的安装镜像,网上有很多,最好使用 ...
- VMWare15 安装 Mac OS 系统
文章目录VMWare15 安装 Mac OS 系统安装环境工具准备准备工作MAC虚拟机设置启动MAC前准备工作安装系统安装VMware Tool注意事项参考链接安装环境WIN10VMware Work ...
- Mac系统下lipo, ar, nm等工具的使用简介
引言 开发第三方库时, 如果没有进行特殊处理, 很容易把其他第三方库的符号暴露出来, 导致链接时产生符号重复. 如下图所示 如果用户链接了其他版本的libjpeg, 会因为入口地址不正确让程序直接崩溃 ...
- Mac OS平台下应用程序安装包制作工具Packages的使用介绍
一.介绍 Windows下面开发好的应用程序要进行分发时有很多打包工具可供选择,如Inno Setup, InstallShield, NSIS, Advanced Installer, Qt Ins ...
- (转)Mac OS X写了个rm时将文件放入回收站的小工具
上次由于公司里机器要面临重装,开始仓皇地将Mac本里的文件scp到我的台式机上.忙乱之中本来要删除一个无用的文件夹的,结果用rm -rf的时候tab了一下,补全出来的文件都没看清就按下了回车,毫无疑问 ...
随机推荐
- [luogu P3195] [HNOI2008]玩具装箱TOY
[luogu P3195] [HNOI2008]玩具装箱TOY 题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆, ...
- ActiveMQ consumer按顺序处理消息
http://activemq.apache.org/exclusive-consumer.html producer发送消息是有先后顺序的,这种顺序保持到了broker中.如果希望消息按顺序被消费掉 ...
- jq 如何获取多选框选中的值
jquery如何获取多选框选中的值,有两种方法 1.通过id获取是否选中(单个) 1)引入jquery文件 2)Html设计如下 <div> <span>运动类:</sp ...
- jquery for&&each的用法
var arr=['姚明','易建联','张继科']: each&&for用法 $.each(arr,function(index,value){ document.write(ind ...
- learning ddr init power-up initialization sequence
- HTML5 ①
<!DOCTYPE html> <!--声明当前页面是H5--> html框架: <html> <head lang="en"> & ...
- .net core 在扩展中使用接口实例之IServiceProvider
在.net core 2.0中,我们使用的对象实例大多数都是通过构造函数依赖注入进来的,但那是在一般的类中使用. 如果需要在静态/扩展类中使用某些服务类的对象实例,可以使用如下方式: 1.新建一个Se ...
- RabbitMQ Dead Lettering(死信)
死信,顾名思义,就是死掉的消息,死掉的消息是会被一般的队列丢弃的.如果这些消息很重要,而我们又需要,怎么办?凡事都有一个退路,现在就有一种方法可将这些死信消息存下来,那就是DLX(Dead Lette ...
- react全家桶-服务端与客户端配置
全家桶内装有: react - github react-router - github redux - github react-redux - github react-router-redux ...
- list的四种遍历方式
1.手先增强for循环和iterator遍历的效果是一样的,也就说 增强for循环的内部也就是调用iteratoer实现的,但是增强for循环 有些缺点,例如不能在增强循环里动态的删除集合内容.不能获 ...