动态库的加载
其实动态库是缓存到我们手机的某个地方,但是他是怎样和我们的app进行链接的呢? 其实是通过这个
来进行链接的,其中他里面有动态编辑器和动态加载器,来进行链接
运用官方工具拆除出UIKit框架
1.具体的步骤我用一个图片来显示(前提是你要下载源码并且用xcode打开)其实我们也可以把dsc_extractor放到我们的/usr/local/bin目录下,我这里没有放,那么直接就用https://blog.csdn.net/q2243088760/article/details/直接执行。 我的执行结果为:
其实我们也可以把dsc_extractor放到我们的/usr/local/bin目录下,我这里没有放,那么直接就用https://blog.csdn.net/q2243088760/article/details/直接执行。 我的执行结果为:
首先我们破解好了,找一下UIKit的Mach-o文件,他在这个地方
你刚才命名的文件夹/System/Library/frameworks/UIKit.framework
会看到我们期望已久的Mach-o文件
将这个文件拖拽到到Hopper Disassembler中然后开始解析(怎样解析和安装插件我上面说到了),大约等了一个世纪,终于解析完成。找到那个文件happly死了。
关于Mach-o的简单介绍
简介: Mach-o其实是Mach object的缩写,是macios上存储程序、标准库格式。
-
常见的类型:
我们可以通过xcode进行来查看mach-o文件
-
查看mach-o文件的一些命令(怎样显示一个可执行文件的通用二进制文件,xcode选择release模式下真机运行app,找到.app文件显示包内容,最后找到可执行的文件) 1.查看可执行文件支持架构的信息
ipo -info
可执行文件或者file 可执行文件
2.剥离出一种架构
lipo 可执行文件 -thin 架构 -output 架构位置
3.组合二种架构
lipo -create 一种可执行文件路径(带名字) 一种可执行文件(带名字) -output 想要的可执行文件路径(带名字)
通用二进制文件 通用二进制文件就是包含多了多种架构的二进制文件或者说是包含了独立的二进制文件。
Mach-o的基本结构
他的官方的描述:developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/MachOTopics/0-Introduction/introduction.html 他的结构主要包含三个方面: 1.Header 主要包含一些文件类型,目标架构类型等等。 2.load Commands 描述文件在虚拟内存中的结构、布局等等。 3.Raw Segments Data 在load Commands中的Segments的原始数据。 他的结构图为:
一个可以查看Mach-o文件的工具
github.com/gdbinit/MachOView
我随便找一个可执行的文件看下
然后我们也可以看下具体的头信息
注意:值得说的是github上machview这个工具有一些bug,如果你想要一个没有bug的请联系我,我这有直接是dmg的。
dyld和Mach-o的关系 其实dyld主要是加载这几种类型的Mach-o文件 MH_EXCUTE MH_DYLIB MH_BonDLE APP的可执行文件、动态库文件都是有dyld进行加载的。 我们可以从dbld的源码中找到答案(前面有说在哪里下载dyld源码,然后找到dyld.cpp文件)
以上就是本篇文章【逆向破解思路和获取app的代码,脱壳操作(三)】的全部内容了,欢迎阅览 ! 文章地址:http://syank.xrbh.cn/news/2554.html 资讯 企业新闻 行情 企业黄页 同类资讯 首页 网站地图 返回首页 迅博思语资讯移动站 http://kaire.xrbh.cn/ , 查看更多