iOS逆向-工具安装与使用(一)

如果你想成为一名合格的iOS逆向开发工程师,
又没有一套自己的工具集,
又想做逆向开发,
唯一的办法:自己想想吧,哈哈~~
开个小玩笑,
为了实战方便?
自己必须要提前准备逆向开发工具,
才能进行实战开发.
接下来我们会一一介绍工具的安装和使用.

1.逆向汇编工具

  • pp助手
  • go2shell
  • iTerm2
  • Alfred+32
  • XtraFinder
  • iFunBox
  • IDA Pro
  • app-signer
  • MachOView
  • Cycript
  • theos
  • MonkeyDev

12款工具,想想不到的酸爽.接下来一一介绍哦

俯瞰大千世界

具备了这些工具,你就可以俯瞰大千世界.App会变得很透明.
所以对App的安全防护是非常重要的.

2.汇编逆向工具安装

1.pp助手

pp助手
  • 1.官网是可以下载到的(如果你不想下载,我会把软件上传到github中),下载后,进行安装就OK了.
  • 2.安装pp助手的目的: 是为了我们方便下载已经砸壳的app.在这里不详细介绍,以后实战阶段,会进行讲解.
  • 3.使用(怎么样下载越狱ipa包)
image.png
image.png
image.png
  • 这些ipa包是已经越狱的ipa包,不需要砸壳.
  • 我们会在MonkeyDev项目开发中用到(先做了解).
  • 也可以结合终端程序进行安装调试(先做了解).

2.go2shell-一款懒人命令行必备神器

go2shell
image.png
  • 3.点击install Go2Shell,然后会在Finder中出现,如下图
image.png
  • 4.这样你就可以在不同目录下执行命令行,不用再cd某个目录下.

  • 5.使用

image.png

我们直接就可以进入所在目录下,不需要用cd命令,懒人命令行必备神器.
以上(pp下载)目录为例,
我们点击2中go2shell快捷工具,
直接打开终端,
直接跳转到3.我们ls命令以后就可以查看pp下载目录下的内容了.
是不是很方便?
意不意外?
惊不惊喜?

3. iTerm2

下载地址:https://www.iterm2.com/downloads.html

  • 1.下载好,直接拖到应用文件夹就可以使用了.

  • 2.iTerm2 是 OS X 下一款开源免费的的终端工具,很多人基本用它替代了原生的 Terminal。

image.png

如图,个人配置的主题页面,
如果你也想配置,
不妨到这个链接进行配置:
http://www.cnblogs.com/xishuai/p/mac-iterm2.html
按照步骤一步步配置,
就可以完成你想要的主题.
至于配置就要考验你的动手能力了.

重点:(这里讲解如何越狱机用终端连接手机)
重点无线连接:


image.png
image.png
image.png
  • 安装OpenSSH
  • 打开你的wifi 设置 (图2)
  • 找到你的ip地址
  • (图3)--第6步: ssh root@192.168.3.46
  • 打开终端连接,默认密码是alpine(第9步)
  • 我们愉快的打开终端连接一下,哈哈~~
终端连接手机
  • (我配置了公钥,所以我只要输入连接命令ssh root@192.168.3.46,直接就连接了.如果你没有配置的话,是需要输入默认密码的)
    重点有线连接:
    我们要用到的工具是一个python脚本工具和2个shell脚本:

  • iPhone的22端口映射到Mac本地的10000端口


    端口映射
  • 是否继续连接?yes


    连接
  • 连接成功,拿到root权限.(如果第一次连接是需要默认密码)


    连接成功

重点免密登录:

  • 在mac下-找到.ssh下的公钥


    在mac下-找到.ssh下的公钥
  • 将客户端~/.ssh/id_rsa.pub的内容自动追加到服务器的 ~/.ssh/authorized_keys尾部,上传手机到.ssh中

上传手机到.ssh中
  • 下一次终端连接手机的时候,就可以免密登录.

4. Alfred+32

Alfred+32
  • 1.把Alfred 3 拖入到应用程序
  • 2.打开图中的Alfred 3 KG,点击Patch弹出对话框,找到Alfred 3.app,打开
  • 3.点击save,提示License information saved successfully
授权
  • 4.完成,你就可以开心的使用了
  • 5.command + 空格可以启动Alfred 3
  • 6.使用
计算器--计算结果
输入百度地址--回车直接跳转到页面

以上两个例子,还有很多功能等待你发掘...

5. XtraFinder

下载地址: http://www.trankynam.com/xtrafinder/
(让你的 Mac 资源管理器变得更加强大)

标签页
特性
Appearance
将项目添加到Finder菜单中
  • 根据个人需求,配置选项.

6.iFunBox

1.介绍

  • iFunBox是一款小巧的iPhone文件管理软件
  • 界面类似于Windows资源管理器,以简练时尚的窗口方式浏览和管理iPhone、iPad、iPod touch上的文件和目录。
  • 既可以在手机与电脑之间同步传递数据,使你轻松上传电影、音乐、电子书、桌面、照片以及应用程序。
  • 还能够把你的iPhone变成一个U盘,大量信息随身携带,但也需要iTunes支持。

2.iFunBox是一款老牌iOS文件管理工具,可以非常方便地操作iOS中的文件.

iFunBox界面
  • 这个是我的越狱机:iphone 5s ,iOS7.1.1 (建议大家准备iOS 8.3.3的越狱机)
  • 红色箭头下可以查看到iphone系统文件.
  • 注意: 越狱iOS必须安装“Apple File Conduit 2” ,这样iFunBox才能浏览iOS全系统文件.
Apple File Conduit 2

7. IDA Pro--汇编程序员的生命

IDA Pro
  • 交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。

  • 是目前最棒的一个静态反编译软件,为众多[0day]世界的成员和[ShellCode]安全分析人士不可缺少的利器!

  • IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉[Windows]或[Linux] [WinCE] [MacOS]平台主机来分析程序, 被公认为最好的逆向工程利器。

  • 只需要next进行安装,然后启动,就可以分析自己的汇编程序了.

  • 使用:

  • 1.创建项目

创建项目
  • 2.找到可执行文件
找到可执行文件
  • 3.iDA打开可执行文件
iDA打开可执行文件
  • 4.找到main编译的汇编代码
找到main编译的汇编代码
  • 5.分析汇编代码
; int __cdecl main(int argc, const char **argv, const char **envp)
public _main
_main proc near
var_1C= dword ptr -1Ch
var_18= dword ptr -18h
var_14= dword ptr -14h
var_10= qword ptr -10h
var_4= dword ptr -4

push    rbp
mov     rbp, rsp
sub     rsp, 20h
lea     rax, cfstr_D    ; "%d"
mov     [rbp+var_4], edi
mov     [rbp+var_10], rsi
mov     [rbp+var_14], 1
mov     [rbp+var_18], 2
mov     edi, [rbp+var_14]
add     edi, [rbp+var_18]
mov     [rbp+var_1C], edi
mov     esi, [rbp+var_1C]
mov     rdi, rax
mov     al, 0
call    _NSLog
xor     eax, eax
add     rsp, 20h
pop     rbp
retn
_main endp

  • 6.分析完成后,可以复原main方法中的代码(了解,实战会详细介绍)
image.png

8.ios-app-signer-master--ipa文件重签名

下载地址:http://dantheman827.github.io/ios-app-signer/

app签名

1.介绍

  • 一般我们上线的app,都需要打包生成IPA文件.
  • (也可以在App Store下载,App Store下载的IPA呢,如果想重签名,必须要进行砸壳,这个实战会讲解砸壳,在这里作为了解)
  • 从图中,我们可以导入IPA,选择好你的配置文件,然后start就可以了.
  • 然后会生成一个新的IPA文件,这个就是重签名成功了.
  • 有了IPA呢,我们就可以结合终端把app安装上去.(这里也是先了解,实战会讲到)

2.使用

input IPA及配置信息
start及保存制定目录下
导出完成及查看制定目录下是否存在

以上我们用QQ音乐.iPA为例

  • 1.选择下载好的QQ音乐.iPA进行信息配置
  • 2.点击start,选择目录保存
  • 3.保存到制定目录进行查看

以上三步,我们完成了iPA文件的重签名.
第一种方法,我们可以使用MonkeyDev安装项目试试.(MonkeyDev使用介绍在第12个工具处)
第二种方法,我们可以使用终端进行安装.(以后都有讲解,这里不再过多介绍)

9.MachOView

MachOView下载地址:http://sourceforge.net/projects/machoview/

MachOView源码地址:https://github.com/gdbinit/MachOView

MachOView
  • Mach-O格式全称为Mach Object文件格式的缩写,是mac上可执行文件的格式.

  • mach-o文件类型分为:
    1、Executable:应用的主要二进制
    2、Dylib Library:动态链接库(又称DSO或DLL)
    3、Static Library:静态链接库
    4、Bundle:不能被链接的Dylib,只能在运行时使用dlopen( )加载,可当做macOS的插件
    5、Relocatable Object File :可重定向文件类型

  • 使用:
    在iDA中导出的可执行文件,依然可以用MachOView进行打开.

image.png

如图,Mach64 Header(64位架构),选中mach header 可以看到每个类的cpu架构信息、load commands数量 、load commandssize 、file type等信息

  • 64位和32位架构有哪些不同?
32位架构:

struct mach_header {
    uint32_t    magic;      /* mach magic number identifier */
    cpu_type_t  cputype;    /* cpu specifier */
    cpu_subtype_t   cpusubtype; /* machine specifier */
    uint32_t    filetype;   /* type of file */
    uint32_t    ncmds;      /* number of load commands */
    uint32_t    sizeofcmds; /* the size of all the load commands */
    uint32_t    flags;      /* flags */
};

64位架构:

struct mach_header_64 {
    uint32_t    magic;      /* mach magic number identifier */
    cpu_type_t  cputype;    /* cpu specifier */
    cpu_subtype_t   cpusubtype; /* machine specifier */
    uint32_t    filetype;   /* type of file */
    uint32_t    ncmds;      /* number of load commands */
    uint32_t    sizeofcmds; /* the size of all the load commands */
    uint32_t    flags;      /* flags */
    uint32_t    reserved;   /* reserved */
};

  • 32位和64位架构的头文件区别是64位多了一个保留字段(reserved)
  • magic:魔数,用于快速确认该文件用于64位还是32位
  • cputype:CPU类型,比如 arm
  • cpusubtype:对应的具体类型,比如arm64、armv7
  • filetype:文件类型,比如可执行文件、库文件、Dsym文件

10.Cycript

地址:http://www.cycript.org

image.png
  • 我们首先下载sdk

  • 下载后的sdk,文件放在/opt文件目录下(theos,MonkeyDev同级目录)

/opt/cycript
  • 切换到/opt/cycript目录下,执行cycript,就可以进入cy环境(图中,可以进行加法计算,输出等等操作)
    注意:进入cy之后,需要连接越狱机进行操作.
image.png
  • 没有配置环境变量,我们不能进入cy环境
image.png
  • 配置环境变量
配置环境变量
  • 任何地方启动终端,就可以进入cy环境

!进入cy环境](https://upload-images.jianshu.io/upload_images/2154347-fb944e7da4664641.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

配置好后,你就可以结合越狱机进行调试操作了.

这里就把mac系统Cy环境配置好了.

  • 我们接下来安装iOS--Cycript


    Cycript
  • 我们远程连接iOS终端
    以百度外卖为例


    添加弹出框
实现结果

11.theos

github地址:https://github.com/theos/theos

  • 安装最新的theos
sudo git clone --recursive https://github.com/theos/theos.git /opt/theos

  • 安装ldid(如安装theos过程安装了ldid,跳过)
brew install ldid

  • theos使用

!theos使用](https://upload-images.jianshu.io/upload_images/2154347-885209eb8a447223.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

在终端模式下,使用nic.pl,就可以创建tweak工程文件.
  • 如果想在任意地方敲出nic.pl,就要配置环境变量
配置环境变量
  • 环境变量配置好,以后使用起来会很方便的.
  • 使用:
nic.pl

可以在终端中敲出nic.pl,
是在你环境变量配置好的情况下,
可以出现上面这个界面.
然后你就可以创建tweak项目工程了.
(这里不过多介绍,项目实战会介绍的)

12.MonkeyDev

(注意:monkeyDev环境配置前,需要报theos环境配置好)

  • 1.你可以通过以下命令选择指定的Xcode进行安装:
sudo xcode-select -s /Applications/Xcode.app

  • 2.默认安装的Xcode为:
xcode-select -p

  • 3.执行安装命令
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-install)"

  • 4.卸载
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-uninstall)"

  • 5.更新
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-update)"

安装/更新之后重启下Xcode再新建项目。

  • 6.使用
    安装成功后,打开xcode创建项目.你会发现呢?多了MonkeyApp选项
MonkeyApp
这样,我们就可以创建项目了.

3.总结

工具安装和配置比较考验大家的动手能力,
配置好后,
它就是你最好的朋友.
这12款软件,
对于逆向开发必不可少,
就像一把锐利的工具,
打开了app的另一个世界.
还有很多帮助性的工具需要介绍,
今天就先介绍到这里,
文章会继续更新,
更多的软件使用也会写入文章,
请持续关注.
又是该睡觉的时间了,
希望这篇文章能帮助到你.
我把软件整理后上传网盘或者github.
如果你看到这里,
你就知道了软件的下载地址.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容

  • iOS 如何做才安全: 1、首先,我们可以通过软件 下载 AppStore的ipa文件(苹果 把开发者上传的ipa...
    葛高召阅读 6,077评论 0 4
  • 我不想长大 长大了什么事都要自己做,再也没有理由依赖朋友,父母 我不想长大 长大了要自己一个人生活,我恐惧这样的孤...
    塔城女王阅读 164评论 0 0
  • 前段时间,我去接小侄女放学,她说,她们学校来了一个长发男孩,头发比她的还要长,而且那个男孩说话声音很像女生,好多小...
    不悔将来阅读 145评论 0 0