【iOS逆向工程】从脱壳到获取源码
来源:互联网 发布:手机淘宝热卖在哪里 编辑:程序博客网 时间:2024/05/18 21:05
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 root@xx.xx.xx.xx
,(xx.xx.xx.xx)为你的手机的IP地址。接下来会需要你输入密码,注意这时候的密码不是你的mac密码,也不是你的iPhone密码,是一个默认的密码:alpine
(谁被坑过谁知道……)
然后就是cd到你的bin目录下:root# cd /usr/bin
至此你可以使用clutch的相关命令了!输入clutch -i 来查看你所有可以脱壳的app吧!
不出意外系统将为你罗列出所有可以脱壳的app,想脱谁就翻谁的牌子吧~
举个栗子,你想翻2号app的牌子,输入clutch -b 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逆向工程】从脱壳到获取源码
- iOS逆向工程之给App脱壳
- iOS逆向工程之App脱壳
- iOS逆向工程之App脱壳
- iOS逆向工程之App脱壳
- iOS逆向工程之App脱壳
- 【Mybatis从0到1-017】逆向工程
- iOS逆向工程——获取app素材图片
- iOS逆向工程三:苹果私有API的获取
- ios 逆向工程
- IOS逆向工程
- iOS逆向工程介绍
- iOS应用逆向工程
- iOS逆向工程读书笔记
- iOS 逆向工程
- iOS逆向工程
- iOS逆向工程简介
- iOS逆向工程基本概念
- Windows下执行django-admin.py提示不存在问题处理方法
- FilenameFilter 回调
- luogu1034[矩形覆盖]
- Android Studio报错usage of API documented as @since 1.8
- 图侦综合实战平台
- 【iOS逆向工程】从脱壳到获取源码
- Angular学习笔记(1)——TypeScript基础
- Redis之远程访问问题-yellowcong
- android 6.0以上权限设置
- bootstrap后台管理模板
- JavaWeb学习心得之HttpServletRequest对象
- Linux---another app is currently hold yum lock
- 使用命令行+代理更新Android SDK
- webpack-dev-server 2.8.1 无法在IE10正常工作