作为码农及安全行业从业人员,在工作中会使用到各种开发、逆向、分析、调试等工具。不少人都会在成长的过程中,构建一套符合自身习惯的环境,或者采用Kali Linux、Appie、吾爱破解工具箱之类的预装环境。上古时代,收集各种论坛发布的工具箱也是乐趣之一,从中可以搞到一些有趣的插件,学习一些配置。
工作之后,尤其是这几年给不少新人做了入职培训,遇到如下情况:
- Windows为主:公司默认配备了Windows笔记本,且有文档编辑需求,大多数人必须使用Windows;
- 环境一团糟:员工会按照自己的习惯搭建一套自己的环境,而且大多数人喜欢就地解压,环境变量随意配置;
- 来源不明:配置工作环境比较原始,包括但不限于U盘拷贝、IM传送、FTP、甚至随便从什么地方下载;
- 重复工作:自动化的服务器需要手动配置;
- …
上述情况带来的问题十分明显,抛开琐碎和重复的工作,工具版本过低、冲突导致的问题时常出现,十分影响效率。
最初我尝试推广Powershell、ConEmu、Cmder等工具,并通过构建PowerShell profile维护启动命令行、编写简单脚本等,能够解决部分问题。直到去年偶然遇到了Scoop,才解决了所有问题。
Scoop是一个Windows上的命令行包管理器,使用PowerShell编写,代码十分精简。关于Scoop的基本使用,可以参考少数派的文章和的h404bi博客文章。对于我个人而言,Scoop有如下优点:
- 十分精简:安装简单,在Windows 10上开箱即用。
- 以开发工具为主,配合extras和java仓库基本够用,包括常见的Runtime和IDE,以及x64dbg、dnSpy等工具也包括在内。
- 不会污染环境变量,Scoop会创建shims作为启动脚本。
- 社区活跃,更新相对及时。
- 有一定自由度,可以自行添加仓库。
所以,从去年开始习惯Scoop之后,我尝试制作了一个和逆向相关的仓库,用于收录一些常用但是没被包含的逆向工具。地址和使用方法参考: https://github.com/TheCjw/scoop-retools 。
所以,现在的环境搭建十分轻松,只需要一个PowerShell脚本即可完成常见工具的安装。当然,有一个稳定的代理是关键。如配置基本的Android逆向环境,在安装好Scoop之后,可以运行如下脚本安装:
scoop install git # 可选,如果没有安装Git,需要先安装Git scoop bucket add java # 添加Java仓库 scoop bucket add retools https://github.com/TheCjw/scoop-retools.git scoop install oraclejdk # 安装JDK scoop install apktool axmlprinter baksmali bytecode-viewer cfr classyshark dex2jar gda jadx jd-cmd luyten recaf smali
国内的用户最好给Scoop挂上HTTP代理,参考Using Scoop behind a proxy:
# anonymous authentication to proxy.example.org on port 8080: scoop config proxy proxy.example.org:8080
运行完成后,基本上Android逆向需要的工具,都可以直接通过命令行直接使用。
目前,仓库中包含的工具如下:
App Name | Home page |
---|---|
apktool | https://github.com/iBotPeaches/Apktool |
assetstudio | https://github.com/Perfare/AssetStudio |
axmlprinter | https://github.com/rednaga/axmlprinter |
baksmali | https://github.com/JesusFreke/smali |
bytecode-viewer | https://github.com/Konloch/bytecode-viewer |
cff-explorer | http://www.ntcore.com/exsuite.php |
cfr | http://www.benf.org/other/cfr/ |
classyshark | https://github.com/google/android-classyshark |
dex2jar | https://github.com/pxb1988/dex2jar |
die | https://github.com/horsicq/DIE-engine |
dynamorio | https://github.com/DynamoRIO/dynamorio |
gda | http://www.gda.wiki:9090/index.php |
ghidra | https://ghidra-sre.org/ |
il2cppdumper | https://github.com/Perfare/Il2CppDumper |
jadx | https://github.com/skylot/jadx |
jd-cmd | https://github.com/kwart/jd-cmd |
libimobiledevice | https://github.com/libimobiledevice-win32/imobiledevice-net |
luyten | https://github.com/deathmarine/Luyten |
pin | https://software.intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool |
recaf | https://github.com/Col-E/Recaf |
reko | https://github.com/uxmal/reko |
simplify | https://github.com/CalebFenton/simplify |
smali | https://github.com/JesusFreke/smali |
snowman | https://derevenets.com/ |
目前,仓库收录的工具还不算多,以后会根据需求添加,逐步完善。