iOS开发手把手教你如何打包静态库.a文件

http://www.jianshu.com/p/e25e4b391a68

1、需求

     我们在开发iOS的工作中可能会自己开发一些.a静态库或者打包一下别人的第三方类库包装成自己的.a文件。有时候我们引入一些C++编译的第三方文件时可能会出现编译的错误,但是我们如果打包成.a静态库时就很少会出现OC与C++混编的错误,原因很简单.a静态库文件是编译好的二进制文件,二进制文件与二进制文件互相混编当然没有什么问题。好那么接下来我们开始学习打包吧!


2、实例

 接下来我们就以打包IOS开发中常用的网络请求库AFNetworking为实例。

 1>我们需要准备好需要打包的AFNetworking

2>接下来我们开始新建一个工程文件取名WBAFNetWorking

3>接下来我们把准备好的AFNetworking拖入工程中,注意文件放在一级目录下。

4>接下来我们选择出来需要暴露出来的头文件

我选择暴露出所有的头文件如下图

5>接下来我们配置下工程文件

6>配置完之后我们就可以选择真机进行运行在运行后我们找到生成的.a文件右键选择show in finder就可以了。

7.此时生成的.a文件只适用于真机,如果我们需要模拟器可以使用的.a文件用同样的方法在模拟器上运行下就可以了,而且网上有很多教程可以合并两个.a文件在这里就不进行重述了。

iOS 符号表恢复 & 逆向支付宝

https://mp.weixin.qq.com/s?__biz=MjM5NTIyNTUyMQ==&mid=2709545175&idx=1&sn=1c080685fabf2f24269c6e544e9213d7&scene=0&key=cf237d7ae24775e8a291c430bd754bd72b2faee6c9edbe6ff3d32afdfd41e008ef2567182b323d8febc85346baef67cb&ascene=0&uin=NDU1NzA2MTk1&devicetype=iMac+MacBookPro12%2C1+OSX+OSX+10.11.5+build(15F34)&version=11020201&pass_ticket=epsDy5NSjlDNy2GvOKYYr9q%2FLcd99r%2BiT33eJCGerkt4I0vhPQPPuJbOUec7diuD

用dumpdecrypted给App砸壳

http://iosre.com/t/dumpdecrypted-app/22

以下部分内容摘自《iOS应用逆向工程》第二版,以iOS 8为环境编写,应该也支持iOS 7和9,请大家注意。

在《iOS应用逆向工程》4.6.2节中,我们曾推荐使用iPhoneCake源的AppCrackr 1.7版给App砸壳。这种方式简单粗暴,省时省力,但正是因为它过于方便有木有,导致几乎所有iDevice用户都可轻松上手,随便亵玩,所以不少用户都拿它来破解程序,而不是学习《iOS应用逆向工程》,简直可以说是婶可忍叔不可忍!这也导致了iOS越狱开发社区普遍认为这个软件助长了盗版的气焰,没有脱离低级趣味,对iPhoneCake源进行了强烈谴责,责令其限期整改。迫于压力,iPhoneCake在前段时间将AppCrackr下架,而书中提到的xsellize源中的AppCrackr则是1.5旧版,已不能在高级系统中使用。所以,为了响应业界反盗版的呼声,提倡毛主席“自己动手丰衣足食”的革命精神,让“砸壳”这件事恢复单纯的研究目的,在这里我们会使用更偏geek一些的dumpdecrypted方式来给App砸壳,不再推荐AppCrackr、Clutch、Crackulous等纯UI方式。由于dumpdecrypted刚经历过一次大升级,目前网上可以找到的使用教程均已过期,所以这里我们以一个虚构的TargetApp.app为例,手把手带大家进行一次完整的“砸壳 + class-dump”,请大家准备板凳瓜子汽水,开始围观。如果能对着电脑,边看边做,善莫大焉!楼猪才疏学浅,如有纰漏,敬请斧正,洗耳恭听,污言秽语,免开尊口,感谢支持!

下载dumpdecrypted的源码

源码下载地址是“https://github.com/stefanesser/dumpdecrypted/archive/master.zip514”,下载后请将其解压至你习惯的位置,例如楼猪为/Users/snakeninny/Code/,解压后生成/Users/snakeninny/Code/dumpdecrypted-master/

编译源码

上面的make命令执行完毕后,会在当前目录下生成一个dumpdecrypted.dylib文件,这就是我们等下砸壳所要用到的榔头。此文件生成一次即可,以后可以重复使用,下次砸壳时无须再重新编译。

用ps命令定位待砸壳的可执行文件

因为iOS上只打开了一个StoreApp,所以唯一的那个含有/var/mobile/Containers/Bundle/Application/字样的结果就是TargetApp可执行文件的全路径。

用Cycript找出TargetApp的Documents目录路径。

将dumpdecrypted.dylib拷贝到Documents目录下。拷贝命令如下:

这里采用的是scp方式,也可以使用iFunBox等工具来操作。

开始砸壳

实际操作起来就是:

当前目录下会生成TargetApp.decrypted,即砸壳后的文件:

赶紧把砸壳后的文件拷贝到OSX上备用吧,class-dump、IDA等工具已经迫不及待啦。
以上6步还算简洁明了,但可能会有朋友问,为什么要把dumpdecrypted.dylib拷贝到Documents目录下操作?
问得好。我们都知道,StoreApp对沙盒以外的绝大多数目录没有写权限。dumpdecrypted.dylib要写一个decrypted文件,但它是运行在StoreApp中的,与StoreApp的权限相同,那么它的写操作就必须发生在StoreApp拥有写权限的路径下才能成功。StoreApp一定是能写入其Documents目录的,因此我们在Documents目录下使用dumpdecrypted.dylib时,保证它能在当前目录下写一个decrypted文件,这就是把dumpdecrypted.dylib拷贝到Documents目录下操作的原因。
最后来看看如果不放在Documents目录下,可能会出现什么问题:

这里errno的值是1,即Operation not permitted,砸壳失败。

class-dump丫

可以明白吧?没关系,慢一点,多看几遍,理一理,还是有问题的话,在下面留言啦!