iOS开发之逆向工程

作者: iOS雯Ping | 来源:发表于2018-04-03 22:32 被阅读1322次

    逆向工程:是一个广义概念,是指从可运行的程序系统出发,运用解密、反汇编、系统分析、动态调试等多种技术对软件进行分析,推导出软件产品的结构、流程、算法、软件架构、设计模式、运行方法、相关资源及文档等这一过程。软件逆向的整个过程统称为软件逆向工程,过程中所采用的技术统称为软件逆向工程技术。究其义,这是个软件安全方面的技术。

    (其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS学习交流群687528266,不管你是小白还是大牛欢迎入驻,大家一起交流学习,加群私聊群主就可以领取2018最全梳理的面试宝典和资料)以及下图这份资料,希望你能找到理想中的工作

    逆向工程的目的

    (1)分析竞品的最新研究或者产品原型(包括所用的技术,所使用的框架)

    (2)学术/学习目的。

    (3)破解应用的使用权限

    (4)识别竞品潜在的侵权行为

    逆向工程的作用是什么

    1.逆向工程并不是为了破解他人的软件为目的,在商业领域,有更加重要的作用,具体包括以下几个方面。

    2.安全审查:对于iOS 开发者来说,不仅仅是完成产品的业务功能,尤其对大公司,还需要非常重视安全问题。通过逆向工程,及早发现问题,修改问题,避免发布后到用户手中引起各种舆情问题,损害公司声誉。

    3.分析竞品:1.参考竞品app的架构设计;2.参考竞品app的接口设计;3.关键技术的实现细节。

    4.学术研究:通过逆向,实现学术研究,主要用于学习。

    5.突破app的使用限制:很多app对不同的用户有使用权限的限制,比如收费,或者vip用户才能使用的功能,通过逆向提前获取使用权限,当然不推荐这种方式,建议大家还是支持正版。

    6.识别侵权:主要用于调查竞品或商业产品,识别侵权行为

    逆向工程的分析工具

    工欲善其事必先利其器,掌握了方法之后,还要学会使用各种工具,分析app的不同功能。这些工具主要包括以下:

    砸壳查看APP头文件

    工具

    一.App Store上的应用都使用了FairPlay DRM数字版权加密保护技术。我们要对文件进行反汇编,而IPA都是加密的,哪怎么办呢?所以在逆向之前我们需要先对应用进行砸壳。这里我们使用的是 dumpdecrypted。(还可以使用Clutch,这里我们就不讲Clutch了)

    dumpdecrypted 代码

    Dumps decrypted mach-o filesfromencrypted iPhone applicationsfrommemory to disk.This tool is necessaryforsecurity researchers to be able to look under the hoodofencryption.

    二.class-dump是用于解析Mach-O文件中存储的OC运行时信息的。他能生成类的声明、分类、协议。和otool -ov类似,但是由于class-dump的结果是以OC代码展示的,所以有很强的可读性。

    class-dump 代码

    This is a command-line utility for examining the Objective-C runtime information stored in Mach-O files.

    It generates declarations for the classes, categories and protocols. This is the same information provided by using ‘otool -ov’,

    but presented as normal Objective-C declarations, so it is much more compact and readable.

    一台越狱手机

    iOS为了保证安全性,所有的应用都是在沙盒中运行。所以要想完成逆向操作,我们需要更高级的权限。没有越狱设备那就无法展开学习和研究工作。

    1.安装好 dumpdecrypted和 class-dump 以后,在越狱机上Cydia上安装 openSSH,通过MAC终端控制手机,openSSH密码是alpine(手机和电脑需要在同一网段,然后点开设置查看当前手机分配的ip地址)

    2.在越狱机上Cydia上安装 Cycript

    3.找出要反编译APP的执行文件目录,为了避免干扰,最好杀掉其他进程,只打开反编译APP,使用ps -e命令得到路径。。。。。。。其中的 /var/mobile/Applications/B1215D4A-24B7-480F-B91D-8F5386B0211A/QQ.app/QQ 就是我们要找的

    4.使用Cycript找出反编译APP的Documents目录路径。。。。。。。其中的 /var/mobile/Applications/B1215D4A-24B7-480F-B91D-8F5386B0211A/Documents/ 就是我们要找的Documents目录路径

    5.将dumpdecrypted_7.dylib拷贝到Documents目录下,此处是使用scp方式,也可以使用iFunBox或者PP助手进行文件操作(这里的dumpdecrypted_7.dylib是别人已经生成好的)地址

    6.然后就是使用dumpdecrypted砸壳。。。。。。其中的 QQ.decrypted 就是我们要的破解文件

    7.使用class-dump将文件解析。。。。。。得到的QQ.m文件就是我们需要的头文件,class-dump --arch armv7 QQ.decrypted > QQ.m,

    将QQ.decrypted拷贝到Mac桌面文件夹,使用class-dump进行解析armv7,其他型号使用相对应的 4(armv7),4s(armv7),5(armv7),5s(arm64),6(arm64),6s(arm64)

    (1)分析从AppStore下载的IPA包

    class-dump--archarmv7QQ.decrypted>QQ.m

    (2)分析从越狱平台下载的越狱IPA包

    class-dump-HMYXJ.app-o/Users/damon/Desktop/test/headMYXJ

    分析APP UI

    Reveal:Reveal能够在运行时调试和修改iOS应用程序。它能连接到应用程序,并允许开发者编辑各种用户界面参数,这反过来会立即反应在程序的UI上。就像用FireBug调试HTML页面一样,在不需要重写代码、重新构建和重新部署应用程序的情况下就能够调试和修改iOS用户界面。

    此方法只适用于有源码的项目,并不适用分析任意APP。如有需要分析任意APP请猛点这里

    1.首先下载Revleal破解版(纯属废话) 最后有整个操作步骤的GIF。

    2.启动Reveal 选中菜单栏中的Help-->Show Reveal Library in Finder --> iOS Library.

    拖动添加Reveal.framework到工程中。选中 Copy items into destination group's folder (if needed)以及当前的targets。

    3.TARGETS中设置命令

    TARGETS --> Settings --> Other Linker Flags -->Any iOS Simulator SDK(选择这个命令是指任何模拟器运行reveal都能分析) -ObjC

    4.这时运行工程,出现报错,报错内容为如下,这时我们需要引入「libz.dylib」库,然后重新运行工程


    再次运行,成功如下

    5.打开 Reveal 工具,左上角选中我们的「你的工程名字」工程,然后就可以查看工程内 UI 的结构了。如图:

    附上整个操作的GIF

    https://img.haomeiwen.com/i1428549/95bd37a111e91b7e.gif?imageMogr2/auto-orient/

    iOS 砸壳导出头文件

    砸壳 导出头文件

    https://www.jianshu.com/p/a4373b5feca0

    安装class-dump

    https://www.cnblogs.com/chars/p/5312644.html

    砸壳步骤:

    开始砸壳前 确保手机设备跟mac在同一局域网!!!

    1:ssh root@10.10.245.208 (iP地址为设备的iP地址)默认密码:alpine

    2:拷贝dumpdecrypted.dylib 到App的Documents的目录

    2.1:手机打开需要砸壳的APP

    3:执行砸壳:

    F7DAC9BB-4CC1-4CC3-880C-E0CD954DB9FD

    3.1:进入到 Documents 目录下:  /var/mobile/Containers/Data/Application/F7DAC9BB-4CC1-4CC3-880C-E0CD954DB9FD/Documents/6B099246-F386-417D-BD8F-F679BFAF2F2C AsktaoMobile iOS.app

    注:进程名字如果有空格 空格前加”\”

    3.2: DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/6B099246-F386-417D-BD8F-

    F679BFAF2F2C/AsktaoMobile\ iOS.app/AsktaoMobile\ iOS

    砸壳成功后在document里面找到 .decrypted文件

    4:使用class-dump导出头文件的命令格式:

    class-dump -H 需要导出的框架路径 -o 导出的头文件存放路径

    class-dump -H /Users/apple2015/Desktop/AsktaoMobile\ iOS.decrypted -o /Users/apple2015/Desktop/touwenjian

    反编译

    1.Hopper简介

    Hopper是一款运行在Mac、Windows和Linux下的调试(os x only)、反汇编和反编译的交互式工具。

    可以对32、64位的MAC程序、Windows程序和IOS程序(arm)进行调试、反编译等。

    功能

    (1)能够分析出函数的代码块、变量等

    (2)可以生成代码块的控制流图CFG

    (3)可以通过Python脚本来调用Hopper的其他一些功能,使用更加灵活

    (4)在MAC上还可以通过GDP动态调试分析

    (5)对Objective C的极佳的支持——能够解析出Selector、字符串和发送的消息

    (6)反编译,生成伪代码

    2.IDA Pro简介

    IDA Pro是一个非常强大的反汇编和调试工具,支持Windows,Linux, Mac OS X平台

    IDA Pro权威指南(第2版)

    网络接口分析

    Charles简介

    Charles是Mac下常用的对网络流量进行分析的工具,类似于Windows下的Fiddler。在开发iOS程序的时候,往往需要调试客户端和服务器的API接口,这个时候就可以用Charles,Charles能够拦截SSL请求、模拟慢速网络、支持修改网络请求包并多次发送、能够篡改Request和Response等强大的功能。下面介绍安装和使用方法。

    功能

    (1)拦截SSL请求

    (2)模拟慢速网络菜单Proxy中的Throttle Setting可以对此进行设置

    (3)支持修改网络请求包并多次发送

    (4)断点功能Charles能够断到发送请求前(篡改Request)和请求后(篡改Response)

    (5)捕获记录控制 可以过滤出关注的请求。菜单Proxy中的Record Setting可以对此进行设置

    使用调试器hook

    gdb调试命令

    已经集成在Xcode中去了用于调试App程序

    但是直接在硬件设备上执行时,可以获得更多的功能

    可以调试设备上所有的进程

    快速分离和重新附着到某个进程上

    没有桌面形式的操作系统上进行开发程序时的调试

    攻击者可以修改gdb命令的脚本文件,来达到操作设备上任何程序的

    运行、修改、监控设备上的所有的程序

    iOS安全攻防(二十)动态调试利器---gdb基础篇

    iOS的应用程序安全(22) - 使用GDB进行运行时分析和操作

    iOS的逆向工程读书笔记

    如何防止被反编译

    代码混淆的必要性以及方法:

    (1)使用c语言实现关键的代码逻辑

    (2)使用宏替换逆向工程参考文章

    TARGETS中设置命令

    TARGETS --> Settings --> Other Linker Flags -->Any iOS Simulator SDK(选择这个

    (其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS学习交流群687528266,不管你是小白还是大牛欢迎入驻,大家一起交流学习,加群私聊群主就可以领取2018最全梳理的面试宝典和资料)以及下图这份资料,希望你能找到理想中的工作

    相关文章

      网友评论

        本文标题:iOS开发之逆向工程

        本文链接:https://www.haomeiwen.com/subject/btzchftx.html