资讯专栏INFORMATION COLUMN

iOS逆向初体验之class-dump

Jinkey / 336人阅读

摘要:容我先百度一番今天来介绍的就是一款神器名曰。单单操作系统的肯定不能满足我们,要用一个真正的来试试,那我们就用美柚来试试吧。主流的方法应该是使用工具,关于如何砸壳,这里不进行赘述,有兴趣的同学可以自行百度。

从零开始

一直以来对逆向工程都有极大的兴趣,突破禁忌的快感总是难以言表,之前对iOS逆向工程可谓是一个小白,今天就从零开始,开启自己的学习之路。既然是从零开始,当然要站在巨人的肩膀上。容我先百度一番:)今天来介绍的就是一款神器名曰class-dump。

class-dump环境配置

class-dump,顾名思义,就是用来dump目标对象的class信息的工具。它利用Objective-C语言的runtime特性,将存储在Mach-O文件中的头文件信息提取出来,并生成对应的.h文件。
下载安装:http://stevenygard.com/projec...
安装方式也非常简单,将下载得到的dmg解压后,放在/usr/local/bin目录下,在Terminal输入 class-dump 如下图所示

表示已经顺利安装成功,然后执行"sudo chmod 777 /usr/bin/class-dump" 命令赋予其执行权限。

开始使用

安装好我们的主角,肯定要请来一位实验品,就拿mac自带的应用程序计算器(calculator)来小试身手吧。
在Terminal中输入:class-dump -H /Applications/Calculator.app -o /Users/David/Desktop/test heads
前者是calculator.app的路径,后者是dump出来头文件的路径。不出意外的话,你就得到了calculator app的所有头文件啦。
单单操作系统的app肯定不能满足我们,要用一个真正的iOS app来试试,那我们就用美柚app来试试吧。想用Appstore上了app来尝试,你需要先给app砸壳,顾名思义也就是相当于Appstore下载的App是苹果加密过的, 可执行文件套上了一层保护壳. class-dump无法作用于加密过的App。所以,要想获取头文件,首先得破解加密的可执行文件,俗称“砸壳”。主流的方法应该是使用dumpdecrypted工具,关于如何砸壳,这里不进行赘述,有兴趣的同学可以自行百度。看官们可能要问了,不砸壳怎么获取app呢?这时候就要想起我们的越狱市场了,我这里用的是同步助手,在上面的越狱市场上下载美柚app,将后缀改为zip,解压后就可以得到我们想要的.app文件了。(这里小小的吐槽一下,越狱市场上版本更新略慢啊!)用上面的步骤,dump美柚的头文件得到下图

可以看到AF开头的AFNetworking也在里头,也就是说dump出来的包含你的第三方代码等所有头文件。
我们选取一个叫做IMYLineView.h来看看


为什么貌似dump出来的方法还更多呢?打开IMYLineView.m文件,我们可以看到,原来dump出来的还包含写在.m里头的方法。看到这里,是不是感觉到class-dump真乃神器!
这就是class-dump的一个简单使用。

一些思考

正所谓魔高一尺,道高一丈,class-dump这么牛掰,有没有什么办法可以避免头文件惨遭其他程序员视奸呢?当然有!这里有一篇念茜大大的文章,给我们提供了一个很好的并且可行的思路。
原文地址:http://blog.csdn.net/yiyaaixu...
其中主要的思路是在Build Phrase中设定在编译之前进行方法名的字符串替换,可以将一些关键的方法混淆,达到隐藏方法名的目的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/16561.html

相关文章

  • iOS开发系列--代码混淆

    摘要:以下内容大部分来源于实现原理其实插件的实现方式十分简单,提取用户编写的文件中的方法名,使用宏定义将其更换为任意的无规则字符串。 由于iOS系统的封闭性,相对于安卓来说,iOS开发过程中代码混淆可能就显得并不是得非有不可了。但是在安全性(可通过class-dump反编译暴露出类的方法名)和特殊需求上(例如马甲包的混淆过审)还是有一定需求的!此脚本借鉴于kaich/codeobscure。...

    zhichangterry 评论0 收藏0
  • iOS开发系列--代码混淆

    摘要:以下内容大部分来源于实现原理其实插件的实现方式十分简单,提取用户编写的文件中的方法名,使用宏定义将其更换为任意的无规则字符串。 由于iOS系统的封闭性,相对于安卓来说,iOS开发过程中代码混淆可能就显得并不是得非有不可了。但是在安全性(可通过class-dump反编译暴露出类的方法名)和特殊需求上(例如马甲包的混淆过审)还是有一定需求的!此脚本借鉴于kaich/codeobscure。...

    chenatu 评论0 收藏0
  • 慕课网_《iOS基础入门Foundation框架体验》学习总结

    时间:2017年05月10日星期三说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:无个人学习源码:https://github.com/zccodere/s... 第一章:Foundation结构简介 1-1 Foundation结构关系 Foundation.framework Foundation:基础 framework:框架 基础框架 Fou...

    desdik 评论0 收藏0
  • 「码个蛋」2017年200篇精选干货集合

    摘要:让你收获满满码个蛋从年月日推送第篇文章一年过去了已累积推文近篇文章,本文为年度精选,共计篇,按照类别整理便于读者主题阅读。本篇文章是今年的最后一篇技术文章,为了让大家在家也能好好学习,特此花了几个小时整理了这些文章。 showImg(https://segmentfault.com/img/remote/1460000013241596); 让你收获满满! 码个蛋从2017年02月20...

    wangtdgoodluck 评论0 收藏0
  • 【腾讯Bugly干货分享】移动App入侵与逆向破解技术-iOS

    摘要:会在目标程序启动时,会根据指定的规则检查指定目录是否存在第三方库,如果有,则会通过修改二进制的,来把自己注入进所有的当中,然后加载第三方库。 本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/577e0acc896e9ebb6865f321 如果您有耐心看完这篇文章,您将懂得如何着手进行app的分析、追踪、注入等实用的...

    bingchen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<