iOS逆向工程- 工具详解

前言

一、逆向工程的要求

  1. 具备丰富的 iOS 开发经验
  2. 最好能非常熟悉 iOS 设备的硬件构成,iOS 系统的运行原理。
  3. 拿到任意一个 App 之后能够大致推断出它的项目规模和使用的技术,比如它的MVC模型,是怎么建立的,引用了哪些 framework 和经典的开源代码。

个人建议: 最好了解下如果进iOS系统的安全模式,因为有时候万一系统搞坏了,可以进入安全模式卸载掉有问题的插件。

如果你有更好的建议或者对这篇文章有不满的地方, 请联系我, 我会进行修改,
联系我时,请备注iOS直播类APP开发流程解析(技术交流群:763164022)
最后:
祝大家学习愉快~谢谢~
复制代码

二、iOS 应用逆向工程的作用

一般的 App 防护,感觉就像是一个 , 将 App 的 MVC 布置在城堡内部 , 外围圈上厚厚的 ,看上去易守难攻。 但是当我们站到高处,在天空中俯瞰这个 App 所在的城堡,它的内部结构就不再是秘密。 如果我们站在巨人的角度,那么所有的 Objective-C 函数定义、所有的 property、所有的导出函数、所有的全局变量、所有的逻辑将完全暴露在我们面前。

iOS 逆向工程主要有两个作用:

  1. 分析目标程序,拿到关键信息,可以归类于安全相关的逆向工程;
  2. 借鉴他人的程序功能来开发自己的软件。

三、安全相关的iOS逆向工程

  • 评定安全等级
  • 逆向恶意软件
  • 检查软件后门
  • 去除软件使用限制

四、iOS应用逆向工具

一、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 看上去会“失效”。还得先用别的工具把壳砸开才行,这个后面会说到。

二、Theos越狱开发工具包

简介

Theos:是一个越狱开发工具包,由iOS越狱界知名人士Dustin Howett(@DHowett)开发并分享到 GitHub 上。

iOSOpenDev:是整合在 Xcode里的越狱开发工具, 熟悉Xcode 的朋友可能会对它更感兴趣。但逆向工程接触底层知识较多,很多东西无法自动化,因此推荐使用整合度并不算高的 Theos,当你手动完成一个又一个练习时,对逆向工程的理解一定会更深。

Theos的用法介绍:

  1. 更改工作目录

  2. 更改工作目录至常用的 iOS 工程目录(如 “ /Users/zhangdasen/Code/”) 注:为何要做这一步呢,因为使用Theos创建的工程,是你在哪个目录执行的nic.pl启动的,就会在创建完成后在这个目录生成创建的Theos项目。

  3. 创建工程 终端输入“/opt/theos/bin/nic.pl”,启动 NIC(New Instance Creator)

  4. 工程文件说明 创建好工程就会生成四个文件: Makefile、Tweak.xm、control、iOSREProject.plist 下面进行简单说明。

Makefile

Makefile 文件指定工程用到的文件、框架、库等信息,将整个过程自动化,下图为里面内容说明。

补充:

  • 导入 private framework
iOSREProject_PRIVATE_FRAMEWORKS = private framework name
复制代码
  • 链接 Mach-O 对象(Mach-O object)
 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 文件的内容如下:

control 文件中可以自定义的字段还有很多,但上面这些信息就已经足够了。更全面的 说明可以参阅 debian 的官方网站( www.debian.org/doc/debian-…)

iOSREProject.plist文件

简单来说就是里面描述了tweak 的作用范围,也就是需要作用的APP的bundle identifier。

也就是在创建项目的时候填写的

工具获取与感谢

iOS逆向知识,千变万化,无穷无尽,需要学习的太多了,国内文章知识还是比较少,逆向的书籍也是比较少,逆向开发方面的进步也需要我们国人也要努力。

转载于:https://juejin.im/post/5cfe4affe51d4555fc1acc7d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iPhone手机端: 1.Apple File Conduit 2(替换afc2add),使PC端的管理工具可以访问iPhone的所有目录与文件. 2.AppSync,使可以安装破解的IPA,威锋源apt.weiphone.com. 3.Mobile Substrate或者Substrate Safe Mode 4.OpenSSH,作为SSH服务端; 5.Gnu Debugger(gdb),在这个源中cydia.radare.org,版本为1708,低版本不支持ios4.3+。 6.adv-cmds:ps命令可以查看进程信息; 7.darwin cc tools:otools可以查看可执行文件的详细信息; 8.Link Identity Editor:ldid签名; 9.Cycript是一款脚本工具,用于测试函数. 10.BigBoss Recommanded Tools是一系列命令行工具,强烈建议安装上. 这个工具有以下命令行工具还没装上: file #常用的file命令 links #links,文本浏览器 netcat #nc ngrep #ngrep (Network grep). Nmap #nmap Screen #screen tcpdump #tcpdump 11.iFile是一款文件管理工具. 12.MobileTerminal(注意没有空格)是开源的IOS版Terminal,注意:4以上系统都需要的是520-1版的mobile terminal,安装源是iPhoneCake源 http://cydia.xsellize.com,cydia作者源里那个太老了会出现闪退. 13.AppCrackr是一款用来对App破解去壳的工具,安装源是iPhoneCake源 http://cydia.xsellize.com. 14.syslogd是用于记录类UNIX中系统日志 的守护进程,我们可以通过/var/log/syslog/看到对应的log输出,安装源是http://apt.saurik.com. 15.SQLite是运行于iOS设备上的SQLite 数据库工具. 16.top是运行于iOS平台上的查看当前内存使用情况的工具. 17.Vi IMProved (即vim). 18.keychaineditor 19.netcat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值