返回首页
专题
网络编程
ASPjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 .NETjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 PHPjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 JSPjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 C#jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Delphijrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 VBjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 C/C++jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Android开发 IOS开发 Windows Phone开发 Pythonjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Rubyjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 移动开发 其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播
网页制作
HTMLjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 CSSjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Dreamweaverjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 FrontPagesjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Javascriptjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 web前端
数据库
SqlServer MySql Oracle Access DB2 SQLite 其他数据库
图形设计
photoshopjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Fireworksjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 CorelDrawjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Illustratorjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 AutoCadjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 FLASHjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播
操作系统
Windows xpjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Windows 7jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Windows 8jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Windows 2003jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Windows Server 2008jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Linuxjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 Windows 10
网站运营
建站经验 SEO优化 站长心得 网赚技巧 网站推广 站长故事
手机学院
手机速递 安卓jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 iphonejrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 手机评测 手机技巧 手机知识 手机应用 手机游戏 手机导购
网店宝典
开店指导 开店经验 网店装修 网店推广 网店seo 网购技巧
软件jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播
办公软件 系统工具 媒体工具 压缩工具 图文处理 文件管理
范文之家
自我介绍 自我鉴定 写作模板 合同范本 工作总结 贺词祝福语 演讲致辞 思想汇报 入党申请书 实习报告 心得体会 工作计划 简历模板 工作报告 导游词 评语寄语 口号大全 策划书范文
信息工程
软件工程 企业开发 系统运维 软件测试
移民之家
移民动态 移民政策 移民百科 移民生活 技术移民 投资移民
知识大全
母婴 数码 摄影 装修 美文 常识 时尚 婚嫁 美食 养生 旅游 兴趣 职场 教育 文学 健康
问答大全
电脑网络 手机数码 QQ专区 生活 游戏 体育运动 娱乐明星 休闲爱好 文化艺术 社会民生 教育科学 健康医疗 商业理财 情感家庭 地区问题 其他
编程问答
IOS Android .NET Java C/C++ Delphi VC/MFC 其他语言 PHP MSSQL MYSQL Oracle 其他数据库 Web开发 Windows Linux 硬件/嵌入开发 网络通信 移动开发 云计算 企业IT 游戏开发
笑话大全
幽默笑话 爱情笑话 成人笑话 校园笑话 爆笑笑话 综合笑话 古代笑话 现代笑话 国外笑话

iOS应用程序的脱壳实现原理浅析(1/3)

来源:互联网  时间:2018/10/25 13:23:58

应用程序加载过程

对于诸多逆向爱好者来说,给一个app脱壳是一项必做的事情。基于安全性的考虑,苹果对上架到appstore的应用都会进行加密处理,所以如果直接逆向一个从appstore下载的应用程序时,所能看到的“源代码”将非常的晦涩难懂。为了能看懂应用程序的“源代码”,就必须对应用程序进行解密,也就是所谓的脱壳。脱壳后的目的是可以分析应用程序的一些技术实现原理,或者利用一些漏洞进行攻击和测试。

这篇文章不是一篇介绍如何利用工具去进行脱壳的jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播,而只是简单的分析这些常用脱壳工具的实现原理。要想了解脱壳原理,就要先去了解一个被加密的应用程序是如何被运行的。下面一张图片简单的介绍了一个被加壳后的应用程序被加载和运行的过程:

脱壳原理以及常见的工具

要对一个壳应用进行脱壳处理,无非就是采用静态脱壳和动态脱壳两种方法:静态脱壳就是在已经掌握和了解到了壳应用的加密算法和逻辑后在不运行壳应用程序的前提下将壳应用程序进行解密处理。静态脱壳的方法难度大,而且加密方发现应用被破解后就可能会改用更加高级和复杂的加密技术;动态脱壳就是从运行在进程内存空间中的可执行程序映像(image)入手,来将内存中的内容进行转储(dump)处理来实现脱壳处理。这种方法实现起来相对简单,且不必关心使用的是何种加密技术。从上面的壳应用程序运行的过程就可以看出无论壳程序如何被加密处理,最终运行后在进程中的代码映像(image)始终是被解密后的原始程序二进制。所以只要一个进程内存空间中的代码映像(image)能被读取和访问就可以实现动态脱壳。下面要介绍的两个工具就是巧妙的运用了两种不同的访问技巧来实现动态脱壳的。

一、利用动态库注入来实现脱壳的dumpdecrypted/frida-ios-dump

dumpdecrypted和frida-ios-dump都是在github上开源的项目,下载地址分别为:https://github.com/stefanesser/dumpdecrypted和https://github.com/AloneMonkey/frida-ios-dump。关于使用这两个工具来进行脱壳的文档非常之多。我们知道一个应用除了有一个可执行程序外,还会链接非常多的动态库。动态库加载后和可执行程序共享相同的进程内存空间,而且动态库中的代码是可以访问整个进程内存空间中的有权限的区域的,包括可执行程序的image被加载到进程中的内存区域。因此只要想办法让应用程序加载某个特定的第三方动态库,也就是让这个第三方动态库注入到应用程序的进程中去就可以实现将被解密过后的可执行程序在进程内存中的image信息转储到文件中去从而实现脱壳处理。对于一个越狱后的设备来说主要可以通过两种方法来实现第三方动态库的注入:

  1. 设置环境变量DYLD_INSERT_LIBRARIES的值指向这个第三方动态库的路径。然后运行要脱壳的应用程序即可。 DYLD_INSERT_LIBRARIES环境变量的设置是一个操作系统提供的特性,所有运行的程序都会加载这个环境变量中所指向的动态库文件。

  2. 将第三方动态库文件保存在越狱设备的/Library/MobileSubstrate/DynamicLibraries/目录下并编写对应的库的同名plist文件,所有plist中指定的可执行程序一旦运行就会加载对应的动态库(此目录即Tweak插件所在的目录)。

还有一种直接修改对应mach-o格式的可执行文件内容来实现动态库注入。

动态库加载的问题解决后就需要解决动态库中代码运行的时机问题了。要想让一个被加载的动态库在加载后自动运行某一段代码可以有四种方法:

  1. 建立一个C++全局对象,并在对象所属类的构造函数中添加特定代码。

  2. 建立一个OC类,并在OC类的+load方法中添加特定的代码。


上一篇从Xcode10不再支持libstdc++说起
下一篇iOS相册,相机,通讯录,录音权限处理
明星图片
相关文章
《 iOS应用程序的脱壳实现原理浅析》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)