iOS逆向工程--微信消息防撤回

什么是逆向工程

是一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能特性及技术规格等设计要素。

简而言之,通过反编译等途径获取app的源码结构,进行分析或修改等从而达到某种目的。

应用场景

安全相关

  • 评定安全等级
  • 逆向恶意软件
  • 检查软件后门
  • 去除软件使用限制

开发相关

  • 逆向系统API
  • 借鉴别人的软件

步骤

1. 敲壳

上传到App Store的app都会经过苹果的一系列复杂的加密,不能直接对下载的文件进行解析,需要绕过app文件的加密机制。

iOS APP的签名原理

iOS APP签名原理

iOS开发者账号类别

个人开发者 公司开发者 企业开发者
账号申请速度快,无需公司注册信息 账号申请速度慢,需要公司注册信息 账号申请速度慢,需要公司注册信息
产品可以上架APP到App Store 产品可以上架到App Store 开发的app可以不经过苹果审核,直接分发给用户安装使用,不能上架App Store
产品开发者信息显示为个人信息,对公司和开发团队起不到宣传作用 iTunes里可以查到公司信息及相关产品,宣传效果不错 通过官网、PP助手等三方渠道分发软件
无法创建团队,添加团队成员至开发者账号 可以创建团队,邀请成员共同管理账号信息 可以创建团队,邀请成员共同管理账号信息
99$/year 99$/year 299$/year

敲壳步骤

  • 在mac终端上通过ssh进入iPhone控制台
用`OpenSSH`通过ssh链接到iPhone控制台
  • 查找到要砸壳软件的目录

iOS中的文件夹是封闭的,程序运行在系统文件夹,是不能被查看到的

用`Cycript`查找到砸壳软件的文件目录
  • 将可执行文件导出到电脑上

iOS 软件在运行时是解密的
Mach-O文件包含了程序的基本信息和源码

dumpdecrypted可以在应用在运行时将Mac OSiOS中的可执行文件Mach-O文件导出,Mach-O文件包含了软件的头文件和具体的执行代码。

2. 反编译

获取软件头文件

以OC语言开发的iOS程序,代码结构分为声明文件(头文件)和执行文件

使用class-dump命令可以对出砸壳出的解密文件进行解析,得到软件代码结构中的头文件,从而能了解到代码的结构框架和对外声明的方法。

还原源代码

以伪代码的形式最大程度的还原源代码

3. 修改源码

4. 重签名

iOS App在安装到手机的时候会进行证书签名认证

在之前的操作过程中,app的加密已经被破坏,这时候再重新打包是不能成功安装到手机中的,需要对app使用新的开发者证书重新签名。
这种重签名的机制被广泛应用于各大APP助手平台以及破解软件中

5.打包

软件开发过程中,在打包时会将对软件包进行签名

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,903评论 25 709
  • layout: wikititle: iOS逆向分析笔记categories: Reverse_Engineeri...
    超哥__阅读 11,041评论 3 16
  • 这事能不做嘛? 不能 那你还bb啥,抓紧好好做完完了 好
    Rutona阅读 247评论 2 0
  • 想写点什么纪念老公的好,不知从何下笔,突然想起之前看的日剧《我的家里空无一物》女主将家里无用的东西都处理掉了,甚至...
    光年123阅读 285评论 0 0
  • 在博弈论中,理性的选择就是“背叛”。当对方背叛时,你只有背叛才能失去最少,而对方选择合作时,你的背叛可以带来最多的...
    王麒宇阅读 325评论 0 0