拦截对javax.crypto的调用

时间:2013-12-19 10:26:57

标签: java debugging encryption reverse-engineering deobfuscation

我想查看一些混淆的java应用程序。代码很难混淆,但足以让执行流程有困难。由于我只想看看它试图发送什么样的数据,我也认为尝试对应用程序进行完全逆向工程有点过头了。

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

我想对代理dll进行java类比,我想拦截所有对javax.crypto.cipher 的调用,看看它尝试用什么键加密的数据类型。我也想提供我自己的河豚钥匙,以便我可以读取流量(假设握手后的所有流量只加上河豚加密)。

我不能简单地重新编译javax.crypto.cipher,因为这不是在src.zip中使用jdk提供的。我没有找到关于我正在尝试做什么的大量文档,这使我相信这不是正确/最好的方法。是否有某种动态java调试器能够拦截这些调用?

修改 我继续使用arch,下载openjdk,提取并修改了所需的文件,重新编译并将它们放在一个modded目录中。 然后我在参数中添加了-Xbootclasspath / p:./ modded -verbose:class,我注意到我的修改后的类没有从/ modded加载,而是从标准库加载。这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

所以,基于有用的评论,我设法弄明白了。

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

虽然最佳做法是将-Xbootclasspath与修改后的文件一起使用,但它根本不起作用(或者说太难以理解)。但是,jce.jar在隐藏的jre / lib目录中的某处包含javax.crypto。 你应该解压缩jar,替换已编译的类文件并重新压缩所有内容。这最终有效:D