`
yynwpf
  • 浏览: 10202 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

gui反编译后的源文件格式修改

阅读更多
package com.tcms.order.test;
 
import java.io.File;
import java.io.IOException;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
 
 
public class RemoveContentUtil
{
    private static String regex = "\\/\\*[\\p{ASCII}]*?\\*\\/\\s?";
    //反编译后的java文件目录
    private static String directory = "D:\\software\\cores";
    private static String newDirectory = "";
     
     
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException
    {
        start();
    }
     
    public static void start() throws IOException{
      
        File folder = new File(directory);
        directory = folder.getCanonicalPath();
         
        File parentFolder = folder.getParentFile();
        newDirectory = parentFolder.getCanonicalPath() + "\\" + folder.getName() + System.currentTimeMillis() + "\\";
        File[] files = folder.listFiles();
        loopFile(files);
    }
     
    public static void loopFile(File[] files) throws IOException{
        if(files == null){
            return;
        }
         
        for(File f : files){
            if(f.isFile()){
                if(f.getName().endsWith(".java")){
                    removeContent(directory, newDirectory, f, true);
                }else{
                    removeContent(directory, newDirectory, f, false);
                }
            }else{
                loopFile(f.listFiles());
            }
        }
    }
     
    public static void removeContent(String oldDir, String newDir, File file, boolean remove) throws IOException{
        List<String> lines = FileUtils.readLines(file);
        String relocationString = relocationLineNumber(lines);
        String newContent = remove ? relocationString.replaceAll(regex, "") : relocationString;
        File newFile = new File(file.getCanonicalPath().replace(oldDir, newDir));
        FileUtils.writeStringToFile(newFile, newContent);
    }
     
    public static String relocationLineNumber(List<String> lines){
        int currentLine = 0;
        StringBuilder content = new StringBuilder();
        for(String line : lines){
            currentLine++;
            int num = readLineNumber(line);
            if(num != -1){
                while(currentLine < num){
                    currentLine++;
                    content.append(IOUtils.LINE_SEPARATOR);
                }
            }
            content.append(line).append(IOUtils.LINE_SEPARATOR);
        }
        //IOUtils.LINE_SEPARATOR;
        return content.toString();
    }
     
    private static int readLineNumber(String line){
        int start = line.indexOf("/*");
        int end = line.indexOf("*/");
        if(start > -1 && end > start){
            //check is annotation
            String left = line.substring(end + 2).trim();
            if(left.startsWith("@")){
                return -1;
            }
             
            String linNum = line.substring(start + 2, end).trim();
            try{
                return Integer.parseInt(linNum);
            }catch(NumberFormatException e){
                return -1;
            }
        }
        return -1;
    }
 
}

 

分享到:
评论

相关推荐

    格式化jd-gui反编译源码的行号,便于debug调试

    需要通过jd-gui反编译的代码保存为zip文件。该工具可以把通过制定文件夹把文件夹里的反编译zip文件转换到制定的输出的文件夹里。在debug的时候就可以关联到转换后的反编译源码。 包含两部分: 1. checkLineNumber....

    jd-gui反编译后注释清除工具

    清除jd-gui反编译后注释的工具 图形界面操作方便,在java环境下双击jd-gui-cleaner.jar运行后,先点input,选择源文件文件夹,再点output,选择输出文件文件夹,最后点start运行,运行后会将所有源文件夹中的文件...

    jd-gui-cleaner清除jd-gui反编译后注释的工具v1.3.2

    jd-gui-cleaner 清除jd-gui反编译后注释的工具图形界面,操作方便在java环境下双击运行运行后,先点input,选择源文件文件夹,再点output,选择输出文件文件夹,最后点start运行。运行后会将所有源文件夹中的文件...

    jd-gui反编译class文件

    JD-GUI的工作原理基于反编译技术,它解析Java字节码并将其转换回接近原始的.java源代码形式。尽管这个过程可能会丢失一些注释和原始的变量命名,但大多数代码结构和功能逻辑可以被准确地恢复。 使用JD-GUI的步骤...

    jd-gui-cleaner清除jd-gui反编译后注释的工具

    清除jd-gui反编译后注释的工具 图形界面,操作方便 在java环境下双击运行 运行后,先点input,选择源文件文件夹,再点output,选择输出文件文件夹,最后点start运行。 运行后会将所有源文件夹中的文件处理后保存到...

    java反编译GUI

    JAD不仅可以反编译类,还可以处理整个jar文件,并且支持导出反编译后的代码为Java源文件。 3. **FernFlower**:一个轻量级的Java反编译器,它具有命令行界面,但可以通过集成到IDE(如Eclipse或IntelliJ IDEA)来...

    jadx-gui 反编译工具

    4. 一旦APK被加载,jadx-gui会解析其内容,并显示反编译后的源代码。你可以浏览类、方法、变量等,就像它们是原始的Java源文件一样。 **标签详解:** - **反编译**:反编译是指将二进制代码(如 Dalvik 字节码)...

    apk反编译源文件

    "apk反编译源文件"这个主题涉及到将已编译的APK文件转换回其原始的源代码形式,以便于分析、调试或修改。这通常在逆向工程、安全审计或者二次开发的情景中被使用。 首先,我们要理解“反编译”的概念。反编译是将已...

    java反编译(将class文件反向编译成java源文件)

    2. **JD-GUI**:这是JAD的一个图形界面版本,可以直接打开.jar或.class文件,并展示反编译后的源代码。它非常适合快速查看和理解已编译的代码。 3. **Procyon**:另一个开源的Java反编译器,它不仅支持反编译,还...

    java反编译工具以及去掉注释工具

    清除jd-gui反编译后注释的工具 图形界面,操作方便 在java环境下双击运行 运行后,先点input,选择源文件文件夹,再点output,选择输出文件文件夹,最后点start运行。 运行后会将所有源文件夹中的文件处理后保存到...

    自动将class文件反编译为源文件.

    标题提到的“自动将class文件反编译为源文件”是一个非常实用的功能,尤其对于那些没有源码但需要调试或学习已有二进制库的开发者来说。本插件就是针对这种情况设计的,它集成于Eclipse这种广泛使用的Java集成开发...

    jd-gui反编译

    这是一个好用的java class反编译工具,可以把java 字节码文件反编译成为java源文件。是一个图形界面工具

    myeclipse将class反编译成java源文件

    在IT行业中,有时候我们需要查看或修改已编译的Class文件,这时就需要用到反编译工具。本主题聚焦于如何在MyEclipse环境下将Class文件反编译为Java源代码,以便理解或修复已有的代码。MyEclipse是Eclipse的一个扩展...

    反编译工具jadx-gui

    **反编译工具jadx-gui** 在移动应用开发领域,了解APK文件内部结构和代码逻辑有时至关重要,无论是为了学习、调试还是安全分析。此时,反编译工具就派上了用场。其中,jadx-gui是一款广受欢迎的开源反编译器,尤其...

    jad 反编译插件 自动反编译 不用关联源文件便可看源码

    jad并不是唯一的Java反编译工具,还有如FernFlower, Procyon, JD-GUI等。它们各有优缺点,jad通常被认为在可读性和易用性上表现较好,但可能在复杂代码的处理上不如其他工具。 总之,jad反编译插件是Java开发者的...

    lua编译&反编译,lua反编译工具,Java

    2. **LuacGUI.exe**: 这是一个图形用户界面(GUI)版本的反编译工具,允许用户直观地查看和反编译Lua字节码。通过提供一个友好的界面,它简化了字节码分析的过程。 3. **luac.exe反编译**: 有时,人们会直接使用`...

    jar反编译javaeclipse

    当需要查看或修改jar文件内部的源代码时,就需要进行jar反编译。本篇文章将详细介绍如何进行jar反编译,以及使用Eclipse等工具进行相关操作。 首先,了解jar文件的基本结构。一个jar文件本质上是一个ZIP格式的压缩...

    class文件反编译

    4. **查看反编译结果**:一旦加载成功,jd-gui会在窗口中显示反编译后的源代码。你可以浏览、搜索代码,甚至复制和保存这部分代码。 值得注意的是,反编译的结果并不总是与原始的.java源代码完全一致,因为编译过程...

    最好用的反编译工具jad-gui

    jad-GUI是一款开源的Java反编译工具,它能够将Java字节码(.class)转换回接近源代码的格式,帮助开发者洞察程序的内部结构和工作原理。jad-GUI不仅限于单个类文件,还能处理整个.jar文件,这对于分析第三方库或者...

    u3d_apk反编译文件展示

    3. **JD-GUI**:可视化地查看反编译后的Java源代码,帮助理解Unity的Java层是如何与原生代码交互的。 通过反编译,开发者可以学习Unity打包机制,优化资源加载,分析性能瓶颈,甚至实现一些自定义功能。然而,这...

Global site tag (gtag.js) - Google Analytics