Wener Notes

Java Awesome

约 3 分钟阅读
标签:资源精选
java
import net.roseboy.classfinal.JarDecryptor;
import net.roseboy.classfinal.util.EncryptUtils;
import net.roseboy.classfinal.util.StrUtils;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

public class DecryptClassFinal {
    public static void main(String[] args) throws IOException {
        String src =System.getProperty("user.dir") +  "/tmp/META-INF/.classes";
        String dst = System.getProperty("user.dir") + "/src/main/class";


        File srcDir = new File(src);
        JarDecryptor.getInstance();
        String pass = Files.readString(Path.of(src+"/org.springframework.config.Pass"));
        char[] password =  EncryptUtils.md5(pass.toCharArray());

        System.out.printf("src:%s\n", src);
        System.out.printf("dst:%s\n", dst);
        System.out.printf("password:%s\n", pass);

        if (srcDir.isDirectory()) {
            for (File file : srcDir.listFiles()) {
                String fp = file.getName();
                if (fp.startsWith("org.springframework")) {
                    continue;
                }

                byte[] fileBytes = Files.readAllBytes(file.toPath());
                byte[] out = dec(password, fp, fileBytes);

                String[] split = fp.split("[.]");
                String fn = split[split.length-1];

                String p = dst+"/"+ fp.substring(0, fp.lastIndexOf('.')).replaceAll("[.]", "/");
                new File(p).mkdirs();
                String f = p+"/"+ fn +".class";

                System.out.println("Write to: "+f+" Len:"+out.length);
                Files.write(new File(f).toPath(), out);
            }
        }

    }

    public static byte[] dec(char[] password, String fileName, byte[] bytes){
        char[] pass;
        pass = StrUtils.merger(new char[][]{password, fileName.toCharArray()});
        return  EncryptUtils.de(bytes, pass, 1);
    }
}
bash
java -cp ~/Applications/IntelliJ\ IDEA\ Ultimate.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar \
  org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler \
  -dgs=true \
  src/main/class/ src/main/java/

JDK

如何选择 JDK 和 版本?

Languages

  • kotlin
  • graalvm
  • javacc笔记JavaCCJavaCC - The Java Parser Generator · javacc/javacc · 默认 LL(1) 可 LL(k) · - · 生成的代码没有运行时依赖 · grammar repository打开:/notes/languages/parser/javacc
  • antlr

效率

  • lombok

Frameworks

整合

Database

IoC

Library

Tool Chain

  • maven笔记MavenMaven 包类型 · pom - Project Object Model · jar - Java Application Archive · ear - Enterprise Application Archive · war - Web Application Archive打开:/notes/java/build/maven
  • gradle笔记GradleUserguide · Building Java 9 Modules · maven 2 gradle · 转换 dependency · https://gradle.org/releases/ · gradle.properties · | env | default | for |打开:/notes/java/build/gradle
  • jib笔记jibGoogleContainerTools/jib · tar · docker 要先 load 才能 push · crane 可以直接 push · credential helpers · $XDGRUNTIMEDIR/containers/auth.json打开:/notes/java/build/jib

Learn

GUI

Misc

Spec

Debugging

Template

QA

关联信息

反向链接、本文链接的其他页面和外部资料。

站内链接

  • Gradle
    笔记 · gradle

    Userguide · Building Java 9 Modules · maven 2 gradle · 转换 dependency · https://gradle.org/releases/ · gradle.properties · | env | default | for |

  • Guice
    笔记 · guice

    google/guice

  • JavaCC
    笔记 · javacc

    JavaCC - The Java Parser Generator · javacc/javacc · 默认 LL(1) 可 LL(k) · - · 生成的代码没有运行时依赖 · grammar repository

  • jib
    笔记 · jib

    GoogleContainerTools/jib · tar · docker 要先 load 才能 push · crane 可以直接 push · credential helpers · $XDGRUNTIMEDIR/containers/auth.json

  • Maven
    笔记 · maven

    Maven 包类型 · pom - Project Object Model · jar - Java Application Archive · ear - Enterprise Application Archive · war - Web Application Archive

  • Spring Doc
    笔记 · springdoc

    springdoc/springdoc-openapi · OpenAPI 3 · JSR-303 · SpringBoot v1,v2,v3 · 支持 GraalVM · 支持 Javadoc, Groovy, Kotlin · Javadoc dnault/therapi-runtime-javadoc

References

GitHub32 条
其他外链9 条
最近更新commit 403505aEdit

On this page