如何使用混淆器?

2023-11-27

我试图学习如何使用ProGuard,这并不像我想象的那么容易。一开始我找了一个简单的Java代码来尝试一下,简单的二类 Swing 计算器.

可以通过该链接找到该代码,但我发现它太冗长了,无法将其发布到此处。无论如何,这是一个简单的应用程序,入口点位于Calc.main(),没有包。

然后我用以下命令编译了这两个源:

$ javac *.java

并创建了.jar文件(因为 ProGuard 似乎只适用于 jar):

$ jar cvef Calc calc.jar *.class
added manifest
adding: Calc.class(in = 3869) (out= 2126)(deflated 45%)
adding: Calc$ClearListener.class(in = 468) (out= 327)(deflated 30%)
adding: CalcLogic.class(in = 1004) (out= 515)(deflated 48%)
adding: Calc$NumListener.class(in = 1005) (out= 598)(deflated 40%)
adding: Calc$OpListener.class(in = 1788) (out= 1005)(deflated 43%)

编写名为 ProGuard 的文件obfuscate.pro:

-injars       calc.jar
-outjars      calc_obf.jar
-libraryjars  <java.home>/lib/rt.jar

-keep public class Calc extends javax.swing.JFrame {
public static void main(java.lang.String[]);
}

最后运行 ProGuard:

$ ~/progs/proguard/proguard4.8/bin/proguard.sh @obfuscate.pro
ProGuard, version 4.8
Reading program jar [/home/lucas/tmp/calc.jar]
Reading library jar [/usr/lib/jvm/java-7-openjdk-i386/jre/lib/rt.jar]
Error: The output jar is empty. Did you specify the proper '-keep' options?

嗯,显然没用。我厌倦了弄乱 ProGruard 参数,特别是那个-keep选项,但没有成功。我在与我的问题相关的文档中找到的所有内容都无法帮助我。那我就求助于你了……有什么问题吗?怎样做才正确呢?


我使用以下配置文件让它工作:

-injars       calc.jar
-outjars      calc_obf.jar
-libraryjars  <java.home>/lib/rt.jar
-keep class Calc {
  public static void main(java.lang.String[]);
}

最值得注意的是,我放弃了public在...前面class Calc.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用混淆器? 的相关文章

随机推荐

  • Java 中的 Char 与 String? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我今年正在学习 Java 作为 AP 计算机科学课程的一部分 当我阅读有关 Char 和 String 的内容时 我无法理解为什么人们会费心使用 Char 并且只能存储一个字符而
  • 关于Python背景透明.png格式OpenCV的问题

    我正在用 Python 学习 OpenCV 我尝试更改 PNG 格式的图片颜色 但 PNG 背景出现一些问题 图像具有透明背景 当我将其更改为灰度时 背景已更改为黑色 我的图片不再透明 我想要的是保持图片的透明背景 原图 My code i
  • 文件打开:这是糟糕的 Python 风格吗?

    要读取文件的内容 data open filename r read 打开的文件立即停止在任何地方被引用 因此文件对象最终将关闭 并且它不应该影响使用它的其他程序 因为该文件仅打开用于读取 而不是写入 编辑 这实际上在我写的一个项目中困扰了
  • 克隆私有存储库 (Github)

    我在 Github 上有一个用于我正在开发的项目的私有存储库 到目前为止 我只在家用台式机上工作 但我刚刚买了一台笔记本电脑 并正在尝试对其进行设置 以便我可以从任意一台计算机上处 理该项目 并推 拉更改 我向笔记本电脑的 Github 帐
  • 静态编译 openssl 二进制文件

    从源 tarball 构建时由 config make 命令生成的 openssl 二进制文件动态链接到这些库 linux vdso so 1 gt 0x00007fffa75fe000 libdl so 2 gt lib x86 64 l
  • AWS Lambda 上的 cURL 给出命令未找到错误

    从今天开始几个小时 Lambda 上的一个简单的curl 命令失败了 Lambda环境是NodeJs 10 x 也在12 x中尝试过 const execSync require child process exports handler
  • nvidia-smi 易失性 GPU 利用率解释?

    我知道nvidia smi l 1将给出每一秒的 GPU 使用情况 类似于以下内容 但是 我希望能得到关于什么的解释Volatile GPU Util真正意思 是使用的 SM 数量除以 SM 总数 还是占用率 还是其他什么 NVIDIA S
  • WinForms 工具提示未显示

    我有一个 WinForms 应用程序 每个表单和用户控件都按如下方式设置其工具提示 in the control constructor var toolTip new ToolTip this Disposed o e gt toolTi
  • 如何处理 python WebDriver 中偶发的 BadStatusLine、CannotSendRequest 错误

    自从我们开始在 jenkins 中运行 selenium UI 测试以来 我们注意到测试期间出现少量但令人讨厌的错误频率 我们在看似随机的 selenium 操作 单击 退出 访问等 上收到 BadStatusLine 和 CannotSe
  • 同一 Matplotlib 标签中的多种字体大小

    我正在尝试做一些相对简单的事情 我希望能够增加一个字母的字体 例如 LaTeX 变量 例如 30 并保持标签中的其他字母为某种字体 例如 20 有人有快速的解决方案吗 对我来说这似乎相当复杂 我尝试使用 对于标签中的每个 项目 plt pl
  • 基于 Windows 7 上的 Perl

    我在 Windows 7 上安装了 Padre perl perl IDE 每次运行程序时 我都会收到一条错误消息 perl warning Setting locale failed perl warning Please check t
  • 从 jar 中提取 scala 源代码

    所以我有一个包含 scala 作为源代码的 jar 文件 但我丢失了原始代码 有没有办法将 jar 中的类文件转换为 scala 函数和类 而不是编译器生成的 java 类 我尝试过使用反编译器 但它只给我提供了零意义的java代码 先感谢
  • 无法显示 Highchart

    我对 Javascript Rails 和 JQuery 一起工作还很陌生 我正在 Highcharts 上阅读本教程 http www highcharts com documentation how to use installatio
  • spring-cloud 与ribbon/eureka/hystrix 使用restTemplate 无法设置连接/读取超时

    我已经使用 spring cloud 构建了一个 spring boot 应用程序 并希望在我的客户端应用程序 这也是一个微服务 中使用 RestTemplate 以便我可以继续使用mockMvc 进行集成测试 我正在使用默认的ribbon
  • 如何检测Facebook分享成功?使用 JavaScript

    此代码正在共享 facebook 但我想要如何检测 facebook 共享成功 我如何使用 javascript 做到这一点 u location href t document title var myWindow window open
  • 如何删除文本按钮的填充?

    我正在尝试从中删除填充TextButton但它不会起作用 TextButton onClick modifier Modifier padding 0 dp Text getString R string terms and conditi
  • 如何更改 RecyclerView 项目 onClick 的 viewType

    我创建了一个以 Cards 作为主要视图类型的 RecyclerView 我想要实现的是 当用户单击某个项目时 该项目的 ViewType 将从卡片更改为另一个 Viewtype 例如水平滚动的列表文本视图 我的 RecyclerView
  • 将 CSS 应用于活动路由器链接 [Angular 2]

    我想将特殊的 CSS 样式属性应用于活动路由器链接 a name a 这是我到目前为止所尝试的 使用默认的 router link active 类 router link active color 000 font weight bold
  • AttributeError:“属性”对象没有属性

    Python 2 6 似乎无缘无故地被破坏了 有人能看出这段代码有问题吗 class DB def doSomething self str print str class A db DB staticmethod def getDB re
  • 如何使用混淆器?

    我试图学习如何使用ProGuard 这并不像我想象的那么容易 一开始我找了一个简单的Java代码来尝试一下 简单的二类 Swing 计算器 可以通过该链接找到该代码 但我发现它太冗长了 无法将其发布到此处 无论如何 这是一个简单的应用程序