美文网首页
iOS IPA脱壳

iOS IPA脱壳

作者: MdWhat | 来源:发表于2018-08-14 10:06 被阅读123次

一、前言:

从APPStore上面下载下来的程序都有壳,我们不能对他进行任何操作,iOS逆向的第一步就是脱壳。下面跟我一起实战一下。

二、工具:

1.一步越狱手机(建议选4s)

2.dumpdecrypted

三、步骤:

3.1 下载对应的程序包

首先我使用我已经越狱的iPhone4s从Appstore下载APP,此处我以某程序为例。并使用PP助手等工具导入到电脑里。

3.2 查看是否加密

解压ipa文件,拿到里面的主文件,对其进行架构查询

file 主文件名
image.png

此APP支持两种架构,我们查询下它的加密情况

otool -l 主文件名 | grep crypt
image.png

cryptid 1代表加密,cryptid 0代表未加密。两个分别对应着armv7和arm64,也就是它们都有加密。

3.3 使用dumpdecrypted砸壳

地址:传送门->https://github.com/ianisme/IANDecryptiOSApp/tree/master/dumpdecrypted

3.3.1 编译dumpdecrypted.dylib文件

首先我们需要编译我们的dumpdecrypted.dylib文件,越狱手机的iOS的版本要和SDK的版本相同。我手机是iOS8.1.3,因此我选用了8.1的SDK,在Xcode6.1中可以找到。

打开终端我们输入一下命令查找下我需要的SDK地址:

find / -name iPhoneOS8*

我这里的得到的地址为:

/Applications/Xcode6.1.1/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk

我们需要修改Makefile文件中的

SDK=`xcrun --sdk iphoneos --show-sdk-path`
改为:
SDK=/Applications/Xcode6.1.1/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk

如果是的sdk是7.0的,需要继续去掉arm64的内容。8.0以上版本请略过

我们需要将Makefile文件中的

GCC_UNIVERSAL=$(GCC_BASE) -arch armv7 -arch armv7s -arch arm64
改为
GCC_UNIVERSAL=$(GCC_BASE) -arch armv7 -arch armv7s

我们再将dumpdecrypted.c文件中的

if (lc->cmd == LC_ENCRYPTION_INFO || lc->cmd == LC_ENCRYPTION_INFO_64)
改为:
if (lc->cmd == LC_ENCRYPTION_INFO)

下面进入到dumpdecrypted根目录,make进行编译,获得dumpdecrypted.dylib

3.3.2 定位二进制文件地址

我们在电脑上解压缩那个ipa包,取到里面的Info.plist文件,获取里面的Bundle identifier,例如:com.ianisme.xxxxx


image.png

在手机上跑我提供的这个Demo:
传送门->https://github.com/ianisme/IANDecryptiOSApp/tree/master/getAppBundle
找到对应Bundle identifier的对应的resourcesDirectoryURL和dataContainerURL

3.3.3 进行脱壳处理

得到地址后我们将编译好的dumpdecrypted.dylib传输到dataContainerURL的tmp目录下


image.png

然后切换到dataContainerURL的tmp目录执行如下代码:

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/FEA0A0C0-EF52-4D76-8EEC-422D5D8331D4/XXXX.app/XXXX

进行脱壳
在tmp目录下生成了一个XXXX.decrypted这就是脱壳后的主文件
我们把文件用scp命令导出


image.png
3.4 armv7抽取处理

此时我们把XXXX.decrypted的扩展名去掉,使用otool查看脱壳情况


image.png

我们发现64位的壳没有脱掉,因为我用的是iPhone4s,处理器架构是armv7,只能脱这部分的壳。
我们将app的armv7抽取出来,就可以保证app只以armv7模式运行,指令集向下兼容,也就是4s以上的机型都可以运行的。不得不说现在4s依然威武,到处都少不了他。
运行如下代码:

lipo XXXX -thin armv7 -output XXXX_armv7

XXXX_armv7就是最终的无壳主文件,将ipa包里面的替换掉,这就是一个无壳的APP了。

四、总结:

逆向是把双刃剑,有利于提高我们的技术,也有可能为不怀好意的人提供了捷径,以上内容仅供学习参考,请勿用于非法用途,谢谢。

相关文章

  • iOS IPA脱壳

    一、前言: 从APPStore上面下载下来的程序都有壳,我们不能对他进行任何操作,iOS逆向的第一步就是脱壳。下面...

  • iOS逆向之IPA脱壳

    来自:https://www.ianisme.com/ios/2326.html 一、前言: 从APPStore上...

  • iOS ipa脱壳重签

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

  • 《iOS逆向03》app重签名

    准备工作 iPhone手机(越狱或非越狱均可) 微信app脱壳后的ipa 对ipa文件进行处理 解压ipa文件将....

  • iOS安装脱壳后的ipa

    安装手机必须是越狱后的苹果设备 1. 在越狱后的手机中断中执行查询App编码并脱壳 2. 找到对应的脱壳后的ipa...

  • iOS逆向工程之给App脱壳

    iOS逆向工程之给App脱壳 iOS逆向工程之给App脱壳

  • ipa包脱壳

    1.用爱思助手越狱(uncOver) 2.cydia上安装crackerXI+(脱壳用的应用) 3.手机下载需要脱...

  • ipa是否脱壳

    指令:otool -l WeChat | grep cryptcryptid 0 表示已脱壳cryptid 1 表...

  • xcode 调试 app

    1.下载一个脱壳的ipa,用iOS App Signer重新签名。在解压是app2.新建一个项目于app的名字一样...

  • iOS应用程序的脱壳实现原理浅析

    iOS应用程序的脱壳实现原理浅析 iOS应用程序的脱壳实现原理浅析

网友评论

      本文标题:iOS IPA脱壳

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