我在MSMobiles.com博客上发现了这篇帖子,其中包括以下内容:
.Net在很多方面都很棒,但对于商业应用呢?没门!任何人都可以查看您的源代码.高端混淆器可以提供很多帮助,但任何坚定的黑客都会在不到一天的时间内修复您的代码.尽管花费1000美元用于反盗版和混淆工具,但我从悲伤的经历中知道这一点.
然后说明如何在.NET中开发商业Windows Mobile应用程序:
准备好延迟1天,之后您的竞争对手将复制您的功能,并在Skymarket中使用相同的功能放置自己的应用程序
对于那些熟悉.NET的人:这是真话还是废话?这个问题是否以某种方式特定于Windows Mobile,还是适用于Windows上的.NET?这对我来说似乎很令人惊讶,因为我知道微软在.NET中编写了大量自己的客户端软件(许多供应商用Java编写昂贵的应用程序,显然存在相同的问题),而且他们看起来很奇怪IP可能很容易被窃取.
查看一些oragnizations为混淆Java字节码以避免其他人反编译并从代码中提取秘密信息所做的努力,同时考虑到这种做法的局限性:
使用非对称加密来解决这个问题是否可行?我的意思是,Oracle不可能为JVM配备一个证书和一个能够使用该证书的私钥解密加密类文件的ClassLoader吗?
当然,这些类将使用此"唯一oracle证书"的公钥进行加密.
私钥将在JVM中.
我想也许在数学上可能无法在JVM内部保护这个私钥(依次对它进行加密......),并且它最终会被黑客攻击......这是不是这样的?
我在C#.net中开发了一个dll.我们可以在VB.net中反编译相同的内容.如果是的话,怎么做?
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(),有没有其他相同的方法?
对于给定的 jar,我想找出该 jar 使用的所有类(尽可能)。由于我有很多罐子,我想自动化这个过程。到目前为止我最好的想法是
但我希望其他人以前做过类似的事情并给我建议。
我正在查看一些反编译代码并看到.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) 我有一些使用单文件选项构建的 .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 吗?
我反编译了一个APK文件,然后尝试编译它并收到一个"无法访问的语句"编译器错误,我想知道它是一个混淆器技巧,还是反编译失败?这怎么可能?使用 dex2jar 和 Java 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) 我有一个groovy/grails jar文件.我想将它反编译成groovy文件.有没有工具可以做到这一点.我已经尝试了一些在线decopilers,他们都将文件解压缩到java而不是groovy.我使用gradle jar命令创建了jar .我使用的是grails版本3.1.11和groovy版本:2.4.7和gradle版本:2.13
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语言规则的范围内?
decompiling ×10
java ×6
.net ×2
c# ×2
disassembly ×2
jar ×2
.class-file ×1
android ×1
bytecode ×1
cryptography ×1
dex2jar ×1
gradle ×1
grails ×1
groovy ×1
idioms ×1
jvm ×1
jvm-bytecode ×1
kotlin ×1
obfuscation ×1
vb.net ×1