标签: decompiling

事实检查:.NET应用程序对反编译有多脆弱?

我在MSMobiles.com博客上发现了这篇帖子,其中包括以下内容:

.Net在很多方面都很棒,但对于商业应用呢?没门!任何人都可以查看您的源代码.高端混淆器可以提供很多帮助,但任何坚定的黑客都会在不到一天的时间内修复您的代码.尽管花费1000美元用于反盗版和混淆工具,但我从悲伤的经历中知道这一点.

然后说明如何在.NET中开发商业Windows Mobile应用程序:

准备好延迟1天,之后您的竞争对手将复制您的功能,并在Skymarket中使用相同的功能放置自己的应用程序

对于那些熟悉.NET的人:这是真话还是废话?这个问题是否以某种方式特定于Windows Mobile,还是适用于Windows上的.NET?这对我来说似乎很令人惊讶,因为我知道微软在.NET中编写了大量自己的客户端软件(许多供应商用Java编写昂贵的应用程序,显然存在相同的问题),而且他们看起来很奇怪IP可能很容易被窃取.

.net decompiling disassembly

1
推荐指数
2
解决办法
553
查看次数

为什么不加密Java字节码而不是混淆它呢?

查看一些oragnizations为混淆Java字节码以避免其他人反编译并从代码中提取秘密信息所做的努力,同时考虑到这种做法的局限性:

使用非对称加密来解决这个问题是否可行?我的意思是,Oracle不可能为JVM配备一个证书和一个能够使用该证书的私钥解密加密类文件的ClassLoader吗?

当然,这些类将使用此"唯一oracle证书"的公钥进行加密.

私钥将在JVM中.

我想也许在数学上可能无法在JVM内部保护这个私钥(依次对它进行加密......),并且它最终会被黑客攻击......这是不是这样的?

java obfuscation jvm cryptography decompiling

1
推荐指数
1
解决办法
2378
查看次数

我们可以将C#dll反编译为VB.NET吗?

我在C#.net中开发了一个dll.我们可以在VB.net中反编译相同的内容.如果是的话,怎么做?

c# vb.net decompiling

1
推荐指数
1
解决办法
4416
查看次数

反编译后无法在.class文件中看到Super()

 class p {
     p(){
         System.out.println("1");
     }
 }
class Student extends p{  
    Student() {
        super();
        System.out.println("2");
    }

    public static void main(String[] args) {
        Student s =  new Student();
    }
}
Run Code Online (Sandbox Code Playgroud)

因为我已经明确地提供了super(),但在使用jd-gui进行反编译之后,我无法看到我放置的super(),因为super()应该由编译器本身提供.我只是想看看这个,super关键字和其他东西是由编译器隐式提供的.我用Google搜索并发现.class文件我可以用jd-gui看到,但是我无法看到super()和this(),有没有其他相同的方法? 图片

java decompiling .class-file

1
推荐指数
1
解决办法
319
查看次数

获取 jar 的所有导入类

对于给定的 jar,我想找出该 jar 使用的所有类(尽可能)。由于我有很多罐子,我想自动化这个过程。到目前为止我最好的想法是

  1. 反编译jar(我没有这方面的经验,但应该有命令行工具)。
  2. 查找导入并解析它们。

但我希望其他人以前做过类似的事情并给我建议。

java decompiling jar

1
推荐指数
1
解决办法
1871
查看次数

什么只是调用 .getClass(); 做?

我正在查看一些反编译代码并看到.getClass();没有对其返回值进行任何处理。

  public String forLocale(Locale locale, String keyword) {
    Stream var10000 = getLocaleMappingList(locale, this.getSupportedLocales());
    Map var10001 = this.translations;
    var10001.getClass();
    Map<String, String> translation = (Map)var10000.map(var10001::get).filter((m) -> {
      return m.containsKey(keyword);
    }).findFirst().orElse(this.translations.get(FALLBACK));
    Preconditions.checkState(translation.containsKey(keyword), keyword + " is not a valid translation key");
    return (String)translation.get(keyword);
  }
Run Code Online (Sandbox Code Playgroud)

那是做什么用的?原来的代码是这样的吗?(到目前为止,我还没有看到反编译代码的实例至少在行方面与源代码匹配。)

这有点像一个断言,但是通过这样做而不是让事情出错,可以实现var10001::get什么?或者更多的是关于性能?


更新

这是字节码。很酷的事情来学习如何做!

 // access flags 0x1
  public forLocale(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String;
   L0
    LINENUMBER 184 L0
    ALOAD 1
    ALOAD 0
    INVOKEVIRTUAL com/spotify/i18n/Translations.getSupportedLocales ()Ljava/util/Set;
    INVOKESTATIC com/spotify/i18n/Translations.getLocaleMappingList (Ljava/util/Locale;Ljava/util/Collection;)Ljava/util/stream/Stream;
    ALOAD 0
    GETFIELD com/spotify/i18n/Translations.translations : Ljava/util/Map;
    DUP …
Run Code Online (Sandbox Code Playgroud)

java decompiling idioms jvm-bytecode

1
推荐指数
1
解决办法
85
查看次数

如何反汇编单个文件 .NET exe,或从中提取 .dll?

我有一些使用单文件选项构建的 .NET exes(https://learn.microsoft.com/en-us/dotnet/core/deploying/single-file),我需要对它们使用反汇编程序,但是任何反汇编工具(例如 dnspy、ilspy、ildasm 等)都无法工作,因为它们实际上是嵌入了 .NET 程序集的本机二进制文件,如 Microsoft 文档中所述。

例如,在这些二进制输出上尝试 ildasmerror: 'example.exe' has no valid CLR header and cannot be disassembled

如何从这些单文件 exe 中提取 .NET dll 以便反汇编它们?或者还有其他方法来反汇编这些 .NET 单文件 exe 吗?

.net c# decompiling disassembly visual-studio

1
推荐指数
1
解决办法
3533
查看次数

Decompiler输出中的无法访问的语句

我反编译了一个APK文件,然后尝试编译它并收到一个"无法访问的语句"编译器错误,我想知道它是一个混淆器技巧,还是反编译失败?这怎么可能?使用 dex2jarJava Decompiler

这是反编译的方法

public void onSensorChanged(SensorEvent paramSensorEvent) {
    float[] arrayOfFloat = paramSensorEvent.values;
    switch (paramSensorEvent.sensor.getType())
    {
    }
    do
    {
        return;
    } while (this.aDegree == arrayOfFloat[0]);
    this.aDegree = arrayOfFloat[0];
    invalidate();
}
Run Code Online (Sandbox Code Playgroud)

java android decompiling dex2jar

0
推荐指数
1
解决办法
222
查看次数

有没有办法反编译grails/groovy jar文件?

我有一个groovy/grails jar文件.我想将它反编译成groovy文件.有没有工具可以做到这一点.我已经尝试了一些在线decopilers,他们都将文件解压缩到java而不是groovy.我使用gradle jar命令创建了jar .我使用的是grails版本3.1.11和groovy版本:2.4.7gradle版本:2.13

grails groovy decompiling jar gradle

0
推荐指数
1
解决办法
1045
查看次数

Kotlin Decompiler生成错误的代码 - 是否可以防止?

class CheckInventory(target: Target) : Command(target) {

}
Run Code Online (Sandbox Code Playgroud)

使用IntelliJ的" 显示Kotlin字节码 "选项反编译上述Kotlin代码时,它会在super()调用之上生成一个语句:

class CheckInventory extends Command {
    public CheckInventory(Target target) {
        Intrinsic.checkParameterIsNotNull(target, "target");
        super(target); //error, must be first call
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一些其他问题,例如使用WhenMapping生成具有访问修饰符的顶级类:

public class MyClass {

}

public final class MyClass$WhenMappings { //error, shouldn't be public

}
Run Code Online (Sandbox Code Playgroud)

我检查了Kotlin和IntelliJ更新,我正在使用最新版本.

起初我认为它可能与写得不好的Kotlin代码有关,但即使是最简单的代码文件似乎也需要某种在Java中非法的检查/生成.

有没有办法确保反编译过程保持在Java语言规则的范围内?

java decompiling bytecode intellij-idea kotlin

0
推荐指数
1
解决办法
1130
查看次数