微慑信息网

偶遇JVMTI加密的jar解密测试

遇到一个java应用,正式版需要授权密码,想逆,看到目录下有一个****-
license.jar,习惯性打开jd-gui想看看源码,结果:
图片
查看了启动项参数:
图片
应该是JVMTI加密,IDA打开找到MyClassFileLoadHook
图片
 
图片

解密过程:

解密公式:decrypt_byte = encrypt_byte ^ 0x**(密钥)。

使用SSE指令优化大数据块处理,密钥扩展为0x********(128位)。

PYTHON脚本:

(1)单个class文件:

def decrypt_class_file(input_path, output_path):    with open(input_path, 'rb') as f:        encrypted_data = 
            f.read()
          
    # 逐字节XOR解密    decrypted_data = bytes(b ^ 0x42 for b in encrypted_data)
    with open(output_path, 'wb') as f:        
            f.write(decrypted_data)
          
# 示例:解密单个文件decrypt_class_file('
            encry.class'
          , '
            decry.class'
          )

(2)针对jar包:

import osimport zipfile
def decrypt_jar(input_jar, output_jar):    with 
            zipfile.ZipFile(input_jar,
           'r') as jar:        with 
            zipfile.ZipFile(output_jar,
           'w', 
            zipfile.ZIP_DEFLATED)
           as new_jar:            for file_info in 
            jar.infolist():
                          data = 
            jar.read(file_info.filename)
                          if 
            file_info.filename.startswith(
          'com/****/') and 
            file_info.filename.endswith(
          '.class'):                    # 解密                    data = bytes(b ^ 0x42 for b in data)                
            new_jar.writestr(file_info,
           data)
# 示例:解密整个JAR包decrypt_jar('
            encry.jar'
          , '
            decry.jar'
          )

处理后,使用jd-gui打开
decry.jar,已OK:

图片

 

 

赞(0) 打赏
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » 偶遇JVMTI加密的jar解密测试

微慑信息网 专注工匠精神

微慑信息网-VulSee.com-关注前沿安全态势,聚合网络安全漏洞信息,分享安全文档案例

访问我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册