<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Misc on Sonnety</title><link>https://sonnety14.github.io/sonnety_blog/tags/misc/</link><description>Recent content in Misc on Sonnety</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Sonnety</copyright><lastBuildDate>Tue, 07 Apr 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://sonnety14.github.io/sonnety_blog/tags/misc/index.xml" rel="self" type="application/rss+xml"/><item><title>CTF AI 本地化部署【白痴版】</title><link>https://sonnety14.github.io/sonnety_blog/p/ctf-ai-%E6%9C%AC%E5%9C%B0%E5%8C%96%E9%83%A8%E7%BD%B2%E7%99%BD%E7%97%B4%E7%89%88/</link><pubDate>Tue, 07 Apr 2026 00:00:00 +0800</pubDate><guid>https://sonnety14.github.io/sonnety_blog/p/ctf-ai-%E6%9C%AC%E5%9C%B0%E5%8C%96%E9%83%A8%E7%BD%B2%E7%99%BD%E7%97%B4%E7%89%88/</guid><description>&lt;img src="https://sonnety14.github.io/sonnety_blog/p/ctf-ai-%E6%9C%AC%E5%9C%B0%E5%8C%96%E9%83%A8%E7%BD%B2%E7%99%BD%E7%97%B4%E7%89%88/ctf_agent.jpeg" alt="Featured image of post CTF AI 本地化部署【白痴版】" />&lt;h2 id="前言">前言
&lt;/h2>&lt;p>本人是 pwn 手，AI 本地化部署的主要需求是看懂伪代码（呜呜别说我菜）&lt;/p>
&lt;p>然后本人配置是 &lt;code>5070Ti Laptop 12GB 显存 + 32GB 内存 + Ryzen 9 9955HX3D&lt;/code>，所以选择了 &lt;code>Qwen2.5-Coder-14B-Instruct&lt;/code>，模型文件约 9GB，加载进显存后大约占用 10GB 左右。&lt;/p>
&lt;p>如果配置更高一点，或者说能接受高出显存的部分交给 cpu 计算，可以考虑 &lt;code>Qwen2.5-Coder-32B-Instruct&lt;/code>，模型文件约 20GB，相比 14B 的轻量化版本，32B 模型的逻辑推演能力肯定高一点。&lt;/p>
&lt;p>（不是 QWEN 软广）&lt;/p>
&lt;h2 id="windows-宿主机安装-ollama-并下载模型">Windows 宿主机安装 Ollama 并下载模型
&lt;/h2>&lt;p>1.去官网下载 Windows 版 Ollama 并安装。&lt;/p>
&lt;p>2.下载模型：&lt;/p>
&lt;p>打开 PowerShell，运行：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">ollama run qwen2.5-coder:14b
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>其会自动下载模型并运行。&lt;/p>
&lt;h2 id="ida-伪代码审计插件-gepetto">IDA 伪代码审计插件 Gepetto
&lt;/h2>&lt;p>Gepetto 本质上是一个 Python 脚本，它默认需要 openai 这个库来发送网络请求（Ollama 提供了与 OpenAI 完全兼容的本地 API）。&lt;/p>
&lt;h3 id="下载-openai-依赖">下载 openai 依赖
&lt;/h3>&lt;p>打开一个新的命令行（CMD 或 PowerShell），运行以下命令安装依赖：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pip install openai
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>（注：如果你的 IDA 使用的是独立的 Python 环境，请确保在这个特定环境下执行 pip install）&lt;/p>
&lt;p>（注意 IDA 9.2 内部编译的 C++ 接口可能最高只兼容到 Python 3.11 或 3.12，无法兼容 3.14 的底层 API。）&lt;/p>
&lt;p>（所以如果没有下载 &lt;a class="link" href="https://www.google.com/search?q=https://www.python.org/ftp/python/3.12.8/python-3.12.8-amd64.exe" target="_blank" rel="noopener"
>python 3.12&lt;/a> 以下版本，下载完毕后，要在 IDA 9.2 安装路径下找到 &lt;code>idapyswitch.exe&lt;/code> 并运行，其会搜索当前你可绑定的 python 版本，选择 3.12 及以下版本）&lt;/p>
&lt;h3 id="下载-gepetto">下载 Gepetto
&lt;/h3>&lt;p>前往 Gepetto 的 GitHub 官方仓库：&lt;a class="link" href="https://github.com/JusticeRage/Gepetto" target="_blank" rel="noopener"
>JusticeRage/Gepetto&lt;/a>&lt;/p>
&lt;p>1.点击绿色的 Code 按钮，选择 Download ZIP。
2.解压下载的压缩包。里面有一个 &lt;code>gepetto.py&lt;/code> 文件和一个 &lt;code>gepetto&lt;/code> 文件夹。
3.将 &lt;code>gepetto.py&lt;/code> 文件和整个 &lt;code>gepetto&lt;/code> 文件夹，一起复制到你的 IDA 安装路径下的 &lt;code>plugins&lt;/code> 文件夹。
（其余文件可以删掉）&lt;/p>
&lt;h3 id="配置-gepetto-连接本地-ollama">配置 Gepetto 连接本地 Ollama
&lt;/h3>&lt;p>Gepetto 默认是连接 OpenAI 官方服务器的，我们需要修改它的配置文件，把请求“劫持”到你本地的 &lt;code>127.0.0.1:11434&lt;/code>。&lt;/p>
&lt;p>注意：喜欢“科学上网”的同学，记得设置 NO_PROXY 环境变量：&lt;/p>
&lt;ul>
&lt;li>
&lt;p>变量名: &lt;code>NO_PROXY&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>变量值: &lt;code>localhost,127.0.0.1,::1&lt;/code>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>即本地地址，不走代理。&lt;/p>
&lt;p>随便用 IDA 开一个可执行文件，然后在 &lt;strong>&lt;code>%APPDATA%\Hex-Rays\IDA Pro&lt;/code> 或 &lt;code>IDA Professional 9.2\plugins\gepetto&lt;/code> 里找到 &lt;code>gepetto.ini&lt;/code> 配置文件&lt;/strong>&lt;/p>
&lt;p>（都有就都改，都没有就自己创建一个）&lt;/p>
&lt;p>改成如下内容：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[Gepetto]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">model = qwen2.5-coder:14b
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">language = zh_CN
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[OpenAI]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">api_key = 123
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">base_url = http://127.0.0.1:11434/v1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>（model 自己改）&lt;/p>
&lt;p>然后在 models 目录下的 &lt;code>openai.py&lt;/code>，在那些 &lt;code>GPT_52_MODEL_NAME = &amp;quot;gpt-5.2&amp;quot;&lt;/code> 的附近，随便加上一行咱们的 AI 定义：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">QWEN_MODEL_NAME = &amp;#34;qwen2.5-coder:14b&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>（自己模型自己填）&lt;/p>
&lt;p>再塞进默认列表 &lt;code>_DEFAULT_OPENAI_MODELS = [&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">_DEFAULT_OPENAI_MODELS = [
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> QWEN_MODEL_NAME, # &amp;lt;--- 加上这一行
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> GPT_52_MODEL_NAME,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>保存，重启 IDA。&lt;/p>
&lt;h3 id="设置中文-prompt">设置中文 prompt
&lt;/h3>&lt;p>到现在，你应该可以右键一个函数的伪代码，然后让模型解释函数，但是生成的是英文的注释。&lt;/p>
&lt;p>在 ida 目录下的 &lt;code>handlers.py&lt;/code>，里面有一大串的提示词：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">f&amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> You are a reverse-engineering assistant. Output plain text only (no Markdown, no code fences).
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Locale: {locale}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Task: Summarize what the C function does and propose a clearer function name if one stands out.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Observations: Use any existing Gepetto-generated comments as hints but do not repeat them verbatim.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Response structure:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 1. Brief explanation (2-4 sentences) covering purpose, key behaviours, and notable side effects.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 2. Final line: &amp;#34;Proposed name: &amp;lt;name&amp;gt;&amp;#34; (use &amp;#34;(no change)&amp;#34; if you cannot recommend an improvement).
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ```C
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {decompiler_output}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ```
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>可以在 &lt;code>2.FINAL LINE&lt;/code> 下面另起一行，写上“请务必全程使用简体中文进行详细解释，包括所有的代码注释和逻辑分析”，模型即会用中文回答。&lt;/p>
&lt;p>也可以加上：“如有可能存在的 CTF 漏洞，请以 &amp;ldquo;hint:……&amp;rdquo; 的形式给出。”&lt;/p>
&lt;p>但是其实因为模型算力不太行，这个挺没啥必要的。&lt;/p></description></item></channel></rss>