设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 综合聚焦 > 移动互联 > 应用 > 正文

iOS应用程序的脱壳实现原理盘点

发布时间:2021-07-10 14:45 所属栏目:46 来源:互联网
导读:应用程序加载过程 对于诸多逆向爱好者来说,给一个app脱壳是一项必做的事情。基于安全性的考虑,苹果对上架到appstore的应用都会进行加密处理,所以如果直接逆向

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

 

这篇文章不是一篇介绍如何利用工具去进行脱壳的教程,而只是简单的分析这些常用脱壳工具的实现原理。要想了解脱壳原理,就要先去了解一个被加密的应用程序是如何被运行的。下面一张图片简单的介绍了一个被加壳后的应用程序被加载和运行的过程:

 

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

 

程序脱壳过程

 

 

脱壳原理以及常见的工具

 

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

iOS应用程序的脱壳实现原理盘点

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读