VulHunt is a unified platform for vulnerability detection, malware analysis, and more — working from a single source of truth across multiple representations including disassembly, intermediate representation (IR), and decompiled code.It allows writing high-level Lua rules that match against low-level semantic information extracted from binaries. These rules can detect known and unknown vulnerabilities, patches, malicious code, and other software properties in targets such as POSIX executables and UEFI modules.VulHunt also exposes its analysis capabilities through an MCP server, giving LLMs flexible access to the full analysis engine. To guide LLMs through common workflows, VulHunt ships a set of Claude Skills — structured instructions that teach an agent how to use VulHunt’s MCP tools for specific tasks.
Quick start
To follow along, install VulHunt:
Linux and macOS
curl --proto '=https' --tlsv1.2 -sSfL https://sh.vulhunt.re | sh
The --data flag is only required when VulHunt’s data files are not in the
default location. If you installed via the standard installer, you can omit
it.
A first look at rules
VulHunt rules are Lua scripts that define rule metadata and detection. Let’s see an example rule to detect binaries affected by CVE-2024-6387 (also known as regreSSHion). A simplified1 way to detect this vulnerability in sshd binaries is by checking whether syslogv is called from sshsigdie:
CVE-2024-6387.vh
author = "Binarly"name = "CVE-2024-6387"platform = "posix-binary"architecture = "*:*:*"scopes = { scope:functions { named = "sshsigdie", with = function(project, context) if context:has_call("sshlogv") then print("This binary is vulnerable to CVE-2024-6387 (regreSSHion)!") end end, },}
The rule above works fine, but VulHunt packs way more power. The rest of this guide presents its key concepts, showing how to hunt down interesting code in binaries. 1
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"VulHunt rules","colors":{"primary":"#938aff","dark":"#3f3b6c"},"logo":{"light":"https://mintcdn.com/vulhunt-docs/4J8ydyrFXmRmhhWG/assets/logo/binarly_light.svg?fit=max\u0026auto=format\u0026n=4J8ydyrFXmRmhhWG\u0026q=85\u0026s=14847ddc32ce27865d094cef79319891","dark":"https://mintcdn.com/vulhunt-docs/4J8ydyrFXmRmhhWG/assets/logo/binarly_dark.svg?fit=max\u0026auto=format\u0026n=4J8ydyrFXmRmhhWG\u0026q=85\u0026s=3f32c947da03386eec89b02648efead5","href":"https://binarly.io"},"favicon":"https://mintcdn.com/vulhunt-docs/4J8ydyrFXmRmhhWG/assets/favicon.png?fit=max\u0026auto=format\u0026n=4J8ydyrFXmRmhhWG\u0026q=85\u0026s=74e1ee6351224027ba56a2fe5c4f04c8","appearance":{"default":"light","strict":true},"background":{"decoration":"gradient"},"navbar":{"primary":{"type":"button","label":"Support","href":"https://dashboard.mintlify.com"}},"footer":{"socials":{"youtube":"https://www.youtube.com/@binarly","x":"https://x.com/binarly_io","github":"https://github.com/binarly-io","linkedin":"https://www.linkedin.com/company/binarlyinc"}},"fonts":{"family":"Exo 2"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"vulhunt-docs","hasAudioNarration":false,"actualSubdomain":"vulhunt-docs","customDomains":["vulhunt-docs.binarly.io"],"gitSource":{"type":"github","owner":"binarly-io","repo":"binarly-vulhunt-docs","deployBranch":"platform-v2.0","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6a8d85f0f1cd0f8c1cd1a8e5","clientVersion":"0.0.4142","searchFilterCounts":[{"language":"default","tag":"VulHunt Reference","count":47},{"language":"default","tag":"User Guide","count":31},{"language":"default","tag":"Types","count":28},{"language":"default","tag":"Scopes","count":19},{"language":"default","tag":"VulHunt Rules","count":14},{"language":"default","tag":"Scopes Result","count":13},{"language":"default","tag":"VulHunt CLI","count":9},{"language":"default","tag":"Annotations","count":8},{"language":"default","tag":"Options","count":5},{"language":"default","tag":"VulHunt SDK","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"user-guide/get-started/introduction","slug":"/user-guide/get-started/introduction","pageMetadata":{"title":"Introduction","description":null,"href":"/user-guide/get-started/introduction"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`VulHunt is a unified platform for vulnerability detection, malware analysis, and more — working from a single source of truth across multiple representations including disassembly, intermediate representation (IR), and decompiled code.`}),`\n`,_jsxs(_components.p,{children:[`It allows writing high-level `,_jsx(_components.a,{href:`https://www.lua.org`,children:`Lua`}),` rules that match against low-level semantic information extracted from binaries. These rules can detect known and unknown vulnerabilities, patches, malicious code, and other software properties in targets such as POSIX executables and UEFI modules.`]}),`\n`,_jsxs(_components.p,{children:[`VulHunt also exposes its analysis capabilities through an `,_jsx(_components.a,{href:`/user-guide/vulhunt-cli/options/mcp`,children:`MCP server`}),`, giving LLMs flexible access to the full analysis engine. To guide LLMs through common workflows, VulHunt ships a set of `,_jsx(_components.a,{href:`https://github.com/vulhunt-re/skills`,children:`Claude Skills`}),` — structured instructions that teach an agent how to use VulHunt’s MCP tools for specific tasks.`]}),`\n`,_jsx(Heading,{level:`2`,id:`quick-start`,children:`Quick start`}),`\n`,_jsx(_components.p,{children:`To follow along, install VulHunt:`}),`\n`,_jsx(Heading,{level:`3`,id:`linux-and-macos`,children:`Linux and macOS`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --proto`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '=https'`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --tlsv1.2`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -sSfL`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://sh.vulhunt.re`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` sh`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`windows`,children:`Windows`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`irm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://ps.vulhunt.re`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` iex`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`For full installation options consult the `,_jsx(_components.a,{href:`/user-guide/vulhunt-cli/installation`,children:`installation guide`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`quick-usage`,children:`Quick usage`}),`\n`,_jsx(_components.p,{children:`VulHunt supports two primary usage modes:`}),`\n`,_jsx(Heading,{level:`3`,id:`scan-mode`,children:`Scan mode`}),`\n`,_jsx(_components.p,{children:`Run VulHunt rules against binaries:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`vulhunt-ce`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` scan`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` /path/to/data`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --rules`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` /path/to/rules`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --pretty`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --output`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` output.json`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`binar`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`y`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`mcp-mode`,children:`MCP mode`}),`\n`,_jsx(_components.p,{children:`Use VulHunt as an MCP server:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`vulhunt-ce`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` /path/to/data`})]}),`\n`]})})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`--data`}),` flag is only required when VulHunt’s data files are not in the\ndefault location. If you installed via the standard installer, you can omit\nit.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`a-first-look-at-rules`,children:`A first look at rules`}),`\n`,_jsxs(_components.p,{children:[`VulHunt rules are Lua scripts that define rule metadata and detection. Let’s see an example rule to detect binaries affected by CVE-2024-6387 (also known as `,_jsx(_components.strong,{children:`regreSSHion`}),`). A simplified`,_jsx(`sup`,{children:`1`}),` way to detect this vulnerability in `,_jsx(_components.code,{children:`sshd`}),` binaries is by checking whether `,_jsx(_components.code,{children:`syslogv`}),` is called from `,_jsx(_components.code,{children:`sshsigdie`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:`CVE-2024-6387.vh`,numberOfLines:`14`,language:`lua`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`lua`,children:_jsxs(_components.code,{language:`lua`,numberOfLines:`14`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`author`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Binarly\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"CVE-2024-6387\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`platform`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"posix-binary\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`architecture`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"*:*:*\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`scopes`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` scope`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`functions`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` named`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"sshsigdie\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` with`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`project`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`has_call`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sshlogv\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`then`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"This binary is vulnerable to CVE-2024-6387 (regreSSHion)!\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` end`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` end`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`The rule above works fine, but VulHunt packs way more power. The rest of this guide presents its key concepts, showing how to hunt down interesting code in binaries.`}),`\n`,_jsx(`br`,{}),`\n`,_jsxs(_components.p,{children:[_jsx(`sup`,{children:`1`}),`\\xA0`]}),`\n`]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Introduction","description":null,"href":"/user-guide/get-started/introduction"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Quick start","slug":"quick-start","depth":2,"children":[{"title":"Linux and macOS","slug":"linux-and-macos","depth":3,"children":[]},{"title":"Windows","slug":"windows","depth":3,"children":[]}]},{"title":"Quick usage","slug":"quick-usage","depth":2,"children":[{"title":"Scan mode","slug":"scan-mode","depth":3,"children":[]},{"title":"MCP mode","slug":"mcp-mode","depth":3,"children":[]}]},{"title":"A first look at rules","slug":"a-first-look-at-rules","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"vulhunt-docs","siteName":"VulHunt rules","title":"Introduction - VulHunt rules","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-25T12:09:47.467Z","originalFileLocation":"user-guide/get-started/introduction.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"VulHunt rules\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Introduction - VulHunt rules\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"VulHunt rules\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://vulhunt-docs.binarly.io/user-guide/get-started/introduction\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://vulhunt-docs.mintlify.site/_mintlify/api/og/v2?division=Get+Started\u0026amp;title=Introduction\u0026amp;theme=d3c36375f79c20189d104bb2\u0026amp;signature=be0a6389d5b6a6378abe27059a97aaa69a15ee3fed2a8df84bd2a1e4504918be\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Introduction - VulHunt rules\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://vulhunt-docs.mintlify.site/_mintlify/api/og/v2?division=Get+Started\u0026amp;title=Introduction\u0026amp;theme=d3c36375f79c20189d104bb2\u0026amp;signature=be0a6389d5b6a6378abe27059a97aaa69a15ee3fed2a8df84bd2a1e4504918be\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/vulhunt-docs/viXq-1qd9Hf6FpDW/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"VulHunt rules\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#938aff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://vulhunt-docs.binarly.io/user-guide/get-started/introduction\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/user-guide/get-started/introduction.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://vulhunt-docs.binarly.io/#organization\",\"name\":\"VulHunt rules\",\"url\":\"https://vulhunt-docs.binarly.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/vulhunt-docs/4J8ydyrFXmRmhhWG/assets/logo/binarly_light.svg?fit=max\u0026auto=format\u0026n=4J8ydyrFXmRmhhWG\u0026q=85\u0026s=14847ddc32ce27865d094cef79319891\"}},{\"@type\":\"WebSite\",\"@id\":\"https://vulhunt-docs.binarly.io#website\",\"name\":\"VulHunt rules\",\"url\":\"https://vulhunt-docs.binarly.io\",\"publisher\":{\"@id\":\"https://vulhunt-docs.binarly.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://vulhunt-docs.binarly.io/user-guide/get-started/introduction#webpage\",\"url\":\"https://vulhunt-docs.binarly.io/user-guide/get-started/introduction\",\"name\":\"Introduction\",\"dateModified\":\"2026-08-25T12:09:47.467Z\",\"isPartOf\":{\"@id\":\"https://vulhunt-docs.binarly.io#website\"},\"breadcrumb\":{\"@id\":\"https://vulhunt-docs.binarly.io/user-guide/get-started/introduction#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://vulhunt-docs.binarly.io/user-guide/get-started/introduction#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"VulHunt rules\",\"item\":\"https://vulhunt-docs.binarly.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction\",\"item\":\"https://vulhunt-docs.binarly.io/user-guide/get-started/introduction\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://vulhunt-docs.binarly.io/user-guide/get-started/introduction#article\",\"headline\":\"Introduction\",\"name\":\"Introduction\",\"url\":\"https://vulhunt-docs.binarly.io/user-guide/get-started/introduction\",\"mainEntityOfPage\":{\"@id\":\"https://vulhunt-docs.binarly.io/user-guide/get-started/introduction#webpage\"},\"dateModified\":\"2026-08-25T12:09:47.467Z\",\"publisher\":{\"@id\":\"https://vulhunt-docs.binarly.io/#organization\"},\"isPartOf\":{\"@id\":\"https://vulhunt-docs.binarly.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"VulHunt rules\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"VulHunt rules\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/user-guide/get-started/introduction.md","siteName":"VulHunt rules","nav":{"global":null,"tabs":[{"tab":"User Guide","groups":[{"group":"Get Started","pages":[{"title":"Introduction","href":"/user-guide/get-started/introduction"},{"title":"Editions","description":null,"href":"/user-guide/get-started/editions"}]},{"group":"VulHunt CLI","pages":[{"title":"Overview","href":"/user-guide/vulhunt-cli/overview"},{"title":"Installation","href":"/user-guide/vulhunt-cli/installation"},{"title":"Auxiliary Data","href":"/user-guide/vulhunt-cli/auxiliary-data"},{"title":"Usage","href":"/user-guide/vulhunt-cli/usage"},{"group":"Options","pages":[{"title":"Options","href":"/user-guide/vulhunt-cli/options"},{"title":"scan","href":"/user-guide/vulhunt-cli/scan"},{"title":"mcp","href":"/user-guide/vulhunt-cli/mcp"},{"title":"btp","href":"/user-guide/vulhunt-cli/btp"},{"title":"ba2","href":"/user-guide/vulhunt-cli/ba2"}]}]},{"group":"VulHunt SDK","pages":[{"title":"Overview","href":"/user-guide/vulhunt-sdk/overview"},{"title":"Kernel Setup","href":"/user-guide/vulhunt-sdk/kernel-setup"},{"title":"Client Setup","href":"/user-guide/vulhunt-sdk/client-setup"},{"title":"Usage","href":"/user-guide/vulhunt-sdk/usage"},{"title":"Commands","href":"/user-guide/vulhunt-sdk/commands"}]},{"group":"VulHunt Rules","pages":[{"title":"Overview","href":"/user-guide/vulhunt-rules/overview"},{"group":"Scopes","pages":[{"title":"Project Scope","href":"/user-guide/vulhunt-rules/scopes/project-scope"},{"title":"Functions Scope","href":"/user-guide/vulhunt-rules/scopes/functions-scope"},{"title":"Calls Scope","href":"/user-guide/vulhunt-rules/scopes/calls-scope"}]},{"group":"Use Cases","pages":[{"title":"Use Case: Buffer Overflow","href":"/user-guide/vulhunt-rules/use-cases/simple-buffer-overflow"},{"title":"Use Case: Authentication Bypass","href":"/user-guide/vulhunt-rules/use-cases/cve-2026-24061"},{"title":"Use Case: UEFI module","href":"/user-guide/vulhunt-rules/use-cases/cve-2025-4425"}]},{"title":"Returning Results","href":"/user-guide/vulhunt-rules/returning-results"},{"title":"Decompiler Extension","href":"/user-guide/vulhunt-rules/decompiler-extension"},{"title":"Signatures","href":"/user-guide/vulhunt-rules/signatures"},{"title":"Type Libraries","href":"/user-guide/vulhunt-rules/type-libraries"},{"title":"Modules","href":"/user-guide/vulhunt-rules/modules"},{"title":"Best Practices","href":"/user-guide/vulhunt-rules/best-practices"}]},{"group":"Appendices","pages":[{"title":"Glossary of Terms","href":"/user-guide/appendices/glossary-of-terms"},{"title":"Troubleshooting Guide","href":"/user-guide/appendices/troubleshooting-guide"}]}]},{"tab":"VulHunt Reference","pages":[{"title":"VulHunt Reference","href":"/vulhunt-reference/type-notation"}]}]},"basePath":"","title":"Introduction - VulHunt rules","buildId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","deploymentId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","dynamics":[],"chunks":[]}