Giter VIP home page Giter VIP logo

tabby's Introduction

Hi there 👋

About me:

Program analysis enthusiasts 😄

Research on Java code review (semi-auto and manual) and redteam 🤔

Former ctfer at NeSE 🍵

Currently work on MYbank 🐜

You can reach me with wechat: wh1t3p1g

wh1t3p1g's github stats

tabby's People

Contributors

wh1t3p1g avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tabby's Issues

注解类/方法支持

使用tabby的时候发现调用链上缺少有注解的方法,还未具体写测试用例深入测试。有没有增加注解方法的支持的计划?

改动哪部分代码比较好我可以自己看看

结果非预期

下面这种方式可以查询到toString调用getValue
KC~3QWHID_ )DZJURDENY J
下面这种方式不可以查询到toString调用getValue
image

无法打开GRAPHDB_PUBLIC_METHODS.csv

环境 macm1 jdk1.8.0.311 neo4j是用docker运行的
一直报错说找不到这个文件GRAPHDB_PUBLIC_METHODS.csv
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) [spring-boot-2.7.7.jar!/:2.7.7]
at tabby.App.main(App.java:28) [classes!/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_381]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_381]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_381]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_381]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [tabby.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) [tabby.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [tabby.jar:na]
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) [tabby.jar:na]
Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: Failed to invoke procedure apoc.periodic.iterate: Caused by: java.io.IOException: Cannot open file /Users/oc4an/Documents/web/tabby/output/dev/GRAPHDB_PUBLIC_METHODS.csv for reading.; Error code 'Neo.ClientError.Procedure.ProcedureCallFailed'; nested exception is org.neo4j.driver.exceptions.ClientException: Failed to invoke procedure apoc.periodic.iterate: Caused by: java.io.IOException: Cannot open file /Users/oc4an/Documents/web/tabby/output/dev/GRAPHDB_PUBLIC_METHODS.csv for reading.
但是我文件夹里面确实是有这个文件的
image
我本地的配置文件的tabby.cache.isDockerImportPath值就是flase

运行App.java报错

师傅能帮忙看看这种报错是什么原因吗?
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771) [spring-boot-2.7.7.jar:2.7.7]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) [spring-boot-2.7.7.jar:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-2.7.7.jar:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) [spring-boot-2.7.7.jar:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) [spring-boot-2.7.7.jar:2.7.7]
at tabby.App.main(App.java:28) [main/:na]
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: Unsupported api 589824
at tabby.core.Analyser.runSootAnalysis(Analyser.java:146) ~[main/:na]
at tabby.core.Analyser.run(Analyser.java:91) ~[main/:na]
at tabby.App.lambda$run$0(App.java:46) [main/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:768) [spring-boot-2.7.7.jar:2.7.7]
... 5 common frames omitted
Caused by: java.lang.IllegalArgumentException: Unsupported api 589824
at org.objectweb.asm.ClassVisitor.(ClassVisitor.java:70) ~[asm-7.1.jar:7.1]
at org.objectweb.asm.ClassVisitor.(ClassVisitor.java:57) ~[asm-7.1.jar:7.1]
at soot.asm.SootClassBuilder.(SootClassBuilder.java:83) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.asm.AsmClassSource.resolve(AsmClassSource.java:67) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.SootResolver.bringToHierarchyUnchecked(SootResolver.java:274) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.SootResolver.bringToHierarchy(SootResolver.java:243) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.SootResolver.bringToSignatures(SootResolver.java:313) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.SootResolver.bringToBodies(SootResolver.java:353) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.SootResolver.processResolveWorklist(SootResolver.java:190) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.SootResolver.resolveClass(SootResolver.java:155) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.Scene.tryLoadClass(Scene.java:992) ~[soot-4.4.0-SNAPSHOT.jar:na]
at soot.Scene.loadBasicClasses(Scene.java:1833) ~[soot-4.4.0-SNAPSHOT.jar:na]
at tabby.core.Analyser.runSootAnalysis(Analyser.java:116) ~[main/:na]
... 8 common frames omitted

添加注解支持

审计过程中多次遇到判断方法或者所在类是否存在某个注解来进行鉴权,需要注解支持。

如何设置配置文件

image 请问我想分析一个题目,结构如上,在如下配置文件中应该如何配置呢: image

windows下file://改file:///

在Windows下运行程序进入到【Save methods to Neo4j.】阶段时,程序会错误中断,此时没有有效的语义提示信息,卡住了。
解决办法是修改源代码中file://为file:///,并在此基础上运行程序根据提示信息自适应修改目标csv所在路径就行啦。

运行出错

image
师傅,能看一下这个报错吗,不明白为啥会报一个settings.properties file not found

分析大量class时gc overhead limit exceeded问题。

师傅我在分析用友NC的过程中,tabby统计大约加载了一万个class文件,然后分析过程中便会出现的报错,之后减少一部分jar还是会出现同一个错误,而且都是在分析同一个class时出现。

2023-04-03 16:23:21.938 DEBUG 19788 --- [ main] t.c.s.value.SimpleRightValueSwitcher : Analysis: implRemove done, return to<java.security.Provider: java.lang.Object remove(java.lang.Object)>; <java.security.Provider: java.lang.Object remove(java.lang.Object)>
2023-04-03 16:23:21.938 DEBUG 19788 --- [ main] tabby.core.collector.CallGraphCollector : com.ibm.db2.jcc.am.km b
2023-04-03 16:23:21.938 DEBUG 19788 --- [ main] tabby.core.collector.CallGraphCollector : org.postgresql.ds.jdbc23.AbstractJdbc23ConnectionPoolDataSource getPooledConnection
2023-04-03 16:23:41.982 ERROR 19788 --- [ main] o.s.boot.SpringApplication : Application run failed

java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.Arrays.copyOfRange(Arrays.java:3664) ~[na:1.8.0_341]
at java.lang.String.(String.java:207) ~[na:1.8.0_341]
at java.lang.StringBuilder.toString(StringBuilder.java:413) ~[na:1.8.0_341]
at soot.SootMethod.getSubSignatureImpl(SootMethod.java:734) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at soot.SootMethod.getSignature(SootMethod.java:684) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at soot.SootMethodRefImpl.getSignature(SootMethodRefImpl.java:172) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at tabby.core.switcher.value.SimpleRightValueSwitcher.caseInvokeExpr(SimpleRightValueSwitcher.java:104) ~[classes!/:na]
at tabby.core.switcher.value.SimpleRightValueSwitcher.caseVirtualInvokeExpr(SimpleRightValueSwitcher.java:34) ~[classes!/:na]
at soot.jimple.internal.AbstractVirtualInvokeExpr.apply(AbstractVirtualInvokeExpr.java:81) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at tabby.core.switcher.stmt.SimpleStmtSwitcher.caseAssignStmt(SimpleStmtSwitcher.java:50) ~[classes!/:na]
at soot.jimple.internal.JAssignStmt.apply(JAssignStmt.java:217) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at tabby.core.toolkit.PollutedVarsPointsToAnalysis.flowThrough(PollutedVarsPointsToAnalysis.java:120) ~[classes!/:na]
at tabby.core.toolkit.PollutedVarsPointsToAnalysis.flowThrough(PollutedVarsPointsToAnalysis.java:30) ~[classes!/:na]
at soot.toolkits.scalar.FlowAnalysis.flowThrough(FlowAnalysis.java:583) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at soot.toolkits.scalar.FlowAnalysis.doAnalysis(FlowAnalysis.java:547) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at soot.toolkits.scalar.ForwardFlowAnalysis.doAnalysis(ForwardFlowAnalysis.java:46) ~[soot-4.4.0-SNAPSHOT.jar!/:na]
at tabby.core.toolkit.PollutedVarsPointsToAnalysis.doAnalysis(PollutedVarsPointsToAnalysis.java:106) ~[classes!/:na]
at tabby.core.toolkit.PollutedVarsPointsToAnalysis.makeDefault(PollutedVarsPointsToAnalysis.java:191) ~[classes!/:na]
at tabby.core.switcher.Switcher.doMethodAnalysis(Switcher.java:65) ~[classes!/:na]
at tabby.core.collector.CallGraphCollector.collect(CallGraphCollector.java:54) ~[classes!/:na]
at tabby.core.scanner.CallGraphScanner.collect(CallGraphScanner.java:51) ~[classes!/:na]
at tabby.core.scanner.CallGraphScanner.run(CallGraphScanner.java:38) ~[classes!/:na]
at tabby.core.Analyser.runSootAnalysis(Analyser.java:132) ~[classes!/:na]
at tabby.core.Analyser.run(Analyser.java:91) ~[classes!/:na]
at tabby.App.lambda$run$0(App.java:46) ~[classes!/:na]
at tabby.App$$Lambda$915/638486177.run(Unknown Source) ~[na:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:768) ~[spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) ~[spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) ~[spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.7.jar!/:2.7.7]
at tabby.App.main(App.java:28) ~[classes!/:na]

内存要求有点高,总是报错

mac 16G内存勉强能跑

但远程机器 E5 4线程8G内存

跑了好几天,改动 neo4j 内存配置,改动 java 内存配置,一直没跑完过,各种内存错误
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"

作者有没有优化下GC的可能啊,要不然太吃内存了,16G以下机器根本干不动

运行出错

错误内容

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65)
Caused by: java.lang.IllegalArgumentException: target not exists!
        at tabby.config.GlobalConfiguration.initConfig(GlobalConfiguration.java:144)
        at tabby.App.main(App.java:27)
        ... 8 more

win下jar启动报错

编译好报错,看了几个issue换成类似的环境还是报错,应该打包依赖问题但是确实没找到原因 idea下直接启动tabby没问题能写到neo4j..

环境

win10 jdk1.8.341
neo4j 密码都正确

编译

gradlew.bat bootJar

后同目录放入config文件夹和jars下的jar包
image

错误提示

2022-11-26 17:16:58.771  WARN 6992 --- [           main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'app': Unsatisfied dependency expressed through field 'analyser'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyser': Unsatisfied dependency expressed through field 'dataContainer'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataContainer': Unsatisfied dependency expressed through field 'rulesContainer'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'rulesContainer' defined in URL [jar:file:/C:/Users/Administrator/Downloads/tabby-master/build/libs/tabby-1.1.1.RELEASE.jar!/BOOT-INF/classes!/tabby/core/container/RulesContainer.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [tabby.core.container.RulesContainer]: Constructor threw exception; nested exception is java.io.FileNotFoundException: Sink File Not Found
2022-11-26 17:16:58.773  INFO 6992 --- [           main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2022-11-26 17:16:58.777  INFO 6992 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2022-11-26 17:16:58.791  INFO 6992 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
2022-11-26 17:16:58.810  INFO 6992 --- [           main] ConditionEvaluationReportLoggingListener :

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-11-26 17:16:58.881 ERROR 6992 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'app': Unsatisfied dependency expressed through field 'analyser'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyser': Unsatisfied dependency expressed through field 'dataContainer'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataContainer': Unsatisfied dependency expressed through field 'rulesContainer'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'rulesContainer' defined in URL [jar:file:/C:/Users/Administrator/Downloads/tabby-master/build/libs/tabby-1.1.1.RELEASE.jar!/BOOT-INF/classes!/tabby/core/container/RulesContainer.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [tabby.core.container.RulesContainer]: Constructor threw exception; nested exception is java.io.FileNotFoundException: Sink File Not Found
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:660) ~[spring-beans-5.3.6.jar!/:5.3.6]
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.3.6.jar!/:5.3.6]
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.6.jar!/:5.3.6]
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.3.6.jar!/:5.3.6]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1413) ~[spring-beans-5.3.6.jar!/:5.3.6]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601) ~[spring-beans-5.3.6.jar!/:5.3.6]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.6.jar!/:5.3.6]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.6.jar!/:5.3.6]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.6.jar!/:5.3.6]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.6.jar!/:5.3.6]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.6.jar!/:5.3.6]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[spring-beans-5.3.6.jar!/:5.3.6]
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.6.jar!/:5.3.6]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.6.jar!/:5.3.6]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:782) [spring-boot-2.4.5.jar!/:2.4.5]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:774) [spring-boot-2.4.5.jar!/:2.4.5]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) [spring-boot-2.4.5.jar!/:2.4.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) [spring-boot-2.4.5.jar!/:2.4.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar!/:2.4.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar!/:2.4.5]
        at tabby.App.main(App.java:36) [classes!/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_341]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_341]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_341]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_341]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [tabby-1.1.1.RELEASE.jar:na]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) [tabby-1.1.1.RELEASE.jar:na]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [tabby-1.1.1.RELEASE.jar:na]
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) [tabby-1.1.1.RELEASE.jar:na]
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyser': Unsatisfied dependency expressed through field 'dataContainer'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataContainer': Unsatisfied dependency expressed through field 'rulesContainer'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'rulesContainer' defined in URL [jar:file:/C:/Users/Administrator/Downloads/tabby-master/build/libs/tabby-1.1.1.RELEASE.jar!/BOOT-INF/classes!/tabby/core/container/RulesContainer.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [tabby.core.container.RulesContainer]: Constructor threw exception; nested exception is java.io.FileNotFoundException: Sink File Not Found

报错,请教大佬什么原因

报错栈:

2023-12-15 15:43:14.867 INFO 31400 --- [ main] tabby.core.container.DataContainer : Save cache to CSV.
2023-12-15 15:43:16.755 INFO 31400 --- [ main] tabby.core.container.DataContainer : Save cache to CSV. DONE!
2023-12-15 15:43:16.755 INFO 31400 --- [ main] tabby.core.Analyser : Start to save cache.
2023-12-15 15:43:16.757 INFO 31400 --- [ main] tabby.core.container.DataContainer : Save methods to Neo4j.
2023-12-15 15:43:18.502 ERROR 31400 --- [ main] o.s.boot.SpringApplication : Application run failed

java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) [spring-boot-2.7.7.jar!/:2.7.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) [spring-boot-2.7.7.jar!/:2.7.7]
at tabby.App.main(App.java:32) [classes!/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_391]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_391]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_391]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_391]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [tabby.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) [tabby.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [tabby.jar:na]
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) [tabby.jar:na]
Caused by: org.springframework.dao.PermissionDeniedDataAccessException: The client is unauthorized due to authentication failure.; Error code 'Neo.ClientError.Security.Unauthorized'; nested exception is org.neo4j.driver.exceptions.AuthenticationException: The client is unauthorized due to authentication failure.
at org.springframework.data.neo4j.core.Neo4jPersistenceExceptionTranslator.translateImpl(Neo4jPersistenceExceptionTranslator.java:107) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.core.Neo4jPersistenceExceptionTranslator.translateExceptionIfPossible(Neo4jPersistenceExceptionTranslator.java:83) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.core.DefaultNeo4jClient.potentiallyConvertRuntimeException(DefaultNeo4jClient.java:233) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.core.DefaultNeo4jClient.access$600(DefaultNeo4jClient.java:62) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.core.DefaultNeo4jClient$DefaultRecordFetchSpec.one(DefaultNeo4jClient.java:461) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at java.util.Optional.flatMap(Optional.java:241) ~[na:1.8.0_391]
at org.springframework.data.neo4j.core.Neo4jTemplate$DefaultExecutableQuery.getSingleResult(Neo4jTemplate.java:1114) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.repository.query.Neo4jQueryExecution$DefaultQueryExecution.execute(Neo4jQueryExecution.java:53) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.repository.query.AbstractNeo4jQuery.execute(AbstractNeo4jQuery.java:94) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.7.6.jar!/:2.7.6]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.7.6.jar!/:2.7.6]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.7.6.jar!/:2.7.6]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.7.6.jar!/:2.7.6]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.7.6.jar!/:2.7.6]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.24.jar!/:5.3.24]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.24.jar!/:5.3.24]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.24.jar!/:5.3.24]
at com.sun.proxy.$Proxy104.loadMethodRefFromCSV(Unknown Source) ~[na:na]
at tabby.dal.neo4j.service.MethodService.importMethodRef(MethodService.java:25) ~[classes!/:na]
at tabby.core.container.DataContainer.save2Neo4j(DataContainer.java:380) ~[classes!/:na]
at tabby.core.container.DataContainer$$FastClassBySpringCGLIB$$5e064fdd.invoke() ~[classes!/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.24.jar!/:5.3.24]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) ~[spring-aop-5.3.24.jar!/:5.3.24]
at tabby.core.container.DataContainer$$EnhancerBySpringCGLIB$$5b32fa1d.save2Neo4j() ~[classes!/:na]
at tabby.core.Analyser.save(Analyser.java:173) ~[classes!/:na]
at tabby.core.Analyser.run(Analyser.java:105) ~[classes!/:na]
at tabby.App.lambda$run$0(App.java:48) [classes!/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:768) [spring-boot-2.7.7.jar!/:2.7.7]
... 13 common frames omitted
Caused by: org.neo4j.driver.exceptions.AuthenticationException: The client is unauthorized due to authentication failure.
at org.neo4j.driver.internal.util.Futures.blockingGet(Futures.java:111) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.InternalSession.run(InternalSession.java:62) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.InternalSession.run(InternalSession.java:47) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.AbstractQueryRunner.run(AbstractQueryRunner.java:34) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.AbstractQueryRunner.run(AbstractQueryRunner.java:39) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.springframework.data.neo4j.core.DefaultNeo4jClient$DelegatingQueryRunner.run(DefaultNeo4jClient.java:147) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.core.DefaultNeo4jClient$RunnableStatement.runWith(DefaultNeo4jClient.java:219) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
at org.springframework.data.neo4j.core.DefaultNeo4jClient$DefaultRecordFetchSpec.one(DefaultNeo4jClient.java:454) ~[spring-data-neo4j-6.3.6.jar!/:6.3.6]
... 46 common frames omitted
Suppressed: org.neo4j.driver.exceptions.ServiceUnavailableException: Connection to the database terminated. Please ensure that your database is listening on the correct host and port and that you have compatible encryption settings both on Neo4j server and driver. Note that the default encryption setting has changed in Neo4j 4.0.
at org.neo4j.driver.internal.util.ErrorUtil.newConnectionTerminatedError(ErrorUtil.java:48) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.util.ErrorUtil.newConnectionTerminatedError(ErrorUtil.java:42) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.async.inbound.ChannelErrorHandler.channelInactive(ChannelErrorHandler.java:67) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:305) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:411) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:376) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:305) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:411) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:376) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:305) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1405) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:301) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:901) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannel$AbstractUnsafe$7.run(AbstractChannel.java:813) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:566) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_391]
Suppressed: org.neo4j.driver.internal.util.ErrorUtil$InternalExceptionCause: null
at org.neo4j.driver.internal.util.ErrorUtil.newNeo4jError(ErrorUtil.java:64) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.async.inbound.InboundMessageDispatcher.handleFailureMessage(InboundMessageDispatcher.java:107) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.messaging.common.CommonMessageReader.unpackFailureMessage(CommonMessageReader.java:75) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.messaging.common.CommonMessageReader.read(CommonMessageReader.java:53) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.async.inbound.InboundMessageHandler.channelRead0(InboundMessageHandler.java:81) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.async.inbound.InboundMessageHandler.channelRead0(InboundMessageHandler.java:37) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.async.inbound.MessageDecoder.channelRead(MessageDecoder.java:42) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[neo4j-java-driver-4.4.11.jar!/:4.4.11-7d3fdc18543dae49c0c337b2885771b4f38a288d]
at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_391]

我的配置文件内容:

need to modify

tabby.build.enable = true
tabby.load.enable = true

tabby.build.target = E:\RR\202312\tabby-master\cases\kafka
tabby.build.libraries = E:\RR\202312\tabby-master\cases\kafka
tabby.build.mode = gadget
tabby.output.directory = ./output/dev

debug

tabby.debug.details = false

jdk settings

tabby.build.isJDKProcess = true
tabby.build.withAllJDK = false
tabby.build.excludeJDK = false
tabby.build.isJDKOnly = false

dealing fatjar

tabby.build.checkFatJar = true

pointed-to analysis

tabby.build.isFullCallGraphCreate = true
tabby.build.thread.timeout = 2
tabby.build.isNeedToCreateIgnoreList = false

db settings

tabby.cache.isDockerImportPath = false

tabby.neo4j.username = neo4j
tabby.neo4j.password = admin888
tabby.neo4j.url = bolt://127.0.0.1:7687

开启debug

tabby.debug.details = true
tabby.debug.inner.details = true

必须分析JDK吗

你好,tabby静态分析CFG必须包含JDK吗,但是这样子生成的neo4j是不是太大了。
我写了简单的测试例子,node节点达到了21万^^,而且时间非常长。
Total nodes: 213563, relations: 715798
而且,无论怎么修改setting中的jdk选项,还是这个结果,请问这几个属性含义在哪里有解释吗

tabby.build.isJDKProcess              = false
tabby.build.withAllJDK                = false
tabby.build.excludeJDK                = true
tabby.build.isJDKOnly                 = false

target 绝对路径和相对路径拼接错误

MacOS 命令行测试参数:

java -Xmx8g -jar tabby-1.1.0.RELEASE.jar /tmp/target.jar --checkFatJar --isJDKProcess

tabby/src/main/java/tabby/App.java 文件 70 行代码存在路径重复拼接错误:

String path = String.join(File.separator, System.getProperty("user.dir"), target)

当前目录 System.getProperty("user.dir") 和传入的绝对路径 target 拼接,导致找不到 target 文件

简单代码分析问题

师傅您好,最近在使用tabby分析demo的时候,不知道是不是操作原因造成的了一些问题,想问下师傅
这是我的代码:
image
image
然后我用这个命令去分析
image
然后在neo4j里面的关系图上只有service,没有serviceImpl,从关系图上看没走到readObject
image
想问下师傅,这种情况有办法解决吗?

windows下使用--isSaveOnly报错

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-05-18 14:55:22.911 ERROR 26148 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.IllegalStateException: Failed to execute CommandLineRunner
        at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:822) [spring-boot-2.4.5.jar!/:2.4.5]
        at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:803) [spring-boot-2.4.5.jar!/:2.4.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:346) [spring-boot-2.4.5.jar!/:2.4.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar!/:2.4.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar!/:2.4.5]
        at tabby.App.main(App.java:43) [classes!/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_271]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_271]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_271]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_271]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [tabby-1.1.0.RELEASE.jar:na]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) [tabby-1.1.0.RELEASE.jar:na]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [tabby-1.1.0.RELEASE.jar:na]
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) [tabby-1.1.0.RELEASE.jar:na]
Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: Failed to invoke procedure `apoc.periodic.iterate`: Caused by: java.net.UnknownHostException: H; Error code 'Neo.ClientError.Procedure.ProcedureCallFailed'
        at org.springframework.data.neo4j.core.Neo4jPersistenceExceptionTranslator.translateImpl(Neo4jPersistenceExceptionTranslator.java:105) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
        at org.springframework.data.neo4j.core.Neo4jPersistenceExceptionTranslator.translateExceptionIfPossible(Neo4jPersistenceExceptionTranslator.java:91) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
        at org.springframework.data.neo4j.core.DefaultNeo4jClient.potentiallyConvertRuntimeException(DefaultNeo4jClient.java:174) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
        at org.springframework.data.neo4j.core.DefaultNeo4jClient.access$400(DefaultNeo4jClient.java:55) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
        at org.springframework.data.neo4j.core.DefaultNeo4jClient$DefaultRecordFetchSpec.one(DefaultNeo4jClient.java:289) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
        at java.util.Optional.flatMap(Optional.java:241) ~[na:1.8.0_271]
        at org.springframework.data.neo4j.core.Neo4jTemplate$DefaultExecutableQuery.getSingleResult(Neo4jTemplate.java:661) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
        at org.springframework.data.neo4j.repository.query.Neo4jQueryExecution$DefaultQueryExecution.execute(Neo4jQueryExecution.java:53) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
        at org.springframework.data.neo4j.repository.query.AbstractNeo4jQuery.execute(AbstractNeo4jQuery.java:85) ~[spring-data-neo4j-6.0.8.jar!/:6.0.8]
        at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.4.8.jar!/:2.4.8]
        at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.4.8.jar!/:2.4.8]
        at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:152) ~[spring-data-commons-2.4.8.jar!/:2.4.8]
        at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:131) ~[spring-data-commons-2.4.8.jar!/:2.4.8]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar!/:5.3.6]
        at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80) ~[spring-data-commons-2.4.8.jar!/:2.4.8]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar!/:5.3.6]
        at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.6.jar!/:5.3.6]
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.6.jar!/:5.3.6]
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.6.jar!/:5.3.6]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar!/:5.3.6]
        at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.6.jar!/:5.3.6]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar!/:5.3.6]
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.6.jar!/:5.3.6]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar!/:5.3.6]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.6.jar!/:5.3.6]
        at com.sun.proxy.$Proxy82.loadMethodRefFromCSV(Unknown Source) ~[na:na]
        at tabby.dal.neo4j.service.MethodService.importMethodRef(MethodService.java:23) ~[classes!/:na]
        at tabby.core.container.DataContainer.save2Neo4j(DataContainer.java:279) ~[classes!/:na]
        at tabby.core.Analyser.save(Analyser.java:136) ~[classes!/:na]
        at tabby.core.Analyser.run(Analyser.java:49) ~[classes!/:na]
        at tabby.App.lambda$run$0(App.java:97) [classes!/:na]
        at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:819) [spring-boot-2.4.5.jar!/:2.4.5]
        ... 13 common frames omitted

2021-05-18 14:55:22.917  INFO 26148 --- [           main] org.neo4j.driver.Driver                  : Closing driver instance 1620823990
2021-05-18 14:55:22.920  INFO 26148 --- [           main] org.neo4j.driver.ConnectionPool          : Closing connection pool towards 127.0.0.1:7687
2021-05-18 14:55:23.135  INFO 26148 --- [           main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2021-05-18 14:55:23.141  INFO 26148 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2021-05-18 14:55:23.235  INFO 26148 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
  • 系统: Windows10
  • Java: 1.8_271

最新的版本knowledges.json还需要配置吗

Method节点中有个IS_SINK和IS_SOURCE,这两个属性现在还需要在Tabby的配置文件/rules/knowledges.json中配置吗?我下载了最新的Releases并未看到如何配置这个文件

分析单个JAR包报错

调用栈

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-08-07 18:40:18.371 ERROR 15994 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.IllegalStateException: Failed to execute CommandLineRunner
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:822) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:803) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:346) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar:2.4.5]
	at tabby.App.main(App.java:36) [main/:na]
Caused by: java.lang.RuntimeException: None of the basic classes could be loaded! Check your Soot class path!
	at soot.Scene.loadBasicClasses(Scene.java:1755) ~[soot-4.2.1.jar:na]
	at tabby.core.scanner.ClassInfoScanner.loadAndExtract(ClassInfoScanner.java:55) ~[main/:na]
	at tabby.core.scanner.ClassInfoScanner.run(ClassInfoScanner.java:39) ~[main/:na]
	at tabby.core.Analyser.runSootAnalysis(Analyser.java:107) ~[main/:na]
	at tabby.core.Analyser.run(Analyser.java:81) ~[main/:na]
	at tabby.App.lambda$run$0(App.java:89) [main/:na]
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:819) [spring-boot-2.4.5.jar:2.4.5]
	... 5 common frames omitted

配置文件如下,这里设置excludeJDK=true,只分析单个JAR包

# build code property graph
tabby.build.enable                    = true
# jdk settings
tabby.build.isJDKProcess              = true
tabby.build.withAllJDK                = false
tabby.build.excludeJDK                = true
tabby.build.isJDKOnly                 = false

# dealing fatjar
tabby.build.checkFatJar               = true

# default pointed-to analysis
tabby.build.isFullCallGraphCreate     = false

# targets to analyse
tabby.build.target                    = path/to/target
tabby.build.libraries                 = path/to/lib

# load to neo4j
tabby.load.enable                     = false

# debug
tabby.debug.details                   = false
tabby.debug.inner.details             = false

简单代码分析的问题

师傅您好,感谢您前面看了我的那个0除的问题,后面我也拜读了您的文章《如何高效的挖掘Java反序列化利用链?》和使用说明,但是还是有一些小小的疑惑,就是针对于分析这种小量的代码还有使用上的一些问题,希望您能不吝赐教
`/**

import java.io.IOException;
import java.io.Serializable;

public class user implements Serializable {

private String name;

public String getName() {

    return name;

}

public void setName(String name) {

    this.name = name;

}
private void readObject(java.io.ObjectInputStream in) throws ClassNotFoundException, IOException {

    try {
        in.defaultReadObject();
    } catch (IOException e) {
        e.printStackTrace();
    }

    Runtime.getRuntime().exec("calc.exe");

}

}`

另外一个
`

/**

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

public class test1 {

public static void main(String[] args) {

    try {

        FileOutputStream out = new FileOutputStream("d:/1.bin");

        ObjectOutputStream obj_out = new ObjectOutputStream(out);

        user u = new user();

        u.setName("test");

        obj_out.writeObject(u);

//利用readobject方法还原user对象

        FileInputStream in = new FileInputStream("d:/1.bin");

        ObjectInputStream ins = new ObjectInputStream(in);
        //反序列化操作
        user u1 = (user) ins.readObject();

        System.err.println(u1.getName());

    } catch (FileNotFoundException e) {

// TODO Auto-generated catch block

        e.printStackTrace();

    } catch (IOException e) {


        e.printStackTrace();

    } catch (ClassNotFoundException e) {


        e.printStackTrace();

    }

}

}

`
就是上面两个简单的类,构建了Demo.jar文件
用tabby分析以后,导入到neo4j中很明显main中就有好多CALL没有显示出来
我用的是 java -Xmx6g -jar tabby-1.1.0.RELEASE.jar Demo.jar 命令,
不知是不是没有分析jre或者是jdk环境造成的
pro

我还有一个使用上的问题,就是在我分析某个组件或者是插件的时候,如果不分析JDK或者jre的话是不是调用的jdk内部的类之间的调用关系就不会生成,
就比如外部的某个组件用到了Map类,调用了putAll方法,进而putAll又调用JDK内部的put再到compareTo()方法,如果只分析组件不分析jdk或者是jre,是不是就只会生成到外部组件调用到putAll就停止了,没有了后面的调用关系

About optimizing the performance

I used this tool for finding a method call, but the database-building process took so long.

This is the folder structure

PS D:\Tools\tabby\cases> tree /F
Folder PATH listing for volume User
Volume serial number is 1284-D760
D:.
└───aliyunCTF2023
    │   bypassit.jar
    │
    └───libs
            jackson-annotations-2.13.3.jar
            jackson-core-2.13.3.jar
            jackson-databind-2.13.3.jar
            jackson-datatype-jdk8-2.13.3.jar
            jackson-datatype-jsr310-2.13.3.jar
            jackson-module-parameter-names-2.13.3.jar
            jakarta.annotation-api-1.3.5.jar
            jul-to-slf4j-1.7.36.jar
            log4j-api-2.17.2.jar
            log4j-to-slf4j-2.17.2.jar
            logback-classic-1.2.11.jar
            logback-core-1.2.11.jar
            slf4j-api-1.7.36.jar
            snakeyaml-1.29.jar
            spring-aop-5.3.22.jar
            spring-beans-5.3.22.jar
            spring-boot-2.6.11.jar
            spring-boot-autoconfigure-2.6.11.jar
            spring-boot-jarmode-layertools-2.6.11.jar
            spring-context-5.3.22.jar
            spring-core-5.3.22.jar
            spring-expression-5.3.22.jar
            spring-jcl-5.3.22.jar
            spring-web-5.3.22.jar
            spring-webmvc-5.3.22.jar
            tomcat-embed-core-9.0.65.jar
            tomcat-embed-el-9.0.65.jar
            tomcat-embed-websocket-9.0.65.jar

and the time:

image

Are there anyway to improve the performance ? (i had increased the dbms.memory.heap.initial_size, dbms.memory.heap.max_size, dbms.memory.pagecache.size)

节点属性问题

师傅您好,请问有关于Class、Method这两类节点详细的属性说明文档吗?如果有的话方便发一下地址吗,谢谢!

无法打开文件GRAPHDB_PUBLIC_METHODS.csv

环境:jdk1.8.0_341,neo4j desktop 5.3

无法打开文件 csv 文件报错:

java.lang.IllegalStateException: Failed to execute CommandLineRunner
        at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771) [spring-boot-2.7.7.jar!/:2.7.7]
        at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) [spring-boot-2.7.7.jar!/:2.7.7]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-2.7.7.jar!/:2.7.7]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) [spring-boot-2.7.7.jar!/:2.7.7]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) [spring-boot-2.7.7.jar!/:2.7.7]
        at tabby.App.main(App.java:28) [classes!/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_341]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_341]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_341]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_341]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [tabby.jar:na]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) [tabby.jar:na]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [tabby.jar:na]
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) [tabby.jar:na]
Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: Failed to invoke procedure `apoc.periodic.iterate`: Caused by: java.io.IOException: Cannot open file D:\var\lib\neo4j\import\GRAPHDB_PUBLIC_METHODS.csv for reading.; Error code 'Neo.ClientError.Procedure.ProcedureCallFailed'; nested exception is org.neo4j.driver.exceptions.ClientException: Failed to invoke procedure `apoc.periodic.iterate`: Caused by: java.io.IOException: Cannot open file D:\var\lib\neo4j\import\GRAPHDB_PUBLIC_METHODS.csv for reading.

使用springboot设置executable为true情况下无法通过JarInputStream解压jar包

pom.xml中存在如下配置executable为true时,无法通过JarInputStream解压jar包,在命令行中使用jar xvf也无法解压,但是可以直接通过unzip解压,应该在FileUtils.java#extract()添加另一个解压方式就可以顺利解压executable为true情况下打包的jar包了

无法解压的原因貌似是在完全可执行的jar/war在文件前面嵌入了个额外的脚本导致在第一次jarInputStream.getNextJarEntry()时值为空,具体的我太菜了分析不动了师傅加油!!!

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
    </configuration>
</plugin>

打包出错

Task :compileJava FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':compileJava'.

Could not resolve all files for configuration ':compileClasspath'.
Could not find de.upb.cs.swt:heros:1.2.3-SNAPSHOT.
Required by:
project : > org.soot-oss:soot:4.4.0-SNAPSHOT:20221228.232630-32

未开启过程间分析

这个commit关闭了过程间分析

b17dfc4

导致如下错误
java.lang.RuntimeException: This operation requires resolving level BODIES but java.lang.AbstractStringBuilder is at resolving level SIGNATURES
If you are extending Soot, try to add the following call before calling soot.Main.main(..):
Scene.v().addBasicClass(java.lang.AbstractStringBuilder,BODIES);
Otherwise, try whole-program mode (-w).
at soot.SootClass.checkLevelIgnoreResolving(SootClass.java:198)
at soot.SootClass.checkLevel(SootClass.java:180)
at soot.SootMethod.retrieveActiveBody(SootMethod.java:391)

储存数据库报错:NULL not allowed for column "IS_OPTIMIZE"

Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "IS_OPTIMIZE"; SQL statement:
insert into call (invoker_type, line_num, polluted_position, real_call_type, source, target, id) values (?, ?, ?, ?, ?, ?, ?) [23502-200]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:459) ~[h2-1.4.200.jar!/:na]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) ~[h2-1.4.200.jar!/:na]
	at org.h2.message.DbException.get(DbException.java:205) ~[h2-1.4.200.jar!/:na]
	at org.h2.message.DbException.get(DbException.java:181) ~[h2-1.4.200.jar!/:na]
	at org.h2.table.Column.validateConvertUpdateSequence(Column.java:374) ~[h2-1.4.200.jar!/:na]
	at org.h2.table.Table.validateConvertUpdateSequence(Table.java:845) ~[h2-1.4.200.jar!/:na]
	at org.h2.command.dml.Insert.insertRows(Insert.java:187) ~[h2-1.4.200.jar!/:na]
	at org.h2.command.dml.Insert.update(Insert.java:151) ~[h2-1.4.200.jar!/:na]
	at org.h2.command.CommandContainer.update(CommandContainer.java:198) ~[h2-1.4.200.jar!/:na]
	at org.h2.command.Command.executeUpdate(Command.java:251) ~[h2-1.4.200.jar!/:na]
	at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:191) ~[h2-1.4.200.jar!/:na]
	at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:152) ~[h2-1.4.200.jar!/:na]
	at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-3.4.5.jar!/:na]
	at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-3.4.5.jar!/:na]
	at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197) ~[hibernate-core-5.4.30.Final.jar!/:5.4.30.Final]

CALL边的POLLUTED_POSITION

师傅您好,我现在正在想办法去寻找自动化挖掘JAVA反序列化的方法,您能不能就 “参数为CALL边的POLLUTED_POSITION”这个属性给出具体的JAVA代码和参数说明,直接看您的例子没有代码,我很难理解这里面的数组的值在实际调用中都代表着一些什么
不胜感激

查询模版

师傅,请问哪里能有taddy的查询模版呢,看了一些链接,好像你之前的一些文章撤掉了?

毕业论文

如题,请问文中提到的毕业论文,有没有公开的下载链接。

新版本配置文件处有一个小bug,导致isJDKOnly无法正常运行

配置文件中有一行设置了default的target
tabby.build.target = cases/commons-collections-3.1.jar
而主程序有一个如下判断

        // 支持绝对路径 issue 7
        if(target != null && !FileUtils.fileExists(target)){
            target = String.join(File.separator, System.getProperty("user.dir"), target);
            log.info("target: " + target);
            if(!FileUtils.fileExists(target)){
                throw new IllegalArgumentException("target not exists!");
            }
        }

这使得target永远不是null,isJDKOnly时也不会忽略该选项,导致运行报错(以及最新released的源码好像也和这批源码有出入。。。)

与codeql的区别?

初一看感觉与codeql功能比较类似,请问下作者tabby与codeql相比有哪些功能上的区别或优势?

运行出错

Mac下非Docker neo4j启动后,运行tabby出现报错如下
image

开启tabby.cache.isDockerImportPath=False,并且tabby.cache.directory使用了import的绝对路径

tabby 在命令行运行正确,但在IDEA运行报错

在命令行下,java -Xmx6g -jar ./build/libs/tabby-1.1.1.RELEASE.jar没问题。
但在IDEA开发环境下,运行APP或Test都会报一个SpringBoot的错误,报错信息提示在下面函数增加@param选项,但还是没法解决。
java.lang.IllegalStateException: Failed to execute CommandLineRunner
For queries with named parameters you need to use provide names for method parameters. Use @param for query method parameters, or when on Java 8+ use the javac flag -parameters.

public MethodReference getMethodRefBySignature(String signature){
    return methodRepository.findMethodReferenceBySignature(signature);
}

报错信息如下,更换过java版本(jdk1.8.0_342/1.8.0_341/1.8.0_352),都是一样的情况;
更换OS(win10/ubuntu22)也是同样的情况。

java.lang.IllegalStateException: Failed to execute CommandLineRunner
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:822) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:803) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:346) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar:2.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar:2.4.5]
	at tabby.App.main(App.java:36) [classes/:na]
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: **For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.;** nested exception is java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.
	at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.6.jar:5.3.6]
	at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.6.jar:5.3.6]
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.6.jar:5.3.6]
	at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.6.jar:5.3.6]
	at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.6.jar:5.3.6]
	at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.6.jar:5.3.6]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar:5.3.6]
	at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.4.8.jar:2.4.8]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar:5.3.6]
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.6.jar:5.3.6]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.6.jar:5.3.6]
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.6.jar:5.3.6]
	at com.sun.proxy.$Proxy90.findMethodReferenceBySignature(Unknown Source) ~[na:na]
	at tabby.dal.caching.service.MethodRefService.getMethodRefBySignature(MethodRefService.java:24) ~[classes/:na]
	at tabby.core.container.DataContainer.getMethodRefBySubSignature(DataContainer.java:172) ~[classes/:na]
	at tabby.core.container.DataContainer.getAliasMethodRefs(DataContainer.java:335) ~[classes/:na]
	at tabby.core.scanner.ClassInfoScanner.makeAliasRelation(ClassInfoScanner.java:203) ~[classes/:na]
	at tabby.core.scanner.ClassInfoScanner.makeAliasRelations(ClassInfoScanner.java:183) ~[classes/:na]
	at tabby.core.scanner.ClassInfoScanner.extractRelationships(ClassInfoScanner.java:137) ~[classes/:na]
	at tabby.core.scanner.ClassInfoScanner.buildClassEdges(ClassInfoScanner.java:102) ~[classes/:na]
	at tabby.core.scanner.ClassInfoScanner.run(ClassInfoScanner.java:44) ~[classes/:na]
	at tabby.core.Analyser.runSootAnalysis(Analyser.java:107) ~[classes/:na]
	at tabby.core.Analyser.run(Analyser.java:81) ~[classes/:na]
	at tabby.App.lambda$run$0(App.java:89) [classes/:na]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.