广告
返回顶部
首页 > 资讯 > 精选 >unidbg-补环境访问文件及目录
  • 883
分享到

unidbg-补环境访问文件及目录

androidjava开发语言 2023-08-17 13:08:54 883人浏览 独家记忆
摘要

可以采用重定向 2.采用虚拟目录 前两个文件不用补 package com.file;import com.GitHub.unidbg.AndroidEmulator;import com.github.unidbg.Emulator;i

可以采用重定向
2.采用虚拟目录

在这里插入图片描述
前两个文件不用补

package com.file;import com.GitHub.unidbg.AndroidEmulator;import com.github.unidbg.Emulator;import com.github.unidbg.file.FileResult;import com.github.unidbg.file.ioResolver;import com.github.unidbg.linux.android.AndroidEmulatorBuilder;import com.github.unidbg.linux.android.AndroidResolver;import com.github.unidbg.linux.android.dvm.DalvikModule;import com.github.unidbg.linux.android.dvm.DvmClass;import com.github.unidbg.linux.android.dvm.VM;import com.github.unidbg.linux.file.SimpleFileIO;import com.github.unidbg.memory.Memory;import java.io.File;import java.io.IOException;public class FileDemo{    private final AndroidEmulator emulator;    private final DvmClass MainActivity;    private final VM vm;    public FileDemo() {        emulator = AndroidEmulatorBuilder                .for32Bit()                //虚拟目录                .setRootDir(new File("unidbg-android/src/test/resources/FileDemo/VFS"))                .build();        Memory memory = emulator.getMemory();        memory.setLibraryResolver(new AndroidResolver(23));        vm = emulator.createDalvikVM(new File("unidbg-android/src/test/resources/FileDemo/app-debug.apk"));        // 打开日志        vm.setVerbose(true);        // 在SO加载前添加文件重定位器        emulator.getSyscallHandler().addIOResolver(new MyIOResolver());        DalvikModule dm = vm.loadLibrary("fileinunidbg", true);        MainActivity = vm.resolveClass("com/example/fileinunidbg/MainActivity");        dm.callJNI_OnLoad(emulator);    }    public void destroy() throws IOException {        emulator.close();    }    public void call(String pathName) {        String methodSign = "stringFromJNI(Ljava/lang/String;)Ljava/lang/String;";        MainActivity.callStaticJniMethodObject(emulator, methodSign, pathName);    }    public static void main(String[] args) throws IOException {        FileDemo fileDemo = new FileDemo();        String arg = "/data/user/0/com.example.fileinunidbg/files";        fileDemo.call(arg);        // 运行结束后关闭        fileDemo.destroy();    }}
package com.file;import com.github.unidbg.Emulator;import com.github.unidbg.file.FileResult;import com.github.unidbg.file.IOResolver;import com.github.unidbg.linux.file.ByteArrayFileIO;import com.github.unidbg.linux.file.DirectoryFileIO;import com.github.unidbg.linux.file.SimpleFileIO;import java.io.File;import java.NIO.charset.StandardCharsets;public class MyIOResolver implements IOResolver {    @Override    public FileResult resolve(Emulator emulator, String pathname, int oflags) {        System.out.println("lilac open file:"+pathname);        if(pathname.equals("/data/user/0/com.example.fileinunidbg/files/key.txt")){            return FileResult.success(new SimpleFileIO(oflags, new File("unidbg-android/src/test/resources/FileDemo/key.txt"), pathname));//            return FileResult.success(new ByteArrayFileIO(oflags, pathname, String.valueOf(System.currentTimeMillis()).getBytes(StandardCharsets.UTF_8)));//            return null;//            return FileResult.failed(13);        }//        // 返回对应的文件夹(目录文件)//        if(pathname.equals("/data/user/0/com.example.fileinunidbg/files/demo2")){//            return FileResult.success(new DirectoryFileIO(oflags, pathname,new File("unidbg-android/src/test/resources/FileDemo/demo2")))//            return FileResult.success(new DirectoryFileIO(oflags, pathname, new DirectoryFileIO.DirectoryEntry(true, String.valueOf(System.currentTimeMillis())), new DirectoryFileIO.DirectoryEntry(true, "1234")));//        }//        if(pathname.equals("/data/user/0/com.example.fileinunidbg/files/demo2/1.txt")){//            return FileResult.success(new SimpleFileIO(oflags, new File("unidbg-android/src/test/resources/FileDemo/demo2/1.txt"), pathname));//        }//        if(pathname.equals("/data/user/0/com.example.fileinunidbg/files/demo2/2.txt")){//            return FileResult.success(new SimpleFileIO(oflags, new File("unidbg-android/src/test/resources/FileDemo/demo2/2.txt"), pathname));//        }//        if(pathname.equals("/data/user/0/com.example.fileinunidbg/files/demo2/3.txt")){//            return FileResult.success(new SimpleFileIO(oflags, new File("unidbg-android/src/test/resources/FileDemo/demo2/3.txt"), pathname));//        }        return null;    }}

来源地址:https://blog.csdn.net/weixin_38927522/article/details/128085091

--结束END--

本文标题: unidbg-补环境访问文件及目录

本文链接: https://www.lsjlt.com/news/372863.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作