IOS逆向学习

您所在的位置:网站首页 ios直接安装ipa软件 IOS逆向学习

IOS逆向学习

2022-11-25 05:33| 来源: 网络整理| 查看: 265

1. 加壳和脱壳

从appStroe上下载的app都是加壳(对可执行文件进行过加密)的文件,你直接使用工具 是解析不出来的,但是某些app通过其他工具安装,比如PP助手安装是可以直接解析的

流程:IPA文件 —上传–> AppStore(对其上传的可执行文件进行了操作) -----下载—> iphone手机上

1.1 加壳的原理

什么是加壳?

利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加密),已达到保护程序代码的目的

加壳的过程:

1.2 脱壳

什么是脱壳?

摘掉壳程序,讲未加密的可执行文件还原出来(有些人也成为“砸壳”)

脱壳主要有两种方法: :

IOS上一般是采用的方式,直接脱壳

1.3 APP的可执行文件是否加壳

通过知道手机上安装app的路径,然后把可执行的Mach-o文件拷贝到电脑上,通过以下几种方式查看app是否加壳:

在手机上运行软件,然后再终端,登录手机,执行指令打印出app的路径:

通过找到手机上的这个路径,并把可执行文件拷贝到电脑上:

可以通过指令来看看能否导出头文件,如果是加密的文件导出来头文件上这样的,只有一个文件,而正常的是多个头文件:

通过命令行指令()打印Load command去查看Mach-O文件是否加壳:

使用 产看 中的 属性中 的值 如果是非0的数值 就表示加壳(加密)过, 如果是则表示没有加密 , 架构的话 会在后面加上则不需要

1.4 IOS中的脱壳工具

IOS中有很多好用的脱壳工具

:https://github.com/KJCracks/Clutch

:https://github.com/stefanesser/dumpdecrypted/

1.4.1 Clutch

下载最新的Release版:https://github.com/KJCracks/Clutch/releases

下载下来之后,建议改名称,去掉版本号,改名为

将Clutch文件拷贝到iPhone的目录下

如果在iPhone上执行指令,权限不够,赋予–

1.4.2 Clutch的使用

列出已安装的APP:

输出APP序号或则Bundle Id进行脱壳操作:,脱壳过程报错

注意:

1.4.3 dumpdecrypted

下载源代码,然后再源码目录中执行指令进行编译,获取动态库文件

将文件拷贝到iPhone上(如果是root用户,建议放目录)

将终端进入所在的目录

使用环境变量将注入到需要脱壳的可执行文件(可执行文件路径可以通过查看获取)

指令示例: 然后执行

砸壳成功:

也可以通过iFunBox来查看:

查看文件的属性:

1.4.4 dumpdecrypted过程中遇到问题

IOS12以上系统报一下错误,说明缺少签名:

解决办法:使用 ldid 工具执行下面的代码命令给 dumpdecrypted.dylib直接签名就可以

遇到XcodeSDK版本和越狱手机的SDK版本不匹配,我的Xocde 版本11.2.1 ,越狱手机版本12.5.1

解决办法:需要下载一个对应SDK版本低 Xcode,重新编译动态库,然后再脱壳,如果你已经安装了高版本的Xocde,例如12.3 ,在打开Xcode10.3的过程中报错:

解决办法:

根据上面PlugIn Pathcd:

找到插件

修改其名称:

然后再打开Xcode10.3 就不会报错了

如遇一下错误:

原因:对dyld所在的文件夹权限不够

解决方案:将dyld放在用户所在的文件夹。比如:

如果是root用户,请将dyld放在目录

如果是moblie用户,请将dyld放在目录

1.4.5 class-dump脱壳后的文件问题

脱壳成功后,使用指令,导出头文件,但是报如下错误:

经过查找,可能是swift和OC混编导致,无法dump出头文件, 目前没有找到有效的方法

1.4.6 实战-theos工具

思路:首先通过工具找到广告页面(UIView),然后找到其对应的方法,我们需要初始化方法。达到我们去掉广告的页面的目的,实质:hook代码----> 生成插件,在安装到手机上()

1.4.6.1 安装theos工具

安装签名工具 : (直接通过Homebrew工具直接安装软件)

修改环境变量:

注意:

只要配置到这个环境变量中, 这样你就可以通过终端不管是在那个路径下都可以方法这个指令,相当于我们直接方法 下面指令一样

引用环境变量是 例如:

的作用是 把当前配置的环境变量和以前的环境变量加起来,都可以起作用,不然就是直接覆盖掉系统配置好的环境变量了

打印环境变量的值:,例如: :

:用来编辑电脑当前用户的环境变量,如果你发现编辑这个文件配置好环境变量,但是打印环境变量的值是空,这是因为文件还没有生效,需要执行下文件 让文件的内容马上生效。(所以建议大家以后修改了 这种环境变量以后,执行一个操作,这样环境变量才回生效)

下载theos:

1.4.6.2 theos创建项目

配置上述环境变量之后,并且下载theos成功之后,那么我们可以使用来创建项目,编写插件代码。

验证是否安装成功(在终端输入指令):

弹出如图所示界面,表示安装成功, 我们创建项目选择

创建项目步骤:

创建好的项目结构目录:

接下来我们可以把项目拖拽到工具中编辑,开始编写文件

配置环境变量:

编写hook代码:

首先可以把的调整为模式可以编辑

编写好的hook类:

编译、打包, 然后直接安装到手机上()

如何卸载这个插件,在手机上利用删除文件:

------------END-----------



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3