1

我想查看某个模糊的java应用程序。代码混淆不清,但足以在执行流程后遇到困难。由于我只想看看它想要发送什么样的数据,我还认为尝试完全逆向工程应用程序有点矫枉过正。拦截对javax.crypto的调用

我启动wireshark调试流量,它连接到服务器,获取二进制blob,似乎做了一些握手,然后做一些查询完全加密。 通过检查反编译的代码,我知道他使用rsa,blowfish和“sha1andrsa”签名来签署一些事情。这使我相信它使用rsa和它从服务器获得的密钥(二进制块)来交换河豚密钥并从那里继续。 这使得通过单纯的嗅探来检查交通几乎是不可能的。

我想做一个代理dll的java比喻,我想拦截所有调用javax.crypto.cipher,看看它试图使用什么密钥加密哪种数据。我还想提供我自己的河豚密钥,以便我可以读取流量(假设所有握手后的流量都是只有河豚加密的)。

我不能简单地重新编译javax.crypto.cipher,因为这不是在带有jdk的src.zip中提供的。我还没有找到关于我想要做什么的大量文档,导致我认为这不是解决这个问题的最佳方式。是否还有某种能够拦截这些调用的动态java调试器?

编辑: 我去拱,下载OpenJDK的,提取并修改了需要的文件,重新编译,并把他们安置在改装成一个目录。 然后我添加了-Xbootclasspath/p:./ modded -verbose:class到参数,我注意到我的修改后的类没有从/ modded加载,而是从标准库中加载。这是一个错误?

回答

0

因此,根据我设法弄明白的有用评论。

由jdk给出的src.zip不完整,如果它不包含需要修改的类,请尝试使用openjdk。

尽管最好的做法是将-Xbootclasspath与目录一起使用修改后的文件,但它不起作用(或者太过于隐晦)。但是,jce.jar包含javax.crypto,它位于隐藏的jre/lib目录中。 您应该解压缩jar文件,替换已编译的类文件并重新解压缩所有内容。这终于奏效:D