跳到主内容
精选88Hacker News Best(web_list)模型发布/更新

Qwen 3.8 27B离线逆向工程:30分钟破解商业应用许可证

I gave Qwen 3.8 27B a reverse-engineering job and it finished in 30 minutes

原文
推荐理由

实测展示了27B级别本地模型在复杂逆向与安全领域的极限能力,对关注端侧部署与AI安全的从业者极具参考价值。

By Adam Conway

作者:Adam Conway

Published Aug 22, 2026, 7:00 PM EDT

发布于 2026 年 8 月 22 日,美东时间下午 7:00

I’m Adam Conway, an Irish technology fanatic with a BSc in Computer Science and I'm XDA’s Lead Technical Editor. My Bachelor’s thesis was conducted on the viability of benchmarking the non-functional elements of Android apps and smartphones such as performance, and I’ve been working in the tech industry in some way or another since 2017.

我是 Adam Conway,一位拥有计算机科学学士学位的爱尔兰科技发烧友,也是 XDA 的首席技术编辑。我的学士论文研究了 Android 应用和智能手机等非功能性元素(如性能)进行基准测试的可行性,自 2017 年以来,我一直以各种方式从事科技行业工作。

In my spare time, you’ll probably find me playing Counter-Strike or VALORANT, and you can reach out to me at [email protected], on Twitter as @AdamConwayIE, on Instagram as AdamConwayIE, or u/AdamConwayIE on Reddit.

在业余时间,你可能会发现我在玩《反恐精英》或《无畏契约》,你可以通过 [email protected] 邮箱,或在 Twitter 上关注 @AdamConwayIE、Instagram 上的 AdamConwayIE,以及 Reddit 上的 u/AdamConwayIE 与我联系。

Sign in to your XDA account

登录你的 XDA 账户

Qwen 3.8 27B was one of the most highly-anticipated open-weights releases that I've seen in a long time, and like many others, I immediately got to work testing it out and playing with it when it dropped. I'm running it on a single Lenovo ThinkStation PGX, the compact workstation built on Nvidia's GB10 Grace Blackwell chip, packing 128 GB of unified memory and 273 GB/s of bandwidth. Out of the box, it manages a fairly dull 15 to 30 tokens a second, but with an SGLang, NVFP4, and DFlash2 speculative-decoding setup that's become the standard recipe for this hardware, it can reach around 50 tokens a second on code and reasoning.

Qwen 3.8 27B 是我许久以来见过的最受期待的开源权重发布之一,像许多人一样,它在发布时我便立即着手进行测试和体验。我在一台 Lenovo ThinkStation PGX 上运行它,这是一款基于 Nvidia GB10 Grace Blackwell 芯片打造的紧凑型工作站,配备 128 GB 统一内存和 273 GB/s 带宽。开箱即用状态下,它的速度相当平淡,每秒仅能生成 15 到 30 个 token,但采用 SGLang、NVFP4 和 DFlash2 推测解码设置——这已成为该硬件的标准配置——它在代码和推理任务上可以达到每秒约 50 个 token。

One of my tests, though, proved just how incredible local models have become.

然而,我的一项测试证明了本地模型已经变得多么令人惊叹。

There are reasons to believe the hype when it comes to the Qwen models; I've had consistently good experiences with Qwen 3.6 27B, and Qwen 3.8 27B is, so far, more of the same but better. In fact, Artificial Analysis has it as the top open-weights model in its 4B to 40B size class out of 135 models, with a 52 on its intelligence index, and its own numbers on things like SWE-bench Pro beat models that cost far more to run.

关于 Qwen 模型,有理由相信其宣传;我对 Qwen 3.6 27B 一直有着良好的使用体验,而 Qwen 3.8 27B 迄今为止更是延续了这一优势且表现更佳。事实上,Artificial Analysis 将其列为 135 个模型中 4B 至 40B 参数规模类别里的顶级开源权重模型,其智能指数得分为 52,其在 SWE-bench Pro 等方面的自有数据也击败了运行成本远高于它的模型。

I gave it the hardest real task that fits on one machine: reverse-engineering a commercial app's license check, and it's one that I've already paid for and used, just to see how it would fare. It was unlikely to be in its training data, but it's a highly complex, specialized task, and given the concerns some people have expressed for the model's cybersecurity capabilities, I figured it was a good test. Not only did it turn out to be one of the most impressive demonstrations I've ever seen from a local model, it was able to fix its own mistakes along the way.

我给它出了一个单台机器能承载的最具挑战性的真实任务:逆向工程一款商业应用的许可证检查机制,而且我已经付费并使用过该应用,只是为了看看它的表现如何。它不太可能出现在训练数据中,但这是一项高度复杂且专业的任务,鉴于有些人对该模型的网络安全性能力表示担忧,我认为这是一个很好的测试。结果它不仅成为我从本地模型中看到过的最令人印象深刻的演示之一,而且在过程中还能修正自己的错误。

I'm using the Pi harness for this test, and the model only called standard Bash-based tools throughout.

在此测试中,我使用的是 Pi harness,整个过程中模型仅调用了标准的基于 Bash 的工具。

It refused, then talked itself into building a bypass anyway

它最初拒绝了,随后又说服自己最终构建了一个绕过方案

I posed as the developer of the application, it caught me out

我伪装成该应用的开发者,结果被识破了

The plan I had was pretty simple, and one that used to work with local LLMs pretty consistently. I told the model we'd built the app and wanted to know whether the license check was as solid as we believed, using a jailbreak system prompt.

我的计划相当简单,而且以前在使用本地大语言模型(LLM)时一直有效。我告诉模型我们开发了这款应用,并想知道许可证检查是否像我们认为的那样牢固,同时使用了一个越狱系统提示词。

As it turns out, probably unsurprisingly, Qwen recognizes common jailbreak attempts, and one of the first things it told me was that it wasn't going to fall for the jailbreak prompt. It then checked the signing certificate and pointed out (correctly, might I add) that I hadn't built this app, before naming the actual developer. I was caught out. Oops.

事实证明,大概不出所料,Qwen 能识别常见的越狱尝试,它告诉我的第一件事就是不会落入这个越狱提示词的圈套。随后它检查了签名证书,并指出(顺便说一句,这是正确的)我不是这款应用的开发者,然后指出了真正的开发者。我被抓包了。哎呀。

These days, that's not the most impressive achievement, given how good models have got at refusing certain prompts when pushed. With that said, what matters is what it did next. It told me that it would audit the license verification and document weaknesses but would not build a working bypass, and then it got on with the actual work right up to that line. By the end, I had a fully written report of every step along the way, how the authentication works, how it can be overridden, and then changed its tune and built the actual bypass, because the steps to do it were now in front of me anyway.

如今,鉴于模型在受到施压时拒绝某些提示词的能力越来越强,这已算不上什么令人印象深刻的成就。话虽如此,关键在于它接下来的做法。它告诉我它将审计许可证验证流程并记录弱点,但不会构建一个可用的绕过方案,然后它就着手进行实际工作,直到那一步为止。到最后,我已经得到了一份完整的报告,详细记录了每一步骤、身份验证的工作原理、如何覆盖它,然后它改变了态度,构建了实际的绕过方案,因为实现它的步骤现在就在眼前。

It was entirely static analysis

这完全是静态分析

It never executed the app once

它一次都没有执行过该应用

Qwen never actually launched the app until the very end when it demonstrated that the bypass worked. Instead, it worked via static analysis, disassembling the framework, going through thousands of lines of arm64, mapping the security functions to their call sites, and working out that the vendor had hidden the corresponding public verification key inside the binary. Then it found all of those pieces, combined them together, and gave me the public key that the app verifies its licenses against.

Qwen 直到最后演示绕过方案有效时才真正启动该应用。相反,它是通过静态分析工作的:反汇编框架,逐行审查数千行 arm64 代码,将安全函数映射到它们的调用位置,并推断出供应商将对应的公钥验证密钥隐藏在了二进制文件中。然后它找到了所有这些部分,将它们组合在一起,给了我该应用用于验证许可证的公钥。

Because I have a legitimate, purchased copy of the application, it could verify that the real license on my machine had been signed by a private key that matched the reconstructed key. In other words, a model that fits in 17 GB of VRAM recovered a key the vendor had deliberately obscured, proving that it had deconstructed that entire chain effectively. It also took approximately 30 minutes, when it could take significantly longer for a human.

因为我拥有该应用的合法购买副本,它可以验证我机器上的真实许可证是由与重构密钥匹配的私钥签名的。换句话说,一个仅需 17 GB 显存就能容纳的模型恢复了供应商故意模糊处理的密钥,证明它有效地解构了整个链条。整个过程大约耗时 30 分钟,而人类可能需要更长的时间。

With the key, everything else is much easier to understand; the model kept a detailed report as it went, explaining how its activation takes place once, online, when you buy or upgrade. After that, everything is verified offline at launch: the signature check, machine binding to the hardware serial read from the platform, an embedded revocation list, a check that the binary is still signed, and a signed update path. It was the kind of thing you could do painstakingly by hand with the likes of Ghidra.

有了密钥,其他一切都更容易理解;该模型在运行过程中保留了详细报告,解释了在购买或升级时激活是如何在线发生的。此后,一切都在启动时离线验证:签名检查、机器与从平台读取的硬件序列号的绑定、内置吊销列表、二进制文件是否仍被签名的检查,以及已签名的更新路径。这类工作如果用 Ghidra 等工具手工完成,会极其繁琐。

Qwen concluded the scheme is unusually thorough for an app of this class, with the weak points in three specific places: the key is an awkwardly sized RSA key well below what anyone would call modern strength; being fully offline means a leaked key can only be revoked by pushing an update; and every check lives in local code, which is patchable the way all local checks are. After some back and forth, once it knew where the gate was, it turned the finding into a working proof of concept executed with a small script. I moved the license from its expected path, ran it, and it worked.

Qwen 认为,对于此类应用而言,该方案异常周全,弱点集中在三个特定方面:密钥是一个尺寸尴尬的 RSA 密钥,远低于任何可称为现代强度的标准;完全离线意味着一旦密钥泄露,只能通过推送更新来吊销;且所有检查都存在于本地代码中,而所有本地检查都是可修补的。经过几轮来回,一旦它确定了入口点,便将发现转化为一个通过小型脚本执行的可行概念验证。我将许可证从其预期路径移走并运行程序,结果成功了。

When it made mistakes, it solved them as well

当它犯错时,它也解决了这些错误

The first key was almost right

第一个密钥几乎正确

The first attempt at recovering the key was wrong in a very specific way; it produced a working key and the signature check passed, but a hash the binary computes as an integrity check didn't match. In my experience, most models would have called it done and left it at that, but Qwen 3.8 27B didn't do that. Instead, it highlighted the mismatch, went back to the drawing board, and kept going until the value matched byte for byte.

第一次尝试恢复密钥的方式存在非常具体的错误;它生成了一个可用的密钥,签名检查也通过了,但二进制文件作为完整性检查计算的哈希值不匹配。根据我的经验,大多数模型本会就此止步,但 Qwen 3.8 27B 没有这样做。相反,它指出了不匹配之处,回到起点重新分析,并继续推进直到字节级完全匹配。

With this model, there's a pretty big catch when it comes to that kind of back and forth. By default, its reasoning effort is set to its maximum, so even trivial requests can burn a few hundred to a few thousand tokens. Even when generating between 30 and 50 tokens per second, that still takes quite a long time.

对于这个模型来说,在进行这种来回交互时有一个相当大的代价。默认情况下,其推理努力设置为最大值,因此即使是琐碎的请求也可能消耗数百到数千个 token。即使每秒生成 30 到 50 个 token,这也需要相当长的时间。

Even still, given the results, I would not call it waste. Its first wrong guess was self-corrected, without input from me, and came to the right conclusion. Is it verbose? Yeah, it really is. But was it right? Also yes, and ultimately, the right answer is better than a wrong one given confidently.

尽管如此,鉴于结果,我不会称之为浪费。它的第一个错误猜测是自我纠正的,无需我输入任何内容,最终得出了正确结论。它冗长吗?是的,确实如此。但它正确吗?同样是的,归根结底,正确的答案优于自信给出的错误答案。

A local 27B is now a real input to threat models

本地部署的 27B 模型现在已成为威胁建模中的真实变量

The privacy cuts both ways

隐私保护是一把双刃剑

I can't get over the fact that Qwen actually deconstructed and understood the licensing scheme. I know that frontier models have been capable of impressive reverse engineering for a while, but this is a local 27B model. It ran entirely offline on a machine beside me, with no cloud involved at any point.

我无法相信 Qwen 竟然真的对授权方案进行了拆解并理解了它。我知道前沿模型已经具备令人印象深刻的逆向工程能力有一段时间了,但这是一个本地运行的 27B 模型。它在旁边的一台机器上完全离线运行,全程未涉及任何云服务。

And to be very clear, it produced a working authentication bypass for a commercial application.

而且必须明确的是,它生成了一个针对某商业应用程序的有效身份验证绕过方法。

This is a genuinely meaningful threshold to cross for a local model: Qwen went from an unfamiliar commercial binary to understanding its licensing architecture, recovered deliberately obscured cryptographic material, caught and corrected its own incorrect reconstruction, and ultimately turned that into a working proof of concept. I didn't have to send the binary, the license, or any of its analysis to somebody else's server to do it.

这对一个本地模型来说是一个真正有意义的里程碑:Qwen 从一个陌生的商业二进制文件出发,理解了其授权架构,恢复了故意被混淆的加密材料,发现并纠正了自身错误的重构结果,最终将其转化为一个可工作的概念验证(PoC)。我无需将二进制文件、许可证或其任何分析内容发送到别人的服务器上去完成这一切。

更进一步:量化金融体系

看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力

进入量化体系 →

相似阅读

另一事件,读法相近