1、lib文件过多时,快速定位lib代码文件
如已知java-callgraph找出的类名
但不知道在哪个lib文件时可利用该工具快速获取到相关lib,适用于大量不知道lib文件的情况。
SearchClassInJar.jar
2、快速定位api路由思路
静态:
springmvc框架
老生常谈的东西了
IDEA的RestfulTool插件,一键化提取spring mvc框架的api路由。
一键化提取相关API
然后crtl+all即可
struts2框架:
这个框架的静态路由提取外面就讲的比较少了,因为不同的struts2 路由写法可能大概都不相同。
但是经过如果有深入去实际研究的话会发现基本上都是
命名空间/类名,函数,特定构造方法进行构造的路由。
因此我们可以有限提取出相关的类名,方法名。而后按照固定格式去构造。
如这里以codeql构造以例
采用这个方法进行构造一个完整的路由。
import java
from RefType c, Callable cf
where
c.getName().toLowerCase().regexpMatch(".*action") and
cf = c.getAMember() and
not c.getName().regexpMatch(".*<.*>.*")
select c+".do?method="+cf
如果不会用codeql也可采用,提取出相关的类名,方法
而后转个python脚本,进行特定构造即可。
非静态(代码可运行):
强烈推荐这个项目,如果代码可跑起来,可直接调用该router-router去获取路由。
https://github.com/kyo-w/router-router
原理:
https://xz.aliyun.com/t/12651
调试技术可以获取一个jvm
SocketAttachingConnector socketAttachingConnector = new SocketAttachingConnector();
Map<String, Connector.Argument> argumentHashMap = socketAttachingConnector.defaultArguments();
argumentHashMap.get("hostname").setValue("127.0.0.1");
argumentHashMap.get("port").setValue("5005");
argumentHashMap.get("timeout").setValue("3000");
VirtualMachine attach = socketAttachingConnector.attach(argumentHashMap);
然后基于jvm中去获取相关中间组件的路由即可
使用条件:
- Java JDK11
- 网络端口默认9090
启动端口后
连接然后启动路由即可
然后调试完成后即可自动化获取到路由了