iOS_逆向(5)_Objective-C相关的iOS逆向理论基础

一丶.tweak在Objective-C中的工作方式

tweak指的是对电子系统进行轻微调整来增强其功能的工具;
在iOS中,tweak特指那些能够增强其他进程功能的dylib,是越狱iOS的最重要组成部分。

iOS是由一个个小的组件构成的,这些组件其实就是一个个对象,
在Objective-C里,我们称对象的功能为“方法”,“方法”的具体行为则称为“实现”。
在Objective-C里,方法和实现的关系不是在编译时决定的,而是在运行时决定的。
“对象、方法和实现的关系,就是tweak大做文章的地方。”

二丶tweak的编写套路

2.1编写tweak会用到C、C++和Objective-C三种语言
2.2定位目标文件

dylib、bundle或daemon,它们在系统中的位置几乎是固定的

2.2.1.1 dylib

基于CydiaSubstrate的dylib全部位于“/Library/MobileSubstrate/DynamicLibraries/”下

2.2.1.2bundle主要分为App和framework两类

AppStore App全部位于“/var/mobile/Containers/Bundle/Application/”下
Framework全部位于“/System/Library/Frameworks”或“/System/Library/PrivateFrameworks”下

2.2.1.3 daemon的配置文件

“/System/Library/LaunchDaemons/”、
“/Library/Launch-Daemons”或“/Library/LaunchAgents/”下
是一个plist格式的文件。其中的“ProgramArguments”字段,即是daemon可执行文件的绝对路径

2.2.2 Cydia定位

1.通过“dpkg-i”命令安装的deb包,其内容会被Cydia如实记录,若要查看,在Cydia的“Installed”项中选择“Expert”
2.然后选择目标软件,进入“Details”界面
3.之后选择“Filesystem Content”,即可浏览软件包里的所有文件

2.2.3 PreferenceBundle

PreferenceBundle是寄生在Settings应用里的App,它的功能界定有些模糊,既可以作为单纯的配置文件,由别的进程读取后执行

编写格式:
Preferences specifier plist : http://iphonedevwiki.net/index.php/Preferences_specifier_plist

2.2.4 grep命令

grep是一个来自UNIX系统的命令行工具,能够搜索文件中是否含有给定的正则表达式。

格式 grep [options]

主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。

学习地址:http://www.cnblogs.com/end/archive/2012/02/21/2360965.html

2.3 定位目标函数

在找到含有目标功能的二进制文件之后,可以通过class-dump导出头文件,在里面寻找自己感兴趣的函数。

2.3.1用OS X 系统自带
Paste_Image.png
2.3.2用grep命令
2.4 测试

Objective-C函数的功能测试相对于C/C++函数来说要简单得多,有CydiaSubstrate和Cycript两种方法可供选择。

2.4.1ydiaSubstrate
2.4.2Cycript

2.5 解析函数参数
2.6 class-dump的局限性

“class-dump提供了可以落脚的小屋,但要走出这片森林,还需要一张地图和一个指南针——它们就是IDA和LLDB。这两款工具就像两座挡在我们面前的大山,绝大多数逆向工程初学者都没能成功翻越它们,爬到半山腰就打道回府了,而翻越大山的人们顺利跨过逆向工程的门槛,欣赏到了别样的风景。梦想还是要有的,万一实现了呢?我们鼓起勇气,试试看能不能征服它们。”

摘录来自: 沙梓社 吴航 著. “iOS应用逆向工程(第2版)pdf”。 iBooks.

三丶实例演示

iOS_逆向实践(1)_微信到此一游
http://www.jianshu.com/p/b2421b368e2c

你可能感兴趣的:(iOS_逆向(5)_Objective-C相关的iOS逆向理论基础)