
StaCoAn 是一款__跨平台__工具,帮助开发者、漏洞赏金猎人和白帽黑客对移动应用*执行静态代码分析。
此工具将查找代码中可能包含以下内容的感兴趣的行:
此工具在创建时非常注重用户界面的易用性和图形化引导。
对于急于尝试的人,请从发布页面下载。
*: 请注意,目前仅支持 apk 文件,但 ipa 文件很快也会支持。
可以在此处找到示例报告 这里。
其概念是,您将移动应用程序文件(.apk 或 .ipa 文件)拖放到 StaCoAn 应用程序上,它将为您生成一份可视化且可移植的报告。您可以调整设置和词表以获得定制化体验。
报告包含一个方便的树形查看器,您可以轻松浏览反编译后的应用程序。

掠夺功能 允许您'掠夺'(~书签)那些对您有价值的发现,在掠夺页面上您将获得'掠夺'战利品的概览。
最终报告可以导出为 zip 文件,并与其他人员共享。
该应用程序使用词表来查找代码中感兴趣的行。词表格式如下:
API_KEY|||80||| This contains an API key reference
(https|http):\/\/.*api.*|||60||| This regex matches any URL containing 'api'
请注意,这些词表支持 regex 条目。
在 exclusion_list.txt 中,您可以定义排除项(如果由于某种原因发现结果过多):
(https|http):\/\/.*api.*|||"res","layout"||| Like previously, note that "res","layout" resembles the path
(https|http):\/\/.*api.*|||||| To exclude everywhere
任何源文件都会被处理。包括 '.java', '.js', '.html', '.xml',... 等文件。
数据库文件也会被搜索关键词。数据库还带有一个表查看器。

报告设计为适配所有屏幕尺寸。


此工具在处理混淆代码时会遇到困难。如果您是开发者,请尝试在运行此工具之前关闭混淆进行编译。如果您是攻击方,祝你好运,兄弟。
如果您想尽快开始,请前往发布页面下载与您操作系统对应的可执行文件或压缩包。
如果您下载了发布版 zip 文件,请解压它。
在 Windows 上,您只需双击可执行文件。它将以服务器模式打开,您只需在 web 界面中拖放您的移动应用程序即可。

在 Mac 和 Linux 上,您可以直接在终端中运行它,无需参数即可进入服务器模式。
./stacoan
将此文件拖放到可执行文件上。
或者您可以指定一个 apk 文件,在没有服务器模式的情况下运行它:
./stacoan -p test-apk.apk
报告将放在一个与 apk 同名文件夹中。
cd docker
docker build . -t stacoan
确保您的应用程序位于 /yourappsfolder 路径下。
docker run -e JAVA_OPTS="-Xms2048m -Xmx2048m" -p 8888:8888 -p 7777:7777 -i -t stacoan
通过 http://127.0.0.1:7777 拖放您的应用程序。
git clone https://github.com/vincentcox/StaCoAn/
cd StaCoAn/src
确保您已安装 pip3:
sudo apt-get install python3-pip
安装所需的 Python 包:
pip3 install -r requirements.txt
通过命令行运行 StaCoAn:
python3 stacoan.py -p yourApp.apk
或者 如果您更喜欢使用拖放界面:
python3 stacoan.py
确保您位于 src 文件夹中。
cd src
安装 PyInstaller:
pip3 install pyinstaller
PyInstaller 无法处理含有代码的子文件夹,因此我们需要将代码放在一个文件夹中。
sed -i 's/from helpers./from /g' helpers/*
sed -i 's/from helpers./from /g' stacoan.py
sed -i 's/os.path.join(parentdir, "config.ini")/"config.ini"/g' helpers/logger.py
cp helpers/* ./ || :;
构建 stacoan:
python3 -m PyInstaller stacoan.py --onefile --icon icon.ico --name stacoan --clean
PyInstaller 无法处理含有代码的子文件夹,因此我们需要将代码放在一个文件夹中。
# Note the ''-> this is because sed syntax is different on mac.
sed -i '' 's/from helpers./from /g' helpers/*
sed -i '' 's/from helpers./from /g' stacoan.py
sed -i '' 's/os.path.join(parentdir, "config.ini")/"config.ini"/g' helpers/logger.py
cp helpers/* ./ || :;
构建 stacoan:
python3 -m PyInstaller stacoan.py --onefile --icon icon.ico --name stacoan --clean
PyInstaller 无法处理含有代码的子文件夹,因此我们需要将代码放在一个文件夹中。
sed -i 's/from helpers./from /g' helpers/*
sed -i 's/from helpers./from /g' stacoan.py
sed -i 's/os.path.join(parentdir, "config.ini")/"config.ini"/g' helpers/logger.py
cp helpers/* ./ || :;
构建 stacoan:
python3 -m PyInstaller stacoan.py --onefile --icon icon.ico --name stacoan --clean
整个程序的价值取决于它使用的词表。最终,结果才是最重要的。构建词表很容易(与编写实际代码相比),但它对最终结果影响最大。您可以通过制作词表为社区提供最大帮助。
如果您想轻松地发布您的想法,请访问:http://www.tricider.com/brainstorming/2pdrT7ONVrB。在那里您可以添加词表条目的建议。
也非常欢迎改进代码。
如果贡献足够大,您将在 authors 部分被提及。
res/layout 中的 http 以及通常的 http://schemas.android.com/apk/res/android本项目使用了以下项目:
所有这些项目都有其相应的许可证。在修改和重新分发本项目时,请尊重它们。
*: 该二进制文件包含在本项目中。如果 JADX 的开发人员对此感到不适,请随时与我联系,以便我们找到解决方案。
还有很多人应该被列出,但我无法一一列举。
| 项目创建者 |
|---|
|
|