通常,我正在使用固件和本机代码可执行文件,对诸如常量,跳转条件之类的小东西进行修补。在那里,我使用IDA的反汇编来分析修补的内容和位置。从诸如jd-gui之类的工具中反编译的代码,用于分析补丁内容。但是实际上要进行任何更改,我都需要在反编译的代码和字节码之间建立一个连接。

评论

我可能不明白您的要求,但是您不是在寻找JBE或Krakatau吗?还有这个和这个。

@DominikAntal您给我的最后一个链接说明了我想知道的内容。将此作为您的答案。

#1 楼


使用JD-GUI检查jar文件
解压缩jar文件


jar -xf yourapp.jar

修改.class使用Java字节码编辑器的文件

使用Java字节码编辑器(JBE)


将修改后的类重新打包到新的存档文件中





向Khai Tran @ NetSPI提供此特定解决方案的积分

评论


JBE有Linux替代品吗?

– JSmyth
15年5月30日在12:51

不确定,请查看这些工具。

–多米尼克·安塔尔(Dominik Antal)
15年5月30日在21:38

#2 楼

对于修补,通常最好在字节码级别上进行更改,因为反编译和编译都是有损操作,而字节码修补将始终有效,即使对于高度混淆的应用程序也是如此。您可以使用许多工具。

要理解源代码和字节码之间的联系,这只是一个实践问题。我建议从阅读JVM规范开始。然后编译一些简单的Java示例,并查看生成的字节码。幸运的是,Java RE比本机代码要简单得多,因此您具有丰富的经验,学习起来应该不难。