jjzjj

obfuscation

全部标签

Java 序列化 : readFields() beyond of readObject()?

ObjectInputStream.readFields()仅在privatevoidreadObject(ObjectInputStream)方法中有效。publicObjectInputStream.GetFieldreadFields()throwsIOException,ClassNotFoundException{SerialCallbackContextctx=curContext;if(ctx==null){thrownewNotActiveException("notincalltoreadObject");}...我无法使用默认序列化来读取对象(即ObjectInpu

java - Proguard:避免与预混淆库 JAR 的命名冲突

在重命名/重新打包类时,Proguard似乎没有尝试避免与库JAR中的类发生命名冲突。这是正确的,还是我没有正确配置它?我正在混淆使用最新GoogleAdMobSDK的Android应用程序。以前我使用旧的AdMobSDK没有问题。新的SDKJAR文件包含一些经过混淆处理的类。其中一个类是默认/未命名包中的a.class。当我混淆我的应用程序时,Proguard将我的一个类重命名/重新打包为未命名包中的a.class,尽管已将AdMobJAR作为库JAR读取(因此它应该知道这将导致碰撞)。不出所料,当dx工具试图将这两个同名类合并到一个.dex文件中时,我的构建失败了。作为一种解决方法

java - 混淆代码的堆栈跟踪显示未混淆的类名?

我正在使用Minecraft的服务器插件,它恰好被混淆了。我一直认为,经过混淆后,不可能恢复原来的类名,因为它们被完全删除了,我到处都是这样。修修补补一段时间后,我注意到当控制台中出现未捕获的异常时,它会显示类的混淆名称(例如atcratereloaded.aT.d),然后在括号内,通常会显示名称类和有问题的行,它显示了原始类名,这让我相信它实际上可以被反混淆。但是在我尝试过的所有工具中,似乎没有一个能够恢复原始类名,即使经过一些十六进制检查我已经确认原始类名实际上嵌入在编译的“.class”文件中。有没有什么工具可以使用它来自动恢复类名?示例堆栈跟踪:[03:49:57][Serve

java - 你能对混淆代码进行单元测试吗?

我希望在我们现有的Ant构建脚本中混淆我们的Java网络应用程序代码,但在单元测试方面遇到了问题。我在编译代码之后,在它被jar-ed之前和运行单元测试之前混淆代码。但是,如果我混淆我的生产代码而不是我的测试代码,我的所有测试都会失败,因为它们试图调用不再存在的方法,因为它们已被混淆器重命名。我可以将某些方法标记为不混淆,以便它们可以被外部系统(例如我们的测试套件)使用,但是由于我们正在争取高单元测试覆盖率,因此我们需要将我们的方法标记为所有-可混淆。如果我也混淆测试类,我会遇到两个问题:1:生产类和测试类合并到同一个输出目录中,我无法从生产.jar文件中排除测试类2:我无法运行正常的

java - Java 中是如何进行混淆的?

今天我遇到了一个混淆类(一个jar里有很多混淆类),我不知道这种混淆是如何完成的。一个例子:protectedvoida(ChannelHandlerContext☃,ByteBuf☃,ByteBuf☃)throwsException{int☃=☃.readableBytes();if(☃正如你在上面看到的,所有的参数变量都是一个雪人。这怎么能被撤销?还有它首先是如何完成的;JVM如何能够“处理”这些并毫无问题地执行代码?澄清一下,我不会使用此代码,它仅用于教育目的。我在学校上计算机科学类(class),因为我们正在学习Java并讨论反编译等限制。我有兴趣了解更多,所以我决定研究更大的

java - 如何保留包含特定成员的类?

我只想保留类,其中包含用@Keep注释的方法,以及这些方法。即使未使用这些方法(和所属类)也应保留。我在.pro-file中写的是:-keepclassmembersclass*{@Keep*;}-keepclasseswithmembersclass*{@Keep*;}但它会缩减带有@Keep方法的类(如果它们未被使用)。然后我试试这个:-keepclass*{@Keep*;}它只保留所有类。那么,我应该在.pro-file中写什么呢?更新1:示例感谢您的回答。但是我已经使用了完全限定的注解名称并包含了带有注解的JAR,但它并没有达到我想要的效果。所以,我准备了一个样本。我有2个JA

java - 在 URL 中公开数据库内部 ID 是一种不好的做法吗?

在URL中公开数据库内部ID是一种不好的做法吗?例如,假设我有一个users表,其中每一行都有一些ID(主键)。公开URLmyapp.com/accountInfo.html?userId=5(其中5是实际主键)会被视为“坏事”吗?为什么?还假设我们正确地防御了SQL注入(inject)。我最感兴趣的是与JavaWeb技术堆栈(因此使用java标签)相关的答案,但一般性答案也会很有帮助。谢谢。 最佳答案 这取决于您解析URL的方式。如果你允许盲目的SQL注入(inject),那就不好了。您只需验证用户输入的ID。Stackexcha

java - Gradle Proguard 优化时出现大量内存错误

我为我的Java应用程序运行./gradlewproguard--debug来检查为什么它没有在数小时内完成,这就是我所看到的:17:14:11.431[INFO][system.out]Optimizing...17:14:13.537[DEBUG][org.gradle.process.internal.health.memory.MemoryManager]EmittingOSmemorystatusevent{Total:8589934592,Free:2029916160}17:14:13.538[DEBUG][org.gradle.launcher.daemon.serve

java - 可以向 Java 小程序添加什么安全性?

在构建JavaApplet时,是否可以采取任何步骤来防止用户调用内部方法?理论上,大多数对象都可以在客户端机器上进行分析和方法调用。除了混淆之外,还有其他任何步骤可以帮助防止这种情况发生吗?我的情况是确保最高分直接从客户端发送的游戏。 最佳答案 如果您的游戏太难自动化并且无法由机器人以比任何人都更富有成效的方式玩,那么最好以特定的随机间隔从服务器请求游戏状态。你可以实现一个CAPTCHA-类似机制,可以融入游戏的故事并带来Challenge-Responseauthentication的水平到类似图灵的小型测试,玩家必须不时通过解决

java - 如何将依赖样式名称与 CssResource 混淆一起使用?

我通过CssResource从UiBinder和javaView访问样式名称。问题是由于类名混淆,我找不到添加和删除后缀的方法。到目前为止,我已经在主名称和从属名称上使用@external注释来处理这种情况,但我认为这不是一个好的解决方案。 最佳答案 我认为你是对的,依赖样式不能与CssResources一起工作,但你可以用分层样式实现类似的效果,比如.widgetStyle.error{color:red;}然后应用style.widgetStyle和style.error,而不是使用依赖名称。