逆向破解思路和获取app的代码,脱壳操作(二)

代码的编译过程

简单来说我们的oc经过编译会生成汇编语言,汇编语言经过编译最后生成机器语言,其中机器语言和汇编语言是一一对应的也就是说,我们的机器语言可以反编译生成汇编语言。

但是从上图中也看到了,我们的汇编是不能生成我们唯一的oc语言的,怎么办?其实我们可以借助工具来将我们的汇编生成oc,相当于是伪代码,这样的话我们可以大概来研究一下别人的代码,如果我们完全100%还原oc代码个人觉得也不太现实,因为苹果的加密机制我觉得做的还是很ok的。

借助Hopper Disassembler来将我们的汇编代码进行还原。

1.将我们的Mach-o文件拖拽到Hopper Disassembler中,需要等待进度条完毕。

2.展示结果如下

5.相信大家按部就班的做就可以了,一些快捷键的展示如下:

7.按照上边我给你介绍的文章,我已经成功把我这个项目的(.m)文件全部导出来了,如下图:

首先xcode报错我们不用管,但是很多人还是想说 还是看不懂,怎么还是汇编感觉,其实个人觉得完全拆成oc是不现实的,我们可以通过他的大概加上我们的猜测进行猜测。(我们之前已经找到.h文件了,再次找到了.m文件加上我们的项目经验来进行破解),比如我想查看一个对象怎么实现的

结合自己的经验进行分析。

动态库共享缓存

1.运用之前的方法,我们连接上我们的手机,查看UIKit这个库位置

但是我们找啊找 也找不到我们的UIKit这个库,那他到底去哪里了呢? 其实我们苹果从ios3.1开始就使用动态库共享缓存的机制。具体大致的意思是:他会把我们苹果工程师(我说的是苹果的,不是我们现在的普通程序员)写好的UIKit、CoreGraphics库等等集中放到手机中的一个地方,然后有dyld动态链接。那么他这样做的明显的一个好处就是:节省我们手机的内存,更大的提高开发效率。用一张图来解释就是:

那么他的动态库的缓存文件的在哪里? 他在

/System/Library/Caches/com.apple.dyld/dyld_shared_cache_armX
顺便给大家说下ios架构的问题

现在我们来找一下UIKit库所在的位置,我们找到这个

我们可以看到很大的两个包一个是64位架构的,一个是armv7s架构的,我现在xcode是12的 大家根据上图,知道为什么没有armv7架构的了吧,因为5基本没人用了,xcode也基本对他不支持了。(顺便说一句,用ifunbox将这个包导入到mac,不用直接拖那样会少很多东西,点击这个包右键->拷贝到mac) 将第一个包拖进去安装好的Hopper Disassembler,直接输入UIkit,选择framework那个

然后直接next,点击ok

接下来就是漫长的等待中,直到他下面出现完成的语句。

但是如果你是Hopper Disassembler3的话 他是解析不出来的,Hopper Disassembler4是可以的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值