JEB Decompiler中文网站 > 最新资讯 > JEB Decomplier编写前端
JEB Decomplier编写前端
发布时间:2024/09/29 18:40:17

JEB Decompiler 是一个功能强大的反编译工具,广泛用于逆向工程和调试闭源应用程序。编写前端界面时,可以利用JEB的模块化后端和功能强大的桌面平台UI前端来实现。具体来说,JEB提供了多种架构的反编译器,如DEX、X86、ARM、MIPS等,这些反编译器可以将字节码或本机代码反编译为伪C源代码。

 

在编写前端时,可以参考JEB的API,使用Python或Java进行高级和自动化的代码分析。此外,JEB还支持通过脚本和扩展来自动化复杂的任务。例如,可以使用Sublime Text 3的扩展来简化JEB脚本的编写过程。

JEB 前端也被称为“JEB 客户端”(或“JEB 第三方客户端”,与“官方 UI 桌面客户端”形成对比)。

 

JEB 后端 API 使编写新客户端(又称前端)变得轻而易举。客户端可以是:

 

  • 自动化客户端(用于测试、自动化管道)
  •  
  • 命令行客户端
  •  
  • 图形前端(例如官方 UI 桌面客户端)
  •  
  • ...

 

信息

 

并非所有 JEB 许可证都允许创建第三方客户端。通过在“关于”对话框中检查您的许可证信息来验证这一点。它应该显示any-client。通常,JEB Pro许可证允许执行第三方客户端。

高级指令

 

使用提供的源代码模板(见下文)作为客户端的基础。任何客户端都应采取的基本步骤如下:

 

请参阅我们简化的架构图,以更好地了解这些组件如何相互连接。

源模板

 

完整源代码:GitHub 上的命令行客户端框架

 

public class AutoClient {

 

static final ILogger logger = GlobalLog.getLogger(AutoClient.class);

 

static {

 

GlobalLog.addDestinationStream(System.out);

 

} 
 

// TODO: customize (should be replaced by the LicenseKey entry in your bin/jeb-client.cfg file)
    private static final String licenseKey = "...";

    // TODO: customize
    private static final String baseDir = "...";

    public static void main(String[] argv) throws Exception {
        if(argv.length <= 0) {
            return;
        }

        long t0 = System.currentTimeMillis();
        String location = argv[0];
        List files = AutoUtil.retrieveFiles(location);
        test(files);
        logger.info("Done in %ds", (System.currentTimeMillis() - t0) / 1000);
    }

    /**
     * Initialize a core. Create a context within that core. Then, for each input artifact, a
     * project is created and the artifact is loaded within that project.
     */
    public static void test(List files) throws Exception {
        // create or retrieve a core context (engines container)
        ICoreContext core = JebCoreService.getInstance(licenseKey);

        // create an engines context (project container)
        IFileDatabase projectdb = new JEB2FileDatabase(baseDir);
        IFileStore filestore = new SimpleFSFileStore(baseDir);
        BaseConfiguration cfg = new BaseConfiguration();

        // TODO: customize (alternative is to read your configuration from .cfg file)
        cfg.setProperty(".DevPluginClasspath", "...");

        // TODO: customize
        cfg.setProperty(".DevPluginClassnames", "...");

        IConfiguration config = new CommonsConfigurationWrapper(cfg);
        IDataProvider dataProvider = new DataProvider(null, projectdb, filestore, null, null, config);
        IEnginesContext engctx = core.createEnginesContext(dataProvider, null);

        int i = 0;
        for(File file: files) {
            i++;
            logger.info("Testing file %d/%d : %s ...", i, files.size(), file.getName());

            // create or load a project (artifact container)
            IRuntimeProject prj = engctx.loadProject("ProjectTest" + i);

            // process the artifact, get units
            ILiveArtifact art = prj.processArtifact(new Artifact(file.getName(), new FileInput(file)));

            // proceed with the units
            List units = art.getUnits();

            // TODO: CUSTOMIZE -- this is the important part
            // Basic tests go here
            // example:
            for(IUnit unit: units) {
                logger.info("Unit: %s", unit);
                //if(unit instanceof Xyz) {
                // ...
                //}
            }

            engctx.unloadProject(prj.getKey());
        }

        // close the engines
        JebCoreService.getInstance().closeEnginesContext(engctx);
    }
}

 

以上就是JEB Decomplier编写前端的相关内容。JEB的前端界面允许用户进行重构操作和脚本编写,从而实现对复杂应用程序的动态分析。通过这些功能,开发者可以更高效地进行逆向工程和调试工作。

读者也访问过这里:
135 2431 0251