# sharpsword **Repository Path**: catch_wind/sharpsword ## Basic Information - **Project Name**: sharpsword - **Description**: 中国利剑,Gradle构建的Java项目。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-11-12 - **Last Updated**: 2022-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 中国利剑 ![](./asset/img/sharpsword-red.svg) ![](./asset/img/JDK-1.8+-green.svg) ![](./asset/img/gradle.svg) [![](./asset/img/english.svg)](README.md) 项目的初衷是打造一款国内自主设计自主可控的代码质量与安全的检测引擎。罗马非一日建成。 ## 引擎设计 设计之初先做个单机版,后期考虑做个分布式计算版本。 ### 代码文件加载模块 初步支持Java,计划支持PHP,C++,Python,Go,Kotlin,JavaScript等 1. 对于Java计划支持`.java` `.jsp` `.class`,前面两者根据支持构建的工程分别构建成class文件,如Gradle,Maven,Ant等。 1. 一般漏洞貌似都会采用PHP做案例,难道就因为PHP是世界上最好的语言?也是这个是重灾区。脚本化语言,与系统直接接触,不安全要素多。 ### 规则库加载模块 规则库一般是指 BugPattern, BugCategory,Detector,BugCode等,都属于规则库范畴,这些解决了引擎运行时候规则可定制化问题。 采用三种加载方式 1. xml加载 1. json加载 1. sql加载(采用mybatis,拒绝使用jpa,hibernate) 1. 方法参数加载 > BugPattern 国际化 对于BugPattern这种需要国际化处理,支持的语言不仅仅限于中文与英文,更应该支持更多的语言。如韩文,日文,德语,法语,阿拉伯语等。 ### 引擎检测核心模块 设计四种分析方式,从基础机械式到人工智能 1. 字节码分析 * ASM:是一个轻量级的类库,但需要涉及到JVM的操作和指令 * [BCEL(Apache Byte Code Engineering Library)](http://commons.apache.org/proper/commons-bcel/) * [Javassit](http://www.javassist.org/):要简单的多,完全是基于Java的API,但其性能相比BCEL,CGLib要差一些 * [CGLib]():CGLib的底层基于ASM实现,是一个高效高性能的生成库 2. 文本语义分析 * 语言设计规则分析 * 语法树 1. 机器学习 * 监督学习 * 分类聚类 * 决策树 * 特征识别 * 如果后期数据量大可以深度学习,自动挖掘信息。 1. 统计分析 * 预留,还没有想好 ### 报告处理模块 #### 报告处理 1. xml文件 1. json文件 1. html文件 1. pdf文件 1. word文件 1. excel统计分析文件 1. Java public方法返回结果,可供调用 1. sql写入数据库 > Java public方法返回结果 Java public方法返回结果是必须设计的,因为引擎只是一个client,如果想要做成一个server,就需要用将这个引擎作为依赖集成。 集成之后就可以直接调用引擎提供的方法即可获取结果。 #### 异常处理 1. html报告 ## 技术栈 名称| 用途 | 理由 | 官网 ---|---|---|--- IDEA | 代码编辑IDE | 现代化代码生产平台 |https://www.jetbrains.com/ Java | 编写项目| 跨平台,生态强大| www.oracle.com Gradle | 项目构建 | 地表最强项目构建工具,不接受反驳| www.gradle.org Slf4j | 日志门框架 | 支持随意切换底层日志框架 | logback | 日志记录 | SpringBoot等著名框架默认日志框架 | lombok | 代码简洁工具 | 语法糖减少某些通用代码书写 | MyBatis | ORM框架 | 半自动化的灵活ORM框架,支持N种数据库 | MyBatis-Plus |MyBatis的补充 | 也可以做到像JPA那么傻瓜式操作| rexdb | 国产轻量级ORM框架 | 高效灵活,可以作为桌面应用的底层支持 | http://db.rex-soft.org/ JavaFX | 引擎桌面应用开发框架 | 生不逢时,然而实力不容忽视,JetBrain全家桶基于JavaFx开发。| OKhttp3 | 网络客户端框架 | 百度网盘app采用框架,采用kotlin编写 ## 模块或者包设计 ### 结构 ``` sharpsword ├── SharpSword --主程序,命令行启动,GUI启动,被调用API ├── service -- 服务,各种乱七八糟的服务。 ├── common -- 公共,配置文件,脚手架等 | ├── config -- 配置 | └── util -- 工具 | ├── dao -- 数据持久层 ├── entity -- 实体类 ├── core -- 引擎核心,字节码分析,机器学习等 | ├── bytecode -- 字节码分析引擎 | | ├── detect -- 探测器相关 | | | ├── analysis -- 分析引擎 | └── machinelearning -- 机器学习 | ├── plugin -- 【加载】插件即各种xml文件,Detector,BugPattern,BugCategory可配置。官方与非官方的加载。 | ├── filter -- 过滤器,去掉默认加载的某些值 | ├── report -- 【输出】报告信息 | ├── export -- 导出 | | ├── sql -- 导出到数据库 | | ├── xml -- 到处到各种文件 | | └── 等等 | ├── api -- 结果以API可直接函数调用形式返回 | └──gui -- 图形化界面 | ├── model -- JavaFx内容 | ├── view -- JavaFX视图 | └── controller -- JavaFX控制器 ``` ## 开发学习 ### 字节码框架 ### 设计模式 #### 工厂模式 #### 适配器模式 #### 责任链模式 ## 参考资料 1. http://cobra.feei.cn/ ## 代码贡献 at first , you can pull the code from this repository then fork it to your repository and check the remote branch to your repository in local git . before you coding , you should checkout a new branch and commit your code to your repository . finally you should pull request to master . waiting for me check it and merge it if the code without any problem.thanks!