使用Scoop简化Windows逆向环境搭建

作为码农及安全行业从业人员,在工作中会使用到各种开发、逆向、分析、调试等工具。不少人都会在成长的过程中,构建一套符合自身习惯的环境,或者采用Kali Linux、Appie、吾爱破解工具箱之类的预装环境。上古时代,收集各种论坛发布的工具箱也是乐趣之一,从中可以搞到一些有趣的插件,学习一些配置。

工作之后,尤其是这几年给不少新人做了入职培训,遇到如下情况:

  • Windows为主:公司默认配备了Windows笔记本,且有文档编辑需求,大多数人必须使用Windows;
  • 环境一团糟:员工会按照自己的习惯搭建一套自己的环境,而且大多数人喜欢就地解压,环境变量随意配置;
  • 来源不明:配置工作环境比较原始,包括但不限于U盘拷贝、IM传送、FTP、甚至随便从什么地方下载;
  • 重复工作:自动化的服务器需要手动配置;

上述情况带来的问题十分明显,抛开琐碎和重复的工作,工具版本过低、冲突导致的问题时常出现,十分影响效率。

最初我尝试推广Powershell、ConEmu、Cmder等工具,并通过构建PowerShell profile维护启动命令行、编写简单脚本等,能够解决部分问题。直到去年偶然遇到了Scoop,才解决了所有问题。

Scoop是一个Windows上的命令行包管理器,使用PowerShell编写,代码十分精简。关于Scoop的基本使用,可以参考少数派的文章和的h404bi博客文章。对于我个人而言,Scoop有如下优点:

  • 十分精简:安装简单,在Windows 10上开箱即用。
  • 以开发工具为主,配合extrasjava仓库基本够用,包括常见的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 NameHome page
apktoolhttps://github.com/iBotPeaches/Apktool
assetstudiohttps://github.com/Perfare/AssetStudio
axmlprinterhttps://github.com/rednaga/axmlprinter
baksmalihttps://github.com/JesusFreke/smali
bytecode-viewerhttps://github.com/Konloch/bytecode-viewer
cff-explorerhttp://www.ntcore.com/exsuite.php
cfrhttp://www.benf.org/other/cfr/
classysharkhttps://github.com/google/android-classyshark
dex2jarhttps://github.com/pxb1988/dex2jar
diehttps://github.com/horsicq/DIE-engine
dynamoriohttps://github.com/DynamoRIO/dynamorio
gdahttp://www.gda.wiki:9090/index.php
ghidrahttps://ghidra-sre.org/
il2cppdumperhttps://github.com/Perfare/Il2CppDumper
jadxhttps://github.com/skylot/jadx
jd-cmdhttps://github.com/kwart/jd-cmd
libimobiledevicehttps://github.com/libimobiledevice-win32/imobiledevice-net
luytenhttps://github.com/deathmarine/Luyten
pinhttps://software.intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool
recafhttps://github.com/Col-E/Recaf
rekohttps://github.com/uxmal/reko
simplifyhttps://github.com/CalebFenton/simplify
smalihttps://github.com/JesusFreke/smali
snowmanhttps://derevenets.com/

目前,仓库收录的工具还不算多,以后会根据需求添加,逐步完善。

发表评论