繁体   English   中英

拦截对javax.crypto的调用

[英]intercept calls to javax.crypto

我想签出某些混淆的Java应用程序。 代码很难被混淆,但足以使执行流程难以进行。 由于我只对查看要发送的数据类型感兴趣,因此我也认为完全对应用程序进行反向工程有点过大。

我启动了wireshark调试流量,并将其连接到服务器,获取了二进制二进制文件,似乎进行了一些握手,然后对查询进行了完全加密。 通过检查反编译的代码,我知道他正在使用rsa,河豚和“ sha1andrsa”签名来签名某些东西。 这使我相信它正在使用rsa,并将它从服务器(二进制二进制文件)获取的密钥用于交换河豚密钥并从那里进行处理。 这实际上使得仅通过嗅探就无法检查流量。

我想做一个代理dll的Java类比,我想拦截对javax.crypto.cipher的所有调用,并查看它尝试使用哪些密钥加密的数据类型。 我还想提供自己的河豚密钥,以便我可以读取流量(假设握手后的所有流量仅是经过加密的河豚)。

我不能简单地重新编译javax.crypto.cipher,因为这不是通过jdk在src.zip中提供的。 我没有找到太多关于我要执行的操作的文档,这使我相信这不是解决此问题的正确/最佳方法。 或者,是否存在某种能够拦截这些调用的动态Java调试器?

编辑:我去了拱门,下载了openjdk,提取并修改了所需的文件,重新编译并将其放在经过修改的目录中。 然后,我在参数中添加了-Xbootclasspath / p:./ modded -verbose:class,我注意到修改后的类不是从/ modded加载的,而是从标准库加载的。 这是错误吗?

因此,基于有用的评论,我设法弄清楚了。

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

尽管最佳实践是将-Xbootclasspath与包含已修改文件的目录一起使用,但它根本不起作用(或者太含糊,无法找出原因)。 但是,在隐藏的jre / lib目录中的某个位置有jce.jar包含javax.crypto。 您应该解压缩jar,替换已编译的类文件并重新压缩所有内容。 终于可以了:D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM