ARTistGUI主要流程分析

本文详细分析了ARTistGUI的主要流程,涉及的关键步骤包括删除原有oat文件、合并代码库、备份合并后的APK、运行dex2oat编译生成新oat文件以及设置oat文件权限。整个过程在InstrumentationTask.java中实现,具体实现在InstrumentationStagesImpl.java的五个主要函数中。通过这些步骤,ARTistGUI实现了对APK的修改和编译,以实现特定的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过应用层分析,ARTistGUI的主要处理函数在/ArtistGui/app/src/main/java/saarland/cispa/artist/artistgui/instrumentation/InstrumentationTask.java中,代码如下:

    @Override
    public void run() {
        Log.i(TAG, "Run() compiling and starting " + mRunConfig.app_package_name);
        Log.i(TAG, "> apkPath:     " + mRunConfig.app_apk_file_path);
        Log.i(TAG, "> codeLibName: " + mRunConfig.codeLibName);
        Log.i(TAG, "> Keystore:    " + mRunConfig.keystore);

        try {
            ArtistThread.checkThreadCancellation();
            prepareReporter();

            reportProgress(10, "Preparing build environment");
            String pathDex2oat = mInstrumenationStages.prepareEnvironment();

            ArtistThread.checkThreadCancellation();
            mInstrumenationStages.probePermissionAndDeleteOatFile();

            ArtistThread.checkThreadCancellation();
            reportProgress(40, "Merging CodeLib");
            mInstrumenationStages.mergeCodeLib();
            ArtistThread.checkThreadCancellation();
            mInstrumenationStages.backupMergedApk();

            ArtistThread.checkThreadCancellation();
            reportProgress(50, "Compiling: " + mRunConfig.app_package_name);
            mInstrumenationStages.runDex2OatCompilation(pathDex2oat);

            ArtistThread.checkThreadCancellation();
            reportProgress(90, "Compilation done, setting file permissions");
            mInstrumenationStages.setOatFilePermissions();
        } catch (InstrumentationException | ArtistInterruptedException e) {
            reportResult(false);
            return;
        }
        reportResult(true);
    }

其中主要的函数为:

  • mInstrumenationStages.probePermissionAndDeleteOatFile();
  • mInstrumenationStages.mergeCodeLib();
  • mInstrumenationStages.backupMergedApk();
  • mInstrumenationStages.runDex2OatCompilation(pathDex2oat);
  • mInstrumenationStages.setOatFilePermissions();

这五个函数位于/ArtistGui/app/src/main/java/saarland/cispa/artist/artistgui/instrumentation/stages/InstrumentationStagesImpl.java,主要完成了对APK文件的处理,先看probePermissionAndDeleteOatFile:

    public void probePermissionAndDeleteOatFile() {
        reportProgressDetails("Probing oat file permissions: " + mRunConfig
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值