当前位置: 首页 > article >正文

天命所归,SyntaxFlow助大圣取得真经

之前预告许久的SyntaxFlow功能已经登陆Yakit!

图片

SyntaxFlow代码查询需要先进行项目编译。

手动编译 

在前端的YakRunner界面,主界面或选项栏可以直接点击“编译项目”功能。

可见图中红色方框圈起的选项

图片

编译项目的选项如下:必选项为项目名、语言和项目路径。

图片

其他额外信息、数据库路径、项目入口文件等都非必填。

编译当前项目

当在YakRunner中打开一个项目以后,可以使用快捷方式直接编译当前打开的项目。

图片

此时将会自动填充路径和项目名等信息。需要用户手动选择语言。

图片

图片

已编译项目列表

在最近编译项目中,可以快速打开已编译项目。

选择查看全部将会打开已编译项目列表。

图片

将会显示已编译项目的名称、路径、编译时间和相关操作。可以进行该项目的打开以及项目删除。

图片

打开已编译项目

打开已编译的项目,将会显示文件资源管理器页面,同时会显示 "Yakit技术预览版"的水印。

图片

可以检查文件内容,但这些已经编译的项目文件内容是只读的。

图片

图片

输入SyntaxFlow语句查询

在左侧侧边栏中可以看到代码审计选项, 点开以后可以发现编写SyntaxFlow查询语句的窗口:

图片

在这里我们编写一段代码:

  • 查找所有的*Mapping注解,并找到其实例,然后通过()得到参数,并过滤去掉this参数,然后将结果保存在Params里面。

    • 或者说:查找所有被*Mapping修饰的方法的参数。

然后我们可以看到结果是保存的变量: 

  • Param: 是保存的$param变量, 其中有54个值,表示被*Mapping修饰的方法的参数。

每一次查询都会得到一个变量列表,如同上文所示,在SyntaxFlow规则中定名的变量都会在结果中列出。

点开变量名将会展示该变量内保存的所有结果:将会标注其IR表示以及源码位置:

图片

查询结果信息

点击查看其中的某一项结果,YakRunner将会展开以下结构:

图片

  • 编辑器将会跳转到该结果对应的源码位置:

图片

审计结果:分析路径

  在右侧上半部分审计结果将会展示获得该结果的所有分析路径。

  默认展开路径信息。

图片

  • 可以继续点击获得每一个路径节点对应的源码信息。

图片

  • 点击右侧信息也可以直接在编辑器跳转。

  • 点击右上角为关闭详细信息或对路径进行折叠。

审计结果:分析图

右侧下半部分将会展示分析过程的图:

紫色节点代表当前结果,其他的普通节点代表分析过程中的节点。

图片

普通节点可以点击并且显示节点信息,点击文件路径可以在编辑器跳转:

图片

图片

SyntaxFlow 是一个 Yaklang 出品的编译器级的高级静态分析语言。旨在分析被 Yaklang SSA 编译器编译后的程序。SyntaxFlow支持高级数据流分析、自动的跨过程分析和面向对象或闭包的抽象等高级特性。如果感兴趣的话,欢迎访问网站:ssa.to 了解更多。

目前的YakRunner登陆的SyntaxFlow功能为技术预览版,接下来将会持续更新SyntaxFlow和YakSSA HIR的分析能力以及相关使用教程,欢迎持续关注。

END

  YAK官方资源 

Yak 语言官方教程:
https://yaklang.com/docs/intro/

Yakit 视频教程:
https://space.bilibili.com/437503777

Github下载地址:
https://github.com/yaklang/yakit

Yakit官网下载地址:
https://yaklang.com/

Yakit安装文档:
https://yaklang.com/products/download_and_install

Yakit使用文档:
https://yaklang.com/products/intro/

常见问题速查:
https://yaklang.com/products/FAQ


http://www.kler.cn/a/297297.html

相关文章:

  • 不到200行代码,一键写出简单贪吃蛇网页游戏!附详细代码!快来看看吧!
  • 分布式锁-缓存一致性问题-失效模式
  • 昔日洗衣液一哥偏执于直播带货市值缩水九成 或成胡干失败样板
  • VScode:前端开发中的常用快捷键和技巧
  • 分享 | 某省级城商行用零信任破解远程访问安全风险
  • 滑动窗口系列(背向双指针)9/8
  • [git操作] git创建仓库上传github报错
  • 并发编程(六)
  • vue3 cookie 存取删数据
  • 镭速助力构筑ICT安全高效的大文件传输
  • 【android10】【binder】【2.servicemanager启动——全源码分析】
  • MySQL数据归档策略:实现定期数据维护与优化
  • 数据结构—单链表的基本操作
  • Vue3进阶:异步状态示例
  • Docker 学习 Day 1
  • springboot整合Logback
  • 千益畅行,共享旅游卡,引领旅游新潮流
  • “Jmeter-InfluxDB-Grafana“常见错误有哪些如何解决?
  • verilog报错:Illegal concatenation of an unsized constant. and 输入输出位宽不匹配
  • 安全服务面试-2