- Author:ZERO-A-ONE
- Date:2022-07-30
本系列旨在记录我本人在使用基于M1 Pro的Apple Silicon芯片MacBook Pro笔记本搭建适用于二进制研究的环境,包括逆向、PWN之类的场景
0x1 Ghidra —— IDA的替代品
1.1 简介
众所周知,对于一个二进制CTFer or 研究院而言,一个良好的反汇编工具是生活工作必备良品。在这其中Interactive Disassembler公司推出的IDA Pro配合Hex Rays反编译器,一直都是广大用户的首选。但是IDA Pro需要到7.6版本才对Apple Silicon提供了原生ARM64的支持,虽然X64版本也可以在Rosetta2下出色的运行。在互联网中一直都缺乏IDA for macOS的泄漏版本,我们需要寻求一款替代品
我们可以把目光放到美国国家安全局NSA开发的Ghidra上,这是一款用Java Swing框架编写的GUI,反编译组件是用C++编写的。Ghidra的插件可以用Java或Python(通过Jython)开发。Ghidra的调试器支持通过WinDbg调试用户模式Windows程序,以及通过GDB调试Linux程序
Ghidra已经支持了以下架构或二进制格式:
- x86 16, 32 and 64 bit
- ARMand AARCH64
- PowerPC 32/64 and VLE
- MIPS 16/32/64
- MicroMIPS
- 68xxx
- Java and DEX bytecode
- PA-RISC
- PIC 12/16/17/18/24
- SPARC 32/64
- CR16C
- Z80
- 6502
- 8048, 8051
- MSP430
- AVR8, AVR32
- SuperH
- V850
如果想深入了解Ghidra的用法可以参考看雪课程《Ghidra操作手册》:
https://www.kanxue.com/book-section_list-64.htm
1.2 安装
1.2.1 JDK
因为Ghidra基于Java编写,所以我们首先需要安装JDK
https://www.oracle.com/java/technologies/downloads/#jdk18-mac
为了节省配置环境变量的步骤建议选择直接下载Apple Silicon安装版Arm 64 DMG Installer
https://download.oracle.com/java/18/latest/jdk-18_macos-aarch64_bin.dmg
接下来都是傻瓜式安装了
1.2.2 Ghidra
从官方Github下载发行版即可
https://github.com/NationalSecurityAgency/ghidra/releases
解压之后运行ghidraRun
即可
0x2 IDA Pro
看到了网上的师傅提供了在Apple Silicon上运行IDA Pro 7.6的解决方案,其主要核心技术是采用了wine的兼容层
兼容 M1 版本的 Wine 基本是都是国外大神 gcenx
预编译好的版本,我们只需要通过 brew
安装即可
如果不需要 python 环境,单独安装 winehq 也可以。但是 winehq python 环境配置不起来,IDA 配置winehq 会崩溃,也不能运行 bat 脚本
2.1 安装 wineskin
wineskin 可以帮助我们创建 wine 容器,制作 Mac App shell,还可以创建替身图标到 launchpad,通过 launchpad 就可以打开 IDA。
我们可以通过 brew
安装 wineskin
:
brew install --no-quarantine gcenx/wine/unofficial-wineskin
这里建议启用Clash的本地终端代理,不然国内走Git会很慢
安装完成后 launchpad 就会出现 wineskin,我们打开它并下载、创建一个容器:
2.2 配置 python 3 环境
到 python 官网下载 python 3.8
的 Windows 64 Bit 可执行包并解压放到 IDA 的根目录下,并命名为 python-3
:
https://www.python.org/ftp/python/3.8.10/python-3.8.10-embed-amd64.zip 47
2.3 创建启动脚本
复制以下内容,并保存为 run64.bat
并存放在 IDA 根目录
@set path=.\python-3;%path%
@set PYTHONPATH=.\python-3
@start ida64.exe
2.4 将准备好的 IDA 导入 Wine 容器
选择 Install Software
然后将 IDA copy 进去:
2.5 配置 wineskin 容器运行路径:
2.6 设置环境变量
打开注册表编辑器,找到以下路径:
HKEY_CURRENT_USER\Software\Hex-Rays\Python3TargetDLL
并设置至为(需要根据你的实际情况修改):
C:\Program Files\Hex-Rays\IDA Pro\python-3\python3.dll
注:如果找不到 Hex-Rays 路径,请先 test-run 一次 ida.exe,或手动创建;
如果找不到 Python3TargetDLL 键,请手动新增一个 字符串类型 键。
注意坑:不要去尝试通过安装版 python 配合 idapyswitch.exe 修改注册表,idapyswitch.exe 获取的 dll 路径并不正确,安装版 python 也不能正确设置 wine 环境变量,IDA 会崩溃。
给 wine 容器创建一个替身(图标需要自己在 wineskin 设置好),并移动到 /Application
目录下,然后就可以通过 launchpad 启动 ida 7.6 了:
python3 也可以正常使用了:
这里也可以直接使用原博主提供打包好的:
链接:https://pan.baidu.com/s/1todGWnAXMg6emvJooL58VA?pwd=8617
提取码:8617
0x3 虚拟机的选择
根据目前网友的研究总结,适用于Apple Silicon
-
pd:四百多一年,无破解,可通过自动改时间无限试用
-
pd跑windows:dx11,OpenGL 3.3
-
pd跑Linux:OpenGL 4.1,无vulkan
-
-
vmware:免费
- vmware跑windows:仅2D,无dx
- vmware跑Linux:OpenGL 4.3,需要还未发布的Linux 5.19内核和最新的mesa驱动(vmware的Linux驱动和工具是开源的)
-
utm:开源,支持越狱iOS,qemu的gui
- utm跑windows:仅2D,可以模拟x86的windows,但模拟win7之后就比较卡了,模拟win7或者xp比较流畅
- utm跑Linux:OpenGL 2.0,非常容易崩溃
结论:
- windows11 选pd
- 带GUI的Linux选vmware
- 命令行Linux选utm(或者lima)
注意:vmware跑Linux能得到OpenGL4.3,而苹果故意把macOS下的OpenGL版本锁死在4.1