逆向-砸壳导出头文件-(三)frida
前言
上一篇介绍了用dumpdecrypted砸壳方法,觉得超级麻烦有没有?难道没有更方便的操作吗?嘻嘻,我们要感谢这位大佬,同时他也是MonkeyDev的作者,他弄了个工具,让我们可以一键砸壳,执行一个命令,便可以得到ipa包,进而用class-dump导出头文件,是不是很爽?废话不多说,直接进入主题,第三种方式-Frida。
准备
越狱的iPhone
安装frida
打开cydia添加源: https://build.frida.re
打开这个源,安装frida
电脑安装usbmuxd,class-dump,python,wget,pip
usbmuxd可通过下面命令安装,前提是你Mac装了Homebrew
1brew install usbmuxd如果你安装了或者打算装 Monkey Dev 的,就可以不用装 class-dump,因为它里面已经自带了。自己安装 class-dump 可以通过此地址下载,下载后打开,把里面的 class-dump 复制到 /usr/local/bin 路径下,打开终端,执行:
1class-dump成功安装好class-dump~
dumpdecrypted/class-dump命令成功.png)使用命令安装python
1brew install python如果你之前装过python,要把python切换到2.7,因为frida是在2.7环境下运行的。
使用命令安装wget
1brew install wget使用命令安装pip
1234# 先执行wget https://bootstrap.pypa.io/get-pip.py# 然后再执行sudo python get-pip.py
过程
安装Frida
安装 frida for mac
终端执行:
1sudo pip install frida如果报了个错误含有six报错的,例如
1Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.执行下面命令解决(网上好多都是一个 -,其实是两个 -):
1sudo pip install --upgrade frida --ignore-installed six配置 frida-ios-dump 环境
执行下面命令下载安装:
1234567891011# 创建文件夹sudo mkdir /opt/dump# 到此目录下cd /opt/dump# git下载下来sudo git clone https://github.com/AloneMonkey/frida-ios-dump# 安装sudo pip install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade因为这是和iOS建立连接用的,所以修改 dump.py 的一些ssh参数
到这个目录(/opt/dump/frida-ios-dump/)下打开dump.py这个文件,修改里面参数:
1234User = 'root'Password = 'alpine'Host = '127.0.0.1'Port = 12345
为了方便输入命令,我们给dump设置别名
终端输入:
1234vim ~/.bash_profile# 按e选择编辑,然后再按i,你才能修改内容,在最后添加alias dump.py="/opt/dump/frida-ios-dump/dump.py"然后按esc键,输入保存命令:
1:wq然后我们要使别名生效:
1source ~/.bash_profile
砸壳
链接手机
usb插上iPhone,终端输入:
1iproxy 12345 22这里切记端口号要和你上面dump.py里面设置的端口号一致
保持你要砸壳的app在前台,终端执行:
1dump.py -l找到你想要砸壳的app,执行:
1dump.py WeChat你会看到屏幕会一直在跳动,直到出现
10.00B [00:00, ?B/s]Generating "微信.ipa"砸壳后的ipa包就已经在你运行命令的目录下了,你可以执行ls查看,并且用mv命令移到你想放的地方:
导出头文件
拿到可执行文件
从上面砸壳我们已经成功得到砸完壳的ipa包了,右键解压,然后你会发现一个Payload文件夹,右键显示包内容,在里面找到 WeChat 这个文件,把它复制出来放到你喜欢的路径下,这就是微信的可执行文件啦,我们要利用这个文件来导出头文件。
导出头文件
用class-dump导出头文件,到终端执行:
1class-dump -H <你放WeChat可执行文件的路径> -o <你打算放导出的头文件的文件夹路径>是不是很舒服,用frida,论站在巨人的肩膀能省多少事。
总结
至此,三种方法砸壳&获取头文件演示完毕,个人非常推荐最后这一种方式砸壳,简单快捷,省下来的时间用来分写他们的代码好过。最后希望文章能帮到各位读者,有错欢迎指教,砸壳获取头文件这只是个开始,接下来的逆向之路还很长,笔者继续潜心修炼去了。
原文作者: JackNehc
原文链接: https://jacknehc.github.io/2019/03/28/逆向-砸壳导出头文件-frida/
许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议