Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
joern — C/C++/Java/Binary/Javascript/Python/Kotlin을 위한 코드 속성 그래프 기반 오픈소스 코드 분석 플랫폼입니다. Discord https://discord.gg/vv4MH284Hc | Kitploit
도구/GitHubGitHub/joernio/joern
Static AnalysisVulnerability AnalysisCode AnalysisReverse EngineeringBinary Analysis
GitHubjoernio/joern

joern

C/C++/Java/Binary/Javascript/Python/Kotlin을 위한 코드 속성 그래프 기반 오픈소스 코드 분석 플랫폼입니다. Discord https://discord.gg/vv4MH284Hc

저장소 보기
3.3k4301일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

Joern 쿼리 데이터베이스 ("Joern-Scan")

이것은 오픈 소스 코드 분석 플랫폼 Joern의 중앙 쿼리 데이터베이스입니다. 두 가지 목적이 있습니다:

  • Joern을 즉시 실행 가능한 코드 스캐닝 도구로 전환하는 데 필요한 배터리를 제공합니다.
  • 해당 쿼리는 자체 쿼리를 작성하려는 사람들에게 유용한 예제 역할을 합니다.
  • JDK11 기반으로 빌드되었지만 JRE >= 1.8에서 실행됩니다.

쿼리 데이터베이스는 Joern을 종속성으로 포함하는 독립형 라이브러리로 배포됩니다. 즉, 데이터베이스의 쿼리를 사용하기 위해 Joern을 설치할 필요가 없습니다.

동시에 데이터베이스는 Joern 확장입니다. 즉, 시작 시 동적으로 로드되면 그 기능이 대화형 Joern 셸 및 Joern 스크립트에서 사용 가능해집니다.

이 프로젝트를 포크하여 사용자 정의 쿼리 및 스캐너를 구축하거나 이 저장소에 PR을 보내 기본 배포에 포함을 고려하도록 할 수 있습니다.

설치 및 실행

설치 스크립트는 joern을 다운로드하여 하위 디렉토리에 설치합니다. 쿼리 데이터베이스는 확장으로 설치됩니다.

root@kitploit:~
./install.sh

다음과 같이 모든 쿼리를 실행할 수 있습니다:

root@kitploit:~
./joern-scan path/to/code

예를 들어,

root@kitploit:~
mkdir foo
echo "int foo(int a, int b, int c, int d, int e, int f) {}" > foo/foo.c
./joern-scan foo

디렉토리 foo에 있는 샘플 코드에 대해 모든 쿼리를 실행하며, 함수 foo에 매개변수가 너무 많다고 판단합니다.

자체 쿼리 추가하기

문제 없는 쿼리 작성을 위해 아래 규칙을 따르십시오:

  • 패키지 io.joern.scanners의 쿼리는 런타임에 자동으로 인식되므로, 거기에 쿼리를 배치하십시오.
  • 각 쿼리는 어노테이션 @q로 시작해야 하며 쿼리 번들에 배치되어야 합니다. 쿼리 번들은 QueryBundle에서 파생된 object입니다.
  • 쿼리는 매개변수를 가질 수 있지만, 각 매개변수에 기본값을 제공해야 합니다.
  • 쿼리에 대한 단위 테스트를 추가하십시오. 이는 쿼리가 수행하는 작업에 대한 사양 역할도 합니다.
  • PR을 보내기 전에 sbt scalafmt Test/scalafmt를 사용하여 코드 서식을 지정하십시오.

예를 들어 src/main/scala/io/joern/scanners/c/Metrics.scala에 있는 쿼리 번들 Metrics를 살펴보십시오:

root@kitploit:~
object Metrics extends QueryBundle {

  @q
  def tooManyParameters(n: Int = 4): Query =
    Query.make(
      name = "too-many-params",
      author = Crew.fabs,
      title = s"Number of parameters larger than $n",
      description = s"This query identifies functions with more than $n formal parameters",
      score = 1.0,
      withStrRep({ cpg =>
        cpg.method.internal.filter(_.parameter.size > n)
      }),
      tags = List(QueryTags.metrics)
    )

  @q
  def tooHighComplexity(n: Int = 4): Query =
    Query.make(
      name = "too-high-complexity",
      author = Crew.fabs,
      title = s"Cyclomatic complexity higher than $n",
      description = s"This query identifies functions with a cyclomatic complexity higher than $n",
      score = 1.0,
      withStrRep({ cpg =>
        cpg.method.internal.filter(_.controlStructure.size > n)
      }),
      tags = List(QueryTags.metrics)
    )
  ...
}

쿼리에 해당하는 테스트는 src/test/scala/io/joern/scanners에 있습니다. 예를 들어, 메트릭스 쿼리의 테스트는 src/test/scala/io/joern/scanners/c/MetricsTests.scala에 있습니다:

root@kitploit:~
class MetricsTests extends Suite {

  override val code = """
    int too_many_params(int a, int b, int c, int d, int e) {
    }
	...
	"""

  "find functions with too many parameters" in {
    Metrics.tooManyParameters(4)(cpg).map(_.evidence) match {
      case List(List(method: nodes.Method)) =>
        method.name shouldBe "too_many_params"
      case _ => fail
    }
  }
  ...
}

이러한 테스트는 쿼리 개발 중 IntelliJ IDE에서 개별적으로 실행할 수 있습니다.

데이터베이스 빌드/테스트

Scala Build Tool (sbt)를 사용합니다. sbt가 설치되어 있는지 확인하십시오. 버전은 중요하지 않습니다. sbt가 빌드 파일(build.sbt)을 기반으로 필요한 버전을 가져오기 때문입니다.

sbt가 설치되면 다음과 같이 데이터베이스를 빌드하고 테스트할 수 있습니다:

root@kitploit:~
sbt test

새로 개발된 쿼리를 테스트할 수 있습니다

다음과 같이 joern-scan으로 새로 생성된 쿼리를 테스트하려면:

root@kitploit:~
sbt joerncli/stage
./querydb-install.sh && ./joern-scan <src>

데이터베이스를 JSON으로 내보내기

install.sh를 실행한 후 다음을 실행할 수 있습니다:

root@kitploit:~
./joern-scan --dump

사용 가능한 모든 쿼리와 해당 메타 정보 목록이 포함된 querydb.json 파일을 생성합니다.

도구 다운로드