安卓逆向unidbg之打印输出JNI_OnLoad动态绑函数的内存地址

package com.anjuke.mobile.sign;


import com.github.unidbg.AndroidEmulator;
import com.github.unidbg.Module;
import com.github.unidbg.linux.android.AndroidEmulatorBuilder;
import com.github.unidbg.linux.android.AndroidResolver;
import com.github.unidbg.linux.android.dvm.AbstractJni;
import com.github.unidbg.linux.android.dvm.DalvikModule;
import com.github.unidbg.linux.android.dvm.DalvikVM;
import com.github.unidbg.linux.android.dvm.VM;
import com.github.unidbg.linux.android.dvm.array.ByteArray;
import com.github.unidbg.memory.Memory;

import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;



public class Print_Address extends AbstractJni{

    private final AndroidEmulator emulator;
    private final VM vm;
    private final Module module;

    public Print_Address(){
        // 创建一个模拟器实例,进程名建议依照实际的进程名填写,可以规避一些so中针对进程名校验
        emulator = AndroidEmulatorBuilder.for64Bit().setProcessName("com.xxx.oasis").build();
        // 设置模拟器的内存操作接口
        final Memory memory = emulator.getMemory();
        // 设置系统类库解析
        memory.setLibraryResolver(new AndroidResolver(23));
        // 创建Android虚拟机,传入APK,Unidbg可以替我们做部分签名校验的工作
        vm = emulator.createDalvikVM(new File("E:\\JavaApp\\unidbg-master\\unidbg-android\\src\\test\\resources\\MySo\\lvxx.apk"));
        // 加载so到虚拟内存,第二个参数的意思表示是否执行动态库的初始化代码
        DalvikModule dm = vm.loadLibrary(new File("E:\\JavaApp\\unidbg-master\\unidbg-android\\src\\test\\resources\\MySo\\libxxx.so"),true);
        // 获取so模块的句柄
        module = dm.getModule();
        // 设置JNI
        vm.setJni(this);
        // 打印日志
        vm.setVerbose(true);
        // 调用JNI方法
        dm.callJNI_OnLoad(emulator);   // 调用JNI_OnLoad
    }

    public static void main(String[] args){
        Print_Address oasis = new Print_Address();
    }

}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云霄IT

感谢感谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值