1、逆向工程的要求html
我的建议: 最好了解下若是进iOS系统的安全模式,由于有时候万一系统搞坏了,能够进入安全模式卸载掉有问题的插件。sql
若是你有更好的建议或者对这篇文章有不满的地方, 请联系我, 我会进行修改,
联系我时,请备注iOS直播类APP开发流程解析(技术交流群:763164022)
最后:
祝你们学习愉快~谢谢~
复制代码
2、iOS 应用逆向工程的做用安全
通常的 App 防御,感受就像是一个 , 将 App 的 MVC 布置在城堡内部 , 外围圈上厚厚的 ,看上去易守难攻。 可是当咱们站到高处,在天空中俯瞰这个 App 所在的城堡,它的内部结构就再也不是秘密。 若是咱们站在巨人的角度,那么全部的 Objective-C 函数定义、全部的 property、全部的导出函数、全部的全局变量、全部的逻辑将彻底暴露在咱们面前。bash
iOS 逆向工程主要有两个做用:app
3、安全相关的iOS逆向工程框架
4、iOS应用逆向工具ide
1、class-dum函数
简介: 顾名思义,就是用来导出目标对象的class信息的工具,私有方法声明也能导出来。工具
原理: 利用 Objective-C语言的 runtime 特性,将存 在Mach-O 文件中的头文件信息提 出来,并生成对应的 .h 文件。学习
使用方法: 1,下载而后将class-dump 复制到“ /usr/bin”目录下。 2,执行sudo chmod 777 /usr/bin/class-dump”命令赋予其执行权限。 3,class-dump执行:
class-dump -S -s -H /Applications/Calculator.app -o
/Users/zhangdasen/Desktop/test
复制代码
4,上面一段代码就是导出Mac下计算器app的头文件,到桌面test文件夹,而且排序,class-dump的一些参数,你们能够本身在命令行输入class-dump而后回车就有相关说明。
使用注意
从 AppStore 下 的 App 都是通过加密的,可执行文件被加上了一层"壳"。 class-dump 应付不了这样的文件,此时使用 class-dump 看上去会“失效”。还得先用别的工具把壳砸开才行,这个后面会说到。
2、Theos越狱开发工具包
简介
Theos:是一个越狱开发工具包,由iOS越狱界知名人士Dustin Howett(@DHowett)开发并分享到 GitHub 上。
iOSOpenDev:是整合在 Xcode里的越狱开发工具, 熟悉Xcode 的朋友可能会对它更感兴趣。但逆向工程接触底层知识较多,不少东西没法自动化,所以推荐使用整合度并不算高的 Theos,当你手动完成一个又一个练习时,对逆向工程的理解必定会更深。
Theos的用法介绍:
更改工做目录
更改工做目录至经常使用的 iOS 工程目录(如 “ /Users/zhangdasen/Code/”) 注:为什么要作这一步呢,由于使用Theos建立的工程,是你在哪一个目录执行的nic.pl启动的,就会在建立完成后在这个目录生成建立的Theos项目。
建立工程 终端输入“/opt/theos/bin/nic.pl”,启动 NIC(New Instance Creator)
工程文件说明 建立好工程就会生成四个文件: Makefile、Tweak.xm、control、iOSREProject.plist 下面进行简单说明。
Makefile
Makefile 文件指定工程用到的文件、框架、库等信息,将整个过程自动化,下图为里面内容说明。
iOSREProject_PRIVATE_FRAMEWORKS = private framework name
复制代码
iOSREProject_LDFLAGS = -lz –lsqlite3.0 –dylib1.o
复制代码
Tweak.xm
用 Theos 建立 tweak 工程, 认生成的源文件是 Tweak.xm。 若是后缀名是单独一个“ x”,说明源文件支持 Logos 和 C 语法; 若是后缀名是“ xm ”,说明源文件支持 Logos 和 C/C++ 语法,与“ m ”和“ mm ”的区别相似。 Tweak.xm 语法众多,在这里简单介绍一些 ● %hook 指定须要 hook 的 class, 必须以 %end 结尾
%hook SpringBoard
- (void)_menuButtonDown:(id)down {
NSLog(@"You've pressed home button.");
%orig; // call the original _menuButtonDown:
}
%end
复制代码
● %orig该指 在 %hook 内部使用,执行被 (hook)的 数的原始代码,以下:
%hook SpringBoard
- (void)_menuButtonDown:(id)down {
NSLog(@"You've pressed home button.");
%orig; // call the original _menuButtonDown: }
%end
复制代码
还能够利用 %orig 更改原始 数的参数,例如:
%hook SBLockScreenDateViewController
- (void)setCustomSubtitleText:(id)arg1 withColor:(id)arg2 {
%orig(@"iOS 8 App Reverse Engineering", arg2); }
%end
复制代码
control文件
control文件 录了deb包管理系统所需的基本信息,会被打包进deb包里。 iOSREProject 里 control 文件的内容以下:
iOSREProject.plist文件
简单来讲就是里面描述了tweak 的做用范围,也就是须要做用的APP的bundle identifier。
也就是在建立项目的时候填写的
iOS逆向知识,变幻无穷,无穷无尽,须要学习的太多了,国内文章知识仍是比较少,逆向的书籍也是比较少,逆向开发方面的进步也须要咱们国人也要努力。