本篇文章给大家谈谈深度解析:iOS六大逆向技术揭秘,以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
iOS加壳器执行流程图
所有上传到appStore的应用程序都经过Apple打包。一般情况下,从反向应用商店下载的应用需要先解压。
1.2如何查看一个应用是否加壳?
1 通过MachOView工具进行查看
使用MachOView 打开应用程序的可执行文件。当看到如下界面时,检查Mach-O文件中的LC_ENCRYPTION_INFO_XX。如果Crypt ID等于0,则表示未加密。如果与其他值相等,则表示已加密。加密。
2 通过otool工具查看 otool -l
xmldeMacBook-Pro:iOS 学习xml$ otool -l weixin |
二 什么是脱壳
xmldeMacBook-Pro:iOS 学习xml$ grep 地穴
加密货币16384
密码大小1376256
隐秘1
xmldeMacBook-Pro:iOS学习xml$ otool -l SpringBoard | grep 地穴
xmldeMacBook-Pro:iOS 学习xml$ otool -l 计算器| xmldeMacBook-Pro:iOS 学习xml$ otool -l 计算器| grep crypt 如果加壳的话,会打印出信息。如果没有包装,可能会打印出信息,也可能不会打印出信息。
1 脱壳的方式有哪些?
是将程序恢复到未加密混淆前的状态。对于iOS来说,就是去掉shell程序,恢复未加密的可执行文件。
2 两种脱壳方式的优缺点
1 静态脱壳(AppCrackr、Clutch、Crackulous)
就是在掌握并理解了shell应用的加密算法和逻辑后,在不运行shell应用的情况下对shell应用进行解密。
2 动态脱壳(Dump解密)
它首先从进程内存空间中运行的可执行程序映像开始,然后转储内存中的内容来实现脱壳。
二 使用dumpdecrypted工具进行iOSApp脱壳
1 静态脱壳
优点:使用简单、方便、直观
缺点:脱壳方法较困难,加密方在发现应用程序被破解后可能会改用更先进、更复杂的加密技术。
2 动态脱壳
优点:实现比较简单,不用担心使用哪种加密技术
缺点:上手比较麻烦
接下来讲一下如何使用dumpdecrypted工具进行动态脱壳。
为什么不谈静态脱壳呢?有两个原因。
1、静态脱壳简单,初学者也能上手。
2、静态脱壳有一个缺点,就是一旦别人升级了加密技术,就不再起作用了。我的手机是iOS10.2,静态工具暂时无法处理。出现脱壳错误,所以只能使用动态脱壳。
2.1 脱壳步骤
我们先讲一下如何使用这个工具来解包,然后讲一下它的实现原理。
dumpdecrypted.dylib是德国安全专家stefanesser开发的一款破壳工具
步骤一 下载dumpdecrypted工具https://github.com/stefanesser/dumpdecrypted
步骤二 编译dumpdecrypted.dylib
下载了两个主要文件。dumpdecrypted.c是源代码文件,Makefile是编译脚本。源代码可以编译成动态库。接下来我们编译动态库
步骤三 将dumpdecrypted.dylib拷贝到手机/var/root目录
xmldeMacBook-Pro:Downloads xml$ cd dumpdecrypted-master
xmldeMacBook-Pro:dumpdecrypted-master xml$ make
`xcrun --sdk iphoneos --find gcc` -Os -Wimplicit -isysroot `xcrun --sdk iphoneos --show-sdk-path` -F`xcrun --sdk iphoneos --show-sdk-path`/系统/库/框架-F`xcrun --sdk iphoneos --show-sdk-path`/System/Library/PrivateFrameworks -arch armv7 -arch armv7s -arch arm64 -c -o dumpdecrypted.o dumpdecrypted.c
`xcrun --sdk iphoneos --find gcc` -Os -Wimplicit -isysroot `xcrun --sdk iphoneos --show-sdk-path` -F`xcrun --sdk iphoneos --show-sdk-path`/系统/库/框架-F`xcrun --sdk iphoneos --show-sdk-path`/System/Library/PrivateFrameworks -arch armv7 -arch armv7s -arch arm64 -dynamiclib -o dumpdecrypted.dylib dumpdecrypted.o
ld: warning: 找不到选项“-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk/System/Library/PrivateFrameworks”目录
ld: warning: 找不到选项“-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk/System/Library/PrivateFrameworks”目录
ld: warning: 找不到选项“-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk/System/Library/PrivateFrameworks”目录
编译完成后,会生成动态库文件dumpdecrypted.dylib。接下来我们将这个动态库复制到手机上并进行动态解包。
步骤四 找到你要脱壳的应用开始脱壳
2.2 实现原理
applede-iPhone:~ root# ps -A
第1540章0:23.27 /var/containers/Bundle/Application/50D7ECBF-5F64-44A7-940F-22D884E16BE8/iQiYiPhoneVideo.app/iQiYiPhoneVideo 我找到了一个爱奇艺应用程序,我们将其可执行文件复制到mac上,使用otool工具检查它是否被打包
xmldeMacBook-Pro:iOS学习xml$ otool -l iQiYiPhoneVideo | grep 地穴
加密货币16384
密码大小82853888
隐秘1
xmldeMacBook-Pro:iOS学习xml$cryptid等于1,我们可以看到它是一个加壳的二进制文件
然后我们就开始敲碎外壳吧。您必须在手机的/usr/root 目录中执行该命令,该目录是dylib 所在的目录。这里使用环境变量DYLD_INSERT_LIBRARIES将dylib注入到需要解包的可执行文件中。
applede-iPhone:~ root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/50D7ECBF-5F64-44A7-940F-22D884E16BE8/iQiYiPhoneVideo.app/iQiYiPhoneVideo 执行后会在当前目录生成解压后的文件
将其拖至Mac上,使用otool查看是否已解压
xmldeMacBook-Pro:iOS 学习xml$ otool -l iQiYiPhoneVideo.decrypted | grep 地穴
iQiYiPhoneVideo.decrypted:
加密货币16384
密码大小82853888
隐秘0
xmldeMacBook-Pro:iOS学习xml$cryptid等于0 0,已解压。好的,只需几个简单的步骤。
如果执行DYLD_INSERT_LIBRARIES命令时遇到以下错误
解决方案
010-1010 我们首先看一下加载并运行加壳应用程序的流程图:
关于深度解析:iOS六大逆向技术揭秘,的介绍到此结束,希望对大家有所帮助。
【深度解析:iOS六大逆向技术揭秘】相关文章:
用户评论
这听起来好酷!我一直很好奇手机软件是怎么运作的。
有20位网友表示赞同!
iOS逆向确实是一门很高级的技术,需要很强的学习能力和实践经验。
有19位网友表示赞同!
能接触到这种类型的文章真是荣幸啊,我最近也对苹果系统非常感兴趣。
有12位网友表示赞同!
我想学习一下iOS逆向,听说学习起来比较挑战?
有14位网友表示赞同!
这篇文章一定能开阔我的眼界,让我了解更多关于iOS内部机制的知识!
有9位网友表示赞同!
六个iOS逆向案例?听起来超级有意思,期待深入了解这些案例背后的故事。
有9位网友表示赞同!
我会分享这个文章给我认识的所有程序员朋友们,他们一定会很感兴趣的。
有10位网友表示赞同!
学习iOS逆向需要哪些工具呢?有没有推荐的呢?
有8位网友表示赞同!
希望这篇文章能解释清楚一些复杂的技术概念,让我更容易理解。
有5位网友表示赞同!
我一直觉得苹果系统的安全性很高,但通过逆向工程可以了解到更多安全隐患吗?
有5位网友表示赞同!
这样的文章对想要开发iOS应用程序的人来说很有帮助吧?
有6位网友表示赞同!
我比较好奇这篇文章会介绍哪些具体的案例和技术,可以给我一些关键词吗?
有18位网友表示赞同!
在学习iOS逆向的过程中,有哪些常见的误区需要避免呢?
有20位网友表示赞同!
iOS逆向有什么应用场景,除了开发安全软件以外还有吗?
有20位网友表示赞同!
这篇文章会讲解iOS系统的各个版本之间有什么区别吗?
有11位网友表示赞同!
作者写的文章比较深入吗?或者说更偏向于科普性介绍?
有11位网友表示赞同!
学习iOS逆向需要多久才能掌握呢?它对我的职业发展有帮助吗?
有20位网友表示赞同!
我觉得这个主题非常有讨论的价值,期待看到大家的评论和看法。
有15位网友表示赞同!