java class文件批量反编译

1 篇文章 0 订阅
1 篇文章 0 订阅

java class文件批量反编译

需要先下载最新版本的jad文件。https://varaneckas.com/jad/

jad -o -r -sjava -dsrc ‘tree/*/.class’

由于jad反编译在多层目录结构下无法很好的处理,下面用脚本调用jad实现整个目录的反编译

import os
import sys
from os.path import join
import subprocess


def run_command(cmd):
    proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=os.environ)

    try:
        outs, errs = proc.communicate(timeout=15)
        # print("outs %r %r" % (outs, proc))
    except Exception:
        proc.kill()
        outs, errs = proc.communicate()
    if errs is not None and len(errs) > 0:
        print("cmd %r, errs %r" % (cmd, errs))
    if errs is None or len(errs) == 0:
        return outs.decode()
    return errs

print("__name__ %r" % (__name__))
if __name__ == '__main__':
    frmdir = "classes"
    todir = "src"
    if len(sys.argv) >= 3:
        frmdir = sys.argv[1]
        todir = sys.argv[2]

    print("run %r frm %s to %s" % (sys.argv, frmdir, todir))

    for root, dirs, files in os.walk(frmdir):
        for f in files:

            if f.endswith('.class'):
                clsfile = join(root, f)
                tofile = clsfile.replace(frmdir, todir)
                tofile = tofile.replace(".class", ".java")
                tofiledir = os.path.dirname(tofile)
                if not os.path.isdir(tofiledir):
                    # print("mkdir %s" % tofiledir)
                    run_command("mkdir %s" % tofiledir)
                run_command("jad -o -p %s > %s" % (clsfile, tofile))
                # print("gen file %s" % tofile)

jad.exejad.py放到path环境中,跳到WEB-INF目录下,执行jad.py,会输出src的源文件目录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值