java class文件批量反编译 末蓝、 2022-05-12 09:56 209阅读 0赞 # java class文件批量反编译 # 需要先下载最新版本的jad文件。[https://varaneckas.com/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.exe`和`jad.py`放到`path`环境中,跳到WEB-INF目录下,执行`jad.py`,会输出src的源文件目录。 [https_varaneckas.com_jad]: https://varaneckas.com/jad/
还没有评论,来说两句吧...