【iOS逆向工程】从脱壳到获取源码

ios端的app在上线前会由app store添加一个二进制文件,类似于android的混淆处理,用于防止反编译,但是往往有时候出于一些不可描述的动机,我们会想像一些大牛们学习一些经验,孔乙己说过:读书人窃书不算偷,带着一颗批判的心,我学习了一下反编译的技术,在此做一个简单的记录(手动滑稽)。
总的来说,反编译技术可以概括为以下几步:

  • 脱壳
  • 获取源码.h文件
  • 获取关心的伪代码

脱壳

脱壳即脱去app的二进制加密外壳,从而得到这个app的ipa包的过程。有一些第三方的工具,这里介绍一款叫clutch的东西,使用简单易上手。
(友情提示:如果你的手机没有越狱,看到这里就可以结束了,因为接下来的步骤需要一台已越狱的手机)
首先去GitHub下载clutch:https://github.com/KJCracks/Clutch/releases
直接下载最新版即可。下载后把你下载的文件命名为 clutch ,然后使用iTools、ifunbox之类的工具把你的clutch文件放进越狱手机的Device->usr->bin目录下。


注意:
1. 不是user,是usr。。。别问我为什么在这提醒你。。我也蛋疼过。。。
2. 可以不把你的clutch xx.x.x命名成clutch,但是一定要记住你的clutch文件叫什么,因为下面的操作需要输入与之对应的文件名


到此手机端的准备已经完成。(惊不惊喜?意不意外?开不开心?)
接下来确认一点:你的手机连上了WiFi并且与你的mac连着同一个wifi。OK继续,打开手机的设置–>无线局域网 找到你链接的wifi,点击最右边的i 查看你的IP地址。
接着打开你mac的终端,输入指令:ssh [email protected],(xx.xx.xx.xx)为你的手机的IP地址。接下来会需要你输入密码,注意这时候的密码不是你的mac密码,也不是你的iPhone密码,是一个默认的密码:alpine (谁被坑过谁知道……)
然后就是cd到你的bin目录下:root# cd /usr/bin 至此你可以使用clutch的相关命令了!输入clutch -i 来查看你所有可以脱壳的app吧!
【iOS逆向工程】从脱壳到获取源码_第1张图片
不出意外系统将为你罗列出所有可以脱壳的app,想脱谁就翻谁的牌子吧~
举个栗子,你想翻2号app的牌子,输入clutch -b 2回车即可~是不是美滋滋~
效果如下:
【iOS逆向工程】从脱壳到获取源码_第2张图片

获取.h文件

上一步完成后,会看到紫色部分有一段finish... to ...的字样,它告诉我们我们去壳后的文件呗放在哪了,有了这个路径,就很简单了,我们之前用什么黑科技把clutch放进我们手机的(iTools/ifunbox/…),现在也就用什么黑科技把这个目录下的去壳文件拿出来就好~
通过破壳步骤,可以获取到ipa包,实际上ipa包是一种压缩包格式,可以直接使用解压工具解压。解压后可以获得app的二进制可执行文件,以及.app 包(如果解压不了可以尝试把后缀名改成.zip)。在mac上对app包进行“查看包内容”,可以看到包内的可执行文件,未经处理的资源文件(如声音,图片等),bundle资源文件,以及经过编译的nib 布局文件等。
拿到ipa包的可执行文件之后,在mac上可以通过工具来进行反汇编。常
见的反汇编工具有class-dump,Hopper Disassembler等。
安装的教程以class-dump为例,看这个即可,这里就不再多介绍安装啦。
安装完成class-dump后,即可使用以下命令进行反编译:

class-dump -H /Applications/你的app名.app -o /Users/aa/bb/cc

其中aa/bb/cc这一串是你要输出的文件夹路径,这样回车运行完就可以到这个路径下去找反编译出来的.h文件了

ps.可能会存在class-dump没有运行权限的问题,这种情况可以选择dmg文件下载后,将dmg文件中的class-dump复制到/usr/bin目录,并在Terminal中执行”sudo
chmod xxx/usr/bin/class-dump” 命令赋予其执行权限。其中xxx是你mac的用户名.

以上,我们就可以拿到反编译的头文件内容了,感谢阅读~

你可能感兴趣的:(心得,反编译,ios)