PHP静态分析与跨站脚本检测(四)
来源:互联网 发布:c语言算法名称有哪些 编辑:程序博客网 时间:2024/05/17 08:47
今天继续提交读程序笔记,这次比较少,而且相对简单些。
ConnectorComputation
- compute()
如果workList还有元素,就继续循环,但是第一次进入循环时候根据构造方法来看workList只有一个元素<mainFunction, emptyCallString>。然后从workList中取出第一个元素,获取TacFunction和CallString(gamma),根据TacFunction(p)从function2ECS中得到ECS(ecs_p),实际上此时functions2ECS中第一个元素对应的TacFunction即为_main。得到gamma在ecs_p中的位置,即是在一个CallString的链表中的位置
随后,将p这个TacFunction包含的所有的CfgNodeCall迭代一遍,对于每一个callNode,得到其callee(即被调用的函数q),在q!=null的情况下,以callNode建立一个新的CallString(gamma_2),从function2ECS中得到q对应的ECS(ecs_q),获取ecs_q中gamma_2的位置,如果为-1,就将gamma_2添加到ecs_q的CallStrings队列中去,并以q和gamma_2建立元素添加到workList中去,expand it。
接下来扩充什么ConnectorFunction因为都在for循环里边,是对局部变量的操作,所以没有什么用处。
在while循环结束之后,调用makeCallGraph()方法。
- makeCallGraph()
首先以mainFunction初始化一个CallGraph,获得mainFunction所包含的方法调用列表processUs<CfgNodeCall>,并建立一个以访问的集合visited,将mainFunction添加进集合里边。
当processUs不为空,依次取出元素callNode,得到它的caller和callee,如果callee!=null,向callGraph中添加元素。如果callee还没有被处理过,则将其所包含的所有函数调用添加进processUs,并将其放进visited。
Checker
根据初始提供的run-all.bat的参数来看,实际上aliases analyze和literal analyze并没有进行,只是gta.analyze()进行了,实际上也就是只有dependance analyze执行了。通过以来关系最后决定vulns。
ConnectorComputation
- compute()
如果workList还有元素,就继续循环,但是第一次进入循环时候根据构造方法来看workList只有一个元素<mainFunction, emptyCallString>。然后从workList中取出第一个元素,获取TacFunction和CallString(gamma),根据TacFunction(p)从function2ECS中得到ECS(ecs_p),实际上此时functions2ECS中第一个元素对应的TacFunction即为_main。得到gamma在ecs_p中的位置,即是在一个CallString的链表中的位置
随后,将p这个TacFunction包含的所有的CfgNodeCall迭代一遍,对于每一个callNode,得到其callee(即被调用的函数q),在q!=null的情况下,以callNode建立一个新的CallString(gamma_2),从function2ECS中得到q对应的ECS(ecs_q),获取ecs_q中gamma_2的位置,如果为-1,就将gamma_2添加到ecs_q的CallStrings队列中去,并以q和gamma_2建立元素添加到workList中去,expand it。
接下来扩充什么ConnectorFunction因为都在for循环里边,是对局部变量的操作,所以没有什么用处。
在while循环结束之后,调用makeCallGraph()方法。
- makeCallGraph()
首先以mainFunction初始化一个CallGraph,获得mainFunction所包含的方法调用列表processUs<CfgNodeCall>,并建立一个以访问的集合visited,将mainFunction添加进集合里边。
当processUs不为空,依次取出元素callNode,得到它的caller和callee,如果callee!=null,向callGraph中添加元素。如果callee还没有被处理过,则将其所包含的所有函数调用添加进processUs,并将其放进visited。
Checker
根据初始提供的run-all.bat的参数来看,实际上aliases analyze和literal analyze并没有进行,只是gta.analyze()进行了,实际上也就是只有dependance analyze执行了。通过以来关系最后决定vulns。
- PHP静态分析与跨站脚本检测(四)
- PHP静态分析与跨站脚本检测(一)
- PHP静态分析与跨站脚本检测(二)
- PHP静态分析与跨站脚本检测(三)
- PHP漏洞全解(四)-xss跨站脚本攻击
- PHP漏洞全解(四)-xss跨站脚本攻击
- PHP漏洞全解(四)-xss跨站脚本攻击
- PHP漏洞全解(四)-xss跨站脚本攻击
- PHP静态代码检测 -- phpmd
- 简单的移动设备检测PHP脚本
- 使用Spark分析拉勾网招聘信息(四): 几个常用的脚本与图片分析结果
- php 与脚本
- php 静态 代码 分析 工具
- PHP源码分析- 静态变量
- PHP伪静态简单实现(四)
- 静态库的检测与合并
- 代码检测工具(四)JAVA代码静态检测之PMD
- php 静态类与非静态类
- 《大规模C++程序设计》读书笔记25
- Behind the Contry Names
- 客户端限制表单重复提交
- 关于Setup Factory的两个问题
- 怎样挤出时间深入学习一门技术?
- PHP静态分析与跨站脚本检测(四)
- 中国IT工作者35岁后的发展出路调查报告
- Extjs2.0之横向Radio经典布局
- 怎样才有充沛的精力投入工作
- 看来一个星期白辛苦了...........
- JSP彩色验证码
- C#基本语法
- 给刚参加工作的大学生的一点建议
- 一个同济的女孩的就业之路,人生感想(推荐,很感动 ,转载)