开源白盒审计/静态代码分析检测系统:Hades

Hades 静态代码审核系统

经过调研,发现java字节码可以通过安卓sdk中的dx.jar转为smali字节码。这样一来,实现java白盒的代价就小了很多。虽然现在并不是在做白盒相关的工作,但是还是希望凭借自己对语言的理解,以及编码能力,自己构造出一个像样的白盒审计系统,所以便有了Hades这个白盒审计系统的项目。而之所以开源这套系统,也是希望能够吸引更多对白盒引擎开发感兴趣的人才加入到这个项目当中,一起维护这个项目。

开源白盒审计/静态代码分析检测系统:Hades
任务提交页面
开源白盒审计/静态代码分析检测系统:Hades
报告展示页面

整体架构设计

  • 前端:layUI
  • 后端:django实现文件接收接口,并对文件类型和合法性进行校验,通过redis消息队列将任务消息发布到消息队列中,传递给后端引擎。实现报告查看功能,根据上传页面上的提示地址在检测结束后,通过访问该地址来获取和查看检测报告。
  • 底层引擎:通过redis消息队列接收到任务信息,新建一个任务线程对上传的文件进行分析。针对源码的处理是,如果是maven管理的项目则使用mvn compile进行编译。如果是普通的java项目的话则使用javac进行单文件编译(考虑到整体编译的话会造成编译失败,遗失字节码文件)。然后,将最终得到的java字节码文件转为smali字节码文件(为什么要转为smali字节码文件呢?后面会进行说明),最后将最终的字节码文件作为输入传递给主引擎程序进行执行分析。
开源白盒审计/静态代码分析检测系统:Hades
软件整体的执行流程示意图

安装与使用

项目地址:https://github.com/zsdlove/Hades

使用: