您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 攀枝花分类信息网,免费分类信息发布

PHP静态分析与跨站脚本检测(四)

2024/4/4 12:43:15发布52次查看
今天继续提交读程序笔记,这次比较少,而且相对简单些。
connectorcomputation
    - compute()
        如果worklist还有元素,就继续循环,但是第一次进入循环时候根据构造方法来看worklist只有一个元素。然后从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,并建立一个以访问的集合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。
攀枝花分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录