Skip to content

lyly1122/MiniSentry-Static

 
 

Repository files navigation

MiniSentry Static Analyzer

Static Analysis Python 3.11

MiniSentry Static 是小程序安全分析工具链中的静态分析模块。本部分包含其核心源码,支持对小程序项目进行静态代码分析。

🚀 快速开始

Node.js 依赖

# 确保设备上拥有Node.js环境
node -v

如果特定版本的 Node.js 导致程序运行出现异常,请考虑使用 Node.js v20.18。

Python 依赖

# 创建并激活 Python 3.11 虚拟环境 (推荐)
python3.11 -m venv venv
source venv/bin/activate

# 安装依赖
cd MiniSentryStatic
pip install -r requirements.txt

运行静态分析

# 基本用法 (在 MiniSentryStatic 目录下执行)
python main.py -i [INPUT_PROJECT_PATH] -o [OUTPUT_JSON_PATH]

# 示例:使用预反编译的测试包
python main.py -i ../ReversedPackages/wxe54b7a00b72afa2f

# 示例:自定义输出位置
python main.py -i ~/projects/my_miniapp -o ~/analysis/report.json

参数说明

  • -i/--input (必需):小程序项目根目录路径

  • -o/--output:结果输出文件路径 (默认为 ./output.json)

🔧 可选:小程序反编译

使用内置反编译工具

  1. 将原始小程序包放入 OriginalPackages/ 目录,其应满足以下结构:
wxebadf544ddae62cb/       # 微信小程序id
└── 40/                   # 版本编号
    ├── __APP__.wxapkg    # 小程序主包
    ├── subpackage.wxapkg # 小程序分包(可选)
    └── ......
  1. 执行批量反编译:
python decompile.py  # 输出至 ReversedPackages/
  1. 自定义输入/输出路径:
python decompile.py -i D:/downloads/packages -o D:/reversed_projects

手动使用 Unveilr

MiniSentryStatic/tool下提供了三种不同的反编译程序,我们推荐直接使用更强大的反编译工具 Unveilr。Unveilr 的具体使用方式请见junxiaqiao/unveilr-v2.0.0

📂 项目结构

MiniSentryStatic/
├── src/                  # 静态分析核心源码
├── tool/                 # 反编译工具集
│   ├── unveilr.exe       # Unveilr 反编译器
│   └── ...               # 其他反编译工具
├── main.py               # 主入口脚本
├── decompile.py          # 批量反编译脚本
└── requirements.txt      # 依赖清单

📕 后话

本仓库为第十八届全国大学生信息安全竞赛作品赛三等奖作品:“MiniSentry——基于任务驱动的规避型恶意小程序检测系统”的静态分析部分。

只有三等奖其实还是颇为不服气的,结合我们对往届比赛作品广泛的调研来看,我们的作品从内容和深度上是完全值得一等奖的。那么为什么没有呢?从赛后复盘来看,以下是我总结的一些经验:

  • 内容不要过多。决赛答辩严格控制时间,只有 18 分钟的时间用于 PPT 和演示,内容太多就会导致无法介绍到一些较为深入的细节,反而容易让评委觉得没干什么东西。我们的作品覆盖静态分析、动态分析、code2vec、系统设计思想等,展示时间完全不够用,努力的成果展现不出来。

  • 代码无用。纠结代码细节不如请个优秀的美工帮你设计前端和 PPT。确实如此,无论是初赛还是决赛,参赛队伍那么多,0 个人关心你的代码是不是真的写出来了,会吹牛才是最重要的。这点上可以参考十七届作品赛的同赛道作品ScopeChecker,人家能拿一等奖,确实是掌握了吹牛的精髓。

  • 看脸。你在决赛中面对的数个评委,谁也不知道是什么货色。有的可能领域不熟就指点江山,有的可能一边吃冰棍一边听你扯淡,有的可能至始至终没有翻过一页你的报告。如果真就磕到甲沟炎了那就认命吧。

尽管如此,我觉得我设计的静态分析框架还是很不错的,虽然核心功能上(比如完整的数据流分析)并没有真正很好地做出来(这也不是这个比赛需要的),但是这个框架还是很适合后来的团队使用的,你只需要继承任务类,实现五个简单的抽象方法,就完成了一个小程序分析的模块。

大概我本身就喜欢搭建框架吧,我希望我磨这么久的一个任务框架还可以被未来的同学用上。所以如果你也在寻求加分,以小程序安全为主题,那么欢迎试一试我的这个框架,我希望它能对你有所帮助。如果有什么看不懂的地方,欢迎联系我;如果对你有用,也希望你不吝惜一个 Star。

About

第十八届全国大学生信息安全竞赛作品赛三等奖作品:“MiniSentry——基于任务驱动的规避型恶意小程序检测系统”的静态分析部分

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 53.8%
  • Python 46.2%