我已经在互联网上扫描了各种相关问题(比如http://www.java-decompiler.com/),特别是SO.到目前为止,我只能找到两个声称是最新的Java反编译器--JD-GUI和DJ Java Decompiler.
所有其余的都无法下载或停止使用.
因此,我使用包含AspectJ weaven代码的.class文件,并使用两个可用的反编译器对其进行反编译.观察结果:
JD-GUI:

DJ Java Decompiler:

正如您所看到的,这两个工具都无法使用AspectJ反编译Java代码.
现在我不是太挑剔,我只是习惯了.NET Reflector并在Java反编译器中寻找相同的质量,无论是独立的还是Eclipse插件,免费或商业.
我正在寻找一个实际可行的,并且使用方便.
对我的问题的回答的总体趋势是这样的 - "嗯,你想要什么?虽然,AspectJ创建有效的JVM字节码,但这个字节码不能被翻译成有效的Java".我只能说我不赞成这种观点.
让我向您介绍更多背景信息,我希望您同意这些工具可以而且应该做得更好.
反编译的Java类使用以下方面是weaven:
public abstract aspect LoggingAspect {
declare parents: (@LogMe *) implements ILoggable;
public Logger ILoggable.getLogger() {
LoggerHolderAspect holder = LoggerHolderAspect.aspectOf(this.getClass());
return holder.getLogger();
}
abstract pointcut loggedMethods();
before(ILoggable o): loggedMethods() && this(o) {
logBefore(o.getLogger(), thisJoinPoint);
}
after(ILoggable o) returning (Object result): loggedMethods() && this(o) {
logAfterReturning(o.getLogger(), thisJoinPoint, result);
}
after(ILoggable o) throwing (Exception e): …Run Code Online (Sandbox Code Playgroud) 我用的是VS2012.
我知道如何使用.NET Reflector调试第三方代码并始终使用它.
我想知道是否可以使用JetBrains的dotPeek或没有dotPeek的R#本身.我能够导航到反编译的第三方代码,但不能单步执行它.
有任何想法吗?
我为政府承包商工作,他们非常挑剔在他们的机器上安装什么软件(美国政府法律).作为逆向工程工作的一部分,我需要弄清楚某些.class文件集的作用.反编译器会非常有用,但我似乎找不到符合此处设置标准的反编译器.基本上,我需要找到一个在美国开发的反编译器.有人知道吗?免费是首选,但商业将做.
我对汇编语言非常感兴趣,我想了解exe文件如何运行dll如何运行等等...我有一个编写应用程序来反编译exe汇编代码的想法,因为我不是一个非常好的汇编程序员和由于缺乏对exe内部工作的了解,我无法做到.因为我可以读取十六进制的exe,我认为这不是不可能,但我不知道如何编写我自己的程序.任何资源或任何帮助将不胜感激.
许多IDE的调试器与物理线路编号匹配.我正在寻找java反编译器,在反编译代码中保存实际行号.
我对您可以采取的预防措施感兴趣,以使逆向工程C共享库变得更加困难
似乎不可能完全阻止,但你可以采取可能需要更长时间的步骤,因此不那么有吸引力/成本更高
代码混淆,编译器优化选项编译器调试标志等等(我会特别感兴趣的是gcc编译器)
对于以$或工时等方式逆向工程~5KLOC C共享库(.so大小~200kb)的相对难度的任何想法也感兴趣.
哪种解决方案更好?使用nullable lambda或传递空lambda作为默认参数?kotlin会以某种方式优化空的lambda吗?或者创建什么都不做的新实例?
class Test1(val action: () -> Unit = {})
不幸的是我不明白生成的字节码.让我们分析一下
val test11 = Test1()
反编译后给我们
private static final Test1 test11 = new Test1((Function0)null, 1, (DefaultConstructorMarker)null);
最后作为一个lambda传递这样的东西
var1 = (Function0)null.INSTANCE;
编辑:隐藏的问题是:Kotlin如何将空lambda视为默认值?
我想看看iOS应用程序的代码.
我下载的应用程序是.deb.
第一个问题:是否可以在iOS上安装.deb文件或者我下载了错误的文件?
解压缩.deb文件后,我得到了一些文件,包括.nib,.storyboard和其他一些文件.
我的主要问题是,如何反编译这些.nib文件?
我试图使用NibToXibConverter反编译这些文件,但我没有成功.
我丢失了可执行文件的源代码,但仍有实际文件。有没有办法检索原始的C++代码?
decompiling ×10
java ×3
assembly ×1
c ×1
c# ×1
c++ ×1
deb ×1
debugging ×1
dll ×1
exe ×1
executable ×1
ios ×1
jvm-bytecode ×1
kotlin ×1
lambda ×1
line-numbers ×1
obfuscation ×1
resharper ×1
vb.net ×1