<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>代码混淆 on Y4ph3tS blog</title>
    <link>https://yaphetszz.github.io/tags/%E4%BB%A3%E7%A0%81%E6%B7%B7%E6%B7%86/</link>
    <description>Recent content in 代码混淆 on Y4ph3tS blog</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sat, 25 Oct 2025 14:17:00 +0800</lastBuildDate>
    <atom:link href="https://yaphetszz.github.io/tags/%E4%BB%A3%E7%A0%81%E6%B7%B7%E6%B7%86/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Allatori配置文件指南</title>
      <link>https://yaphetszz.github.io/posts/allatori-doc/</link>
      <pubDate>Sat, 25 Oct 2025 14:17:00 +0800</pubDate>
      <guid>https://yaphetszz.github.io/posts/allatori-doc/</guid>
      <description>&lt;h1 id=&#34;allatori-配置文件指南&#34;&gt;Allatori 配置文件指南&lt;/h1&gt;&#xA;&lt;h2 id=&#34;写在前面&#34;&gt;写在前面&lt;/h2&gt;&#xA;&lt;p&gt;刚好最近在研究Java代码混淆，发现Allatori用的人还挺多的，但是相关文档比较少，就去把官网的文档顺手翻译了一下，这个应该适用最新版的Allatori，新版目前还没看到破解的，有些功能估计老版本用不了，等有空再研究研究&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-配置文件结构&#34;&gt;1 配置文件结构&lt;/h2&gt;&#xA;&lt;h3 id=&#34;11-input-标签&#34;&gt;1.1 Input 标签&lt;/h3&gt;&#xA;&lt;p&gt;Input 标签用于设置需要混淆的 jar（war、ear）文件或文件夹。该标签中至少应包含一个 jar 或 dir 标签，以指定输入和输出文件。&lt;/p&gt;&#xA;&lt;p&gt;Input 标签有两个可选属性：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;属性&lt;/th&gt;&#xA;          &lt;th&gt;值&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;basedir&lt;/td&gt;&#xA;          &lt;td&gt;可选属性。jar 文件的相对路径将相对于指定的目录进行解析。默认情况下，相对路径会相对于配置文件所在位置进行解析。&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;single-jar&lt;/td&gt;&#xA;          &lt;td&gt;可选属性。Allatori 会额外创建一个包含所有混淆后类的输出 jar 文件。&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Jar 标签有两个必填属性：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;属性&lt;/th&gt;&#xA;          &lt;th&gt;值&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;in&lt;/td&gt;&#xA;          &lt;td&gt;必填属性。需要混淆的 jar 文件名称。&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;out&lt;/td&gt;&#xA;          &lt;td&gt;必填属性。输出 jar 文件的名称。该名称可以与 in 属性的值相同，此时原 jar 文件会被混淆后的版本覆盖。&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Jar 标签中可包含嵌套标签，用于混淆 war/ear 文件内部的嵌套 jar 文件：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;jar&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;in=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;web.war&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;out=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;web-obf.war&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;nested&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;in=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;BOOT-INF/lib/some-library.jar&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;nested&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;in=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;BOOT-INF/lib/my*.jar&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/jar&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dir 标签有两个必填属性：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;属性&lt;/th&gt;&#xA;          &lt;th&gt;值&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;in&lt;/td&gt;&#xA;          &lt;td&gt;必填属性。包含需要混淆的类文件的目录名称。&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;out&lt;/td&gt;&#xA;          &lt;td&gt;必填属性。用于存放混淆后类文件的输出目录名称。为避免因配置中出现拼写错误而意外删除数据，输出目录在写入新文件前不会被清空。因此，在运行 Allatori 之前，应手动清空输出目录（例如，可使用 Ant 的 delete 任务）。&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;示例：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;input&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;basedir=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;input-jars&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;single-jar=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;application.jar&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;jar&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;in=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;app.jar&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;out=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;app-obf.jar&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;jar&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;in=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;input/*.jar&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;out=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;output/*.jar&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;jar&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;in=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;web.war&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;out=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;web-obf.war&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;nested&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;in=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;BOOT-INF/lib/some-library.jar&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;nested&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;in=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;BOOT-INF/lib/my*.jar&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/jar&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;dir&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;in=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;in-dir&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;out=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;out-dir&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/input&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;12-classpath-标签&#34;&gt;1.2 Classpath 标签&lt;/h3&gt;&#xA;&lt;p&gt;Classpath 标签用于为待混淆的应用设置类路径，其内部包含嵌套的 jar 标签，这些标签指定了需要添加到类路径中的 jar 文件名称。虽然并非必须引用应用所需的所有库 jar 文件，但缺少类路径元素可能会导致混淆效果减弱。在混淆过程中，Allatori 会对所有缺失的类发出警告。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
