返回顶部
首页 > 资讯 > 精选 >unidbg-fork及管道读写
  • 277
分享到

unidbg-fork及管道读写

javaandroid开发语言 2023-08-20 17:08:59 277人浏览 泡泡鱼
摘要

fork子进程直接执行子进程函数; 管道读写采用了输入输出形式; 实战(六) package com.dta.lesson31;import com.GitHub.unidbg.AndroidEmulator;import com.gith

fork子进程直接执行子进程函数;
管道读写采用了输入输出形式;
实战(六)

package com.dta.lesson31;import com.GitHub.unidbg.AndroidEmulator;import com.github.unidbg.Module;import com.github.unidbg.linux.AndroidElfLoader;import com.github.unidbg.linux.android.AndroidEmulatorBuilder;import com.github.unidbg.linux.android.AndroidResolver;import com.github.unidbg.linux.android.dvm.*;import com.github.unidbg.memory.Memory;import com.github.unidbg.memory.MemoryBlock;import com.github.unidbg.pointer.UnidbgPointer;import org.apache.log4j.Level;import org.apache.log4j.Logger;import java.io.File;import java.NIO.charset.StandardCharsets;import java.util.ArrayList;import java.util.List;public class MainActivity2 extends AbstractJni {    private final AndroidEmulator emulator;    private final VM vm;    private final Memory memory;    private final Module module;    public MainActivity2(){        emulator = AndroidEmulatorBuilder                .for32Bit()                //.setRootDir(new File("target/rootfs/default"))                //.addBackendFactory(new DynarmicFactory(true))                .build();        memory = emulator.getMemory();        memory.setLibraryResolver(new AndroidResolver(23));        vm = emulator.createDalvikVM();        vm.setVerbose(true);        vm.setJni(this);        DalvikModule dalvikModule = vm.loadLibrary(new File("unidbg-android/src/test/java/com/dta/lesson31/libcheck.so"), false);        module = dalvikModule.getModule();        vm.callJNI_OnLoad(emulator,module);    }    static {        Logger.getLogger(AndroidElfLoader.class).setLevel(Level.INFO);    }    public static void main(String[] args) {        long start = System.currentTimeMillis();        MainActivity2 mainActivity = new MainActivity2();        System.out.println("load the vm "+( System.currentTimeMillis() - start )+ "ms");        mainActivity.sub_85E0();    }    private void sub_85E0() {        //emulator.traceCode();        List<Object> args = new ArrayList<>();        UnidbgPointer ptr_arg0 = UnidbgPointer.pointer(emulator, module.base + 0xF1B0);        args.add(ptr_arg0.toIntPeer());        args.add(622);        MemoryBlock malloc = memory.malloc(32, true);        UnidbgPointer ptr_md5 = malloc.getPointer();        String md5 = "f8c49056e4ccf9a11e090eaf471f418d";        ptr_md5.write(md5.getBytes(StandardCharsets.UTF_8));        args.add(ptr_md5.toIntPeer());        Number[] numbers = module.callFunction(emulator, 0x85E1, args.toArray());        System.out.println("result => " + numbers[0].longValue());        sub_shellCode(numbers[0].longValue());    }    private void sub_shellCode(long addr) {        List<Object> args = new ArrayList<>();        String input = "qqqqqqq";        MemoryBlock malloc = memory.malloc(input.length(), true);        UnidbgPointer ptr_input = malloc.getPointer();        UnidbgPointer ptr_v9 = memory.allocateStack(8);        ptr_v9.setPointer(0,ptr_input);        UnidbgPointer ptr_pipe = memory.allocateStack(8);        ptr_pipe.setInt(0,0);        ptr_pipe.setInt(4,1);        ptr_v9.setPointer(4,ptr_pipe);        args.add(ptr_v9.toIntPeer());        Number[] numbers = module.callFunction(emulator, addr - module.base + 1, args.toArray());        System.out.println("shellcode result => " + numbers[0].longValue());    }    @Override    public DvmObject<?> callStaticObjectMethod(BaseVM vm, DvmClass dvmClass, String signature, VarArg varArg) {        if(signature.equals("com/a/sample/loopcrypto/Decode->a([BI)Ljava/lang/String;")){            byte[] bytes = (byte[]) varArg.getObjectArg(0).getValue();            int i = varArg.getIntArg(1);            String a = Encrypt.a(bytes, i);            return new StrinGobject(vm, a);        }        return super.callStaticObjectMethod(vm, dvmClass, signature, varArg);    }}

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

--结束END--

本文标题: unidbg-fork及管道读写

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

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

猜你喜欢
  • unidbg-fork及管道读写
    fork子进程直接执行子进程函数; 管道读写采用了输入输出形式; 实战(六) package com.dta.lesson31;import com.github.unidbg.AndroidEmulator;import com.gith...
    99+
    2023-08-20
    java android 开发语言
  • 如何在 Golang 中使用管道实现文件读写?
    通过管道进行文件读写:创建一个管道从文件读取数据并通过管道传递从管道中接收数据并处理将处理后的数据写入文件使用 goroutine 并发执行这些操作以提高性能 如何在 Golang 中...
    99+
    2024-05-15
    golang 管道 文件读写
  • Linux中管道及有名管道的示例分析
    小编给大家分享一下Linux中管道及有名管道的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!管道及有名管道     ...
    99+
    2023-06-13
  • mysql主从及读写分离
     主从同步1 主配置把237配置为主数据库服务器  授权用户从42数据库服务器连接自己的时候有拷贝数据的权限grant   replication &nbs...
    99+
    2024-04-02
  • mysql读锁及写锁详解
    本篇内容介绍了“mysql读锁及写锁详解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • Angular2管道Pipe及自定义管道格式数据的使用案例
    小编给大家分享一下Angular2管道Pipe及自定义管道格式数据的使用案例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体如下:管道(Pipe)可以根据开发者的意愿将数据格式化,还可以...
    99+
    2024-04-02
  • Shell 管道及执行顺序分析
    1、基本概念 a、I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9; b、常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),...
    99+
    2022-06-04
    管道 顺序 Shell
  • Linux读写机制及如何优化
    这篇文章主要介绍了Linux读写机制及如何优化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux读写机制及如何优化文章都会有所收获,下面我们一起来看看吧。缓存缓存是用来减少高速设备访问低速设备所需平均时间...
    99+
    2023-06-27
  • linux管道是什么及怎么使用
    本文小编为大家详细介绍“linux管道是什么及怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux管道是什么及怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。...
    99+
    2023-04-27
    linux
  • 如何使用linux shell 管道命令及管道命令与shell重定向区别
    这篇文章主要介绍“如何使用linux shell 管道命令及与shell重定向区别”,在日常操作中,相信很多人在如何使用linux shell 管道命令及与shell重定向区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-09
  • asp.net mvc core管道及拦截器的理解
    今天来看一下asp.net core的执行管道。先看下官方说明:  从上图可以抛光,asp.net core的执行顺序是,当收到一个请求后,request请求会先经...
    99+
    2022-06-07
    net asp.net mvc ASP.NET 拦截器 MVC core ASP
  • Node.js的文件权限及读写flag详解
    一、文件权限的数字类型 用数字来代表各个权限,各权限的分数对照表如下: r: 4 w: 2 x: 1 文件的基本权限有9个,分别是owner、group、others三种...
    99+
    2022-06-04
    详解 权限 文件
  • 详解MySQL主从复制及读写分离
    目录前言一、相关概述二、读写分离三、MySQL主从复制实验部署四、MySQL读写分离实验前言 在企业实际应用中,成熟的业务通常数据量都比较大,而单台MySQL服务器在安全性、高可用性...
    99+
    2024-04-02
  • java 读写锁的使用及它的优点
    目录1.读写锁使用1.1 读读不互斥1.2 读写互斥1.3 写写互斥2.优点分析3.适用场景总结前言: 读写锁(Readers-Writer Lock)顾名思义是一把锁分为两部分:读...
    99+
    2024-04-02
  • linux中管道及重定向的示例分析
    这篇文章主要介绍了linux中管道及重定向的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在linux系统中,大多数命令很简单,很少出现复杂功能的命令,每个命令往往实...
    99+
    2023-06-12
  • python中怎么使用管道Pipe编写优化代码
    本篇内容主要讲解“python中怎么使用管道Pipe编写优化代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python中怎么使用管道Pipe编写优化代码”吧!我们知道 map 和 filte...
    99+
    2023-06-25
  • python文件读写及形式转化和CGI的
    一丶python文件读写学习笔记 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode) filename:包含了你要访问的文件名称的字符串值。 mode:决定了打开文件的模...
    99+
    2023-01-31
    形式 文件 python
  • GO文件创建及读写操作的方法
    本文小编为大家详细介绍“GO文件创建及读写操作的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“GO文件创建及读写操作的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。三种文件操作比较ioutilbufio...
    99+
    2023-06-30
  • 根据python上下文管理,写一个在读文
    利用上下文管理实现读f文件前后自动打开关闭文件#在本目录创建f文件,内容写monkey代码如下 1 import contextlib #导入模块1 2 @contextlib.contextmanager#装饰器2 3 de...
    99+
    2023-01-30
    上下文 python
  • Shell中管道及执行顺序的示例分析
    这篇文章主要介绍Shell中管道及执行顺序的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、基本概念 a、I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9; b、常用FD有3个,为0(...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作