CodeQL是一款代码审计分析平台,它将Python、Go、JavaScript等语言解析生成语法树并存储到数据库中,之后通过QL语法进行代码审查与筛选。你可以按照自己的想法写代码审计检测脚本,甚至进行代码漏洞 OR 恶意检测。

安装

  1. 下载CodeQL二进制文件

wget https://github.com/github/codeql-cli-binaries/releases/download/v2.2.4/codeql-linux64.zip
  1. 下载语言库依赖

wget https://github.com/github/codeql/archive/v1.24.0.zip

生成DB数据库

假设codeql_project/存在一个test.py文件,内容如下:

​
print("hello world")

下面根据project生成codeql数据库。

codeql database create pytest2 --source-root=codeql_project/ --language=python

指定--source-root为要进行检测的项目目录,指定language为python,生成的db名称为pytest2,之后他会生成一个db,其中包含codeql_project/test/中所有python文件的语法树解析。

编写QL脚本

在语言依赖库中创建QL查询脚本,以查询String为hello world为例。

# cat engine/codeql/python/ql/src/test.ql
​
import python
from StringValue s
where s.getText() = "hello world"
select s.toString()

执行查询

# codeql query run -d pytest2 codeql-1.24.0/python/ql/src/test.ql
​
|     col0      |
+---------------+
| 'hello world' |
​

指定test.ql查询语句便可查到所有的字符串为hello world的项。

后续

后面就是QL语法的学习以及codeql的实现原理的分析。

CodeQL 代码审计平台学习笔记相关推荐

  1. 云平台学习笔记(三)-实践

    一.实验目的 本实验目的: 1.熟练克隆虚拟机: 2.熟练配置域名解析 3.学会配置 Chrony: 4.学会安装 OpenStack 基础框架: 5.学会安装 Mariadb 数据库 6.熟练为虚拟 ...

  2. 迪文屏幕T5L平台学习笔记一:开发环境搭建注意事项

    前面一直用T5UID3平台的屏幕开发,但是吐槽下<DWIN C Compiler 1>编译器bug太多,项目能不能做好,全靠运气:售后说T5L平台支持keil开发,我感觉挺好,于是从新学习 ...

  3. 迪文屏幕T5UID3平台学习笔记二:变量图标显示和按键返回值按钮学习

    需要实现一个功能:当点击某个按钮时候,要求能够改变按钮的字体和颜色,比如: 点击strat按钮后,显示stop,这样再点击就实现Stop逻辑,同时显示变成Start,也 就是说把Start和Stop按 ...

  4. 百度AI studio平台学习笔记

    百度Paddlepaddle深度学习学习营笔记总结 自学深度学习过程 开始了解到百度深度学习AI Stuidio平台时,不是它终于出现的感觉,而是我终于等到它的感觉. 过去学习机器学习知识的方式中,会 ...

  5. 微信公众平台学习笔记

    微信公众号平台各个号的区别 订阅号 主要偏于为用户传达咨询(类似报纸杂志),认证后都是每天只可以群发一条消息 服务号 主要偏于服务交互(类似银行,114,提供服务查询),认证前后都是每个月可群发4条消 ...

  6. 迅雷云加速开放平台学习笔记——说明

    最近在研究软件的自动更新功能,手动更新太麻烦而且对电脑小白来说容易出错.之前对自动更新没什么概念,不知道如何实现.简单百度之后,原来"更新"功能是一个单独的模块,在需要更新的时候启 ...

  7. .Net平台学习笔记(7)

    7 .Net学习第七天 7.1 面向对象的概念 7.2 类 7.3 静态与非静态 7.4 构造函数 7.5 this关键字 7.6 析构函数 7 .Net学习第七天 7.1 面向对象的概念 C#是一种 ...

  8. 迪文屏幕T5L平台学习笔记七:RS485测试

    由于串口通信距离近,且容易受到干扰,最近改为RS485通信方案,迪文屏幕DMG10600K070_03WTC正好也支持RS485通信,把调试过程记录下. 1.首先看下数据手册: 串口5支持RS485通 ...

  9. 迪文屏幕T5UID3平台学习笔记四:串口使用和定时器使用

    我感觉迪文屏幕分两大类吧,指令屏和OS屏,指令屏幕只能通过UART指令交互和DWIN GUI交互: OS屏幕,则可以通过在屏幕上二次开发,来实现我们的功能,当然了,OS屏幕也支持UART指令和 DWI ...

最新文章

  1. cad菜单栏快捷键_拒绝效率低下,教你瞬间提升10倍!老师傅珍藏多年CAD快捷键...
  2. Servlet -- 重定向
  3. c语言读取一个图像文件格式,求指导,如何用c语言实现读取*.raw格式图像
  4. IntelliJ IDEA创建spring boot项目的方法
  5. cglib动态代理和jdk动态代理的区别与应用
  6. php中getdistance函数_php代码渗透测试 后门分析篇
  7. x:Name与Name区别
  8. php页面上必须有表单,php – 在同一页面上显示提交的表单响应. (没有重装)
  9. KDD CUP 2018 前4 名解决方案公开: AI预测空气质量
  10. 使用redis作为缓存,数据还需要存入数据库中吗?
  11. 尚学堂百战程序员1573题---答案总结第三章 控制语句
  12. 远程桌面未知的用户名_远程桌面连接 提示用户名密码错误的解决办法
  13. 宏碁台式计算机u盘启动,宏基台式机bios设置u盘启动方法
  14. 卡内基梅隆大学机器人研究所课程分享
  15. linux安装mysql总结
  16. 智能物流仓储机器人|海格里斯HEGERLS货物夹抱式防倾倒装置四向穿梭车
  17. Gentoo USE参数清单中文详解
  18. mongodb中文件导入报错error inserting documents解决方法
  19. SoundNet:根据声音来识别场景环境实践
  20. 微软100题(91)智力题

热门文章

  1. MIPS架构的Linux系统安装配置Qt5.11
  2. arm64 smmu 驱动笔记
  3. 我的世界服务器修改物品id,【图片】求助:如何修改物品ID【minecraft吧】_百度贴吧...
  4. ti linux 开发环境,Ubuntu下搭建MSP430开发环境(MSPGCC)
  5. word07如何删除分隔符
  6. 软件测试越老越吃香?还是吃青春饭?
  7. TWS耳机有哪些?国产TWS耳机排行
  8. 数字化转型系列主题:智能制造的数字化工厂规划
  9. 初识·集成运算放大电路(运放)
  10. 云南大学c语言实验报告3,云南大学软件学院C语言所有实验代码.doc