吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3964|回复: 9
收起左侧

[Android 原创] Unidbg 调用方式对比

  [复制链接]
胡凯莉 发表于 2023-6-24 12:15

Unidbg 调用方式对比

1、 签名调用

// 调用方法 StringObject---unidbg中
StringObject obj = cls.callStaticJniMethodObject(
    emulator,
    "get3desKey(Landroid/content/Context;)Ljava/lang/String;",
    ctxObject
);

2、callFunction 调用

2.1  基于符号的调用

  • vm.addLocalObject(vm.resolveClass("com/yoloho/libcore/util/Crypt"))
    • 实现了把这个类的hash和内容 放入vm中
  • number 类似内存地址
    • int result = number.intValue();  //得到内存地址
    • vm.getObject(result) //得到一个Unidbg中的StringObject  或者其他的Unidbg对象
    • vm.getObject(result).getValue() // 得到一个java中的String对象
Number number = module.callFunction(
    emulator,
    "Java_com_yoloho_libcore_util_Crypt_encrypt_1data",
    vm.getJNIEnv(),
    //vm.addLocalObject(vm.resolveClass("com/yoloho/libcore/util/Crypt").newObject(null)),
    vm.addLocalObject(vm.resolveClass("com/yoloho/libcore/util/Crypt")),
    0,
    vm.addLocalObject(new StringObject(vm, "64e6176e45397c5989504eHjtL0AQ==")),
    85
);
int result = number.intValue();
String v = (String) vm.getObject(result).getValue();
System.out.println(v);

image-20230621143307974

image-20230621143629456

2.2 基于偏移量的调用

  • 直接写偏移量进行调用.
  • 如果是32位的so文件  偏移量要+1
Number number = module.callFunction(
        emulator,
        0x2414,
        vm.getJNIEnv(),
        vm.addLocalObject(vm.resolveClass("com/yoloho/libcore/util/Crypt")),
        0,
        vm.addLocalObject(new StringObject(vm, "64e6176e45397c5...lKpHjtL0AQ==")),
        85
);
int result = number.intValue();
String v = (String) vm.getObject(result).getValue();
System.out.println(v);

3、执行so文件中C函数

 public void call_1() {
        int v7 = 0;

        UnidbgPointer v9 = memory.malloc(100, false).getPointer();
        v9.write("64e6176e45397c5989504e76f98ecf2e63b2679euser/login15131255555A4rE0CKaCsUMlKpHjtL0AQ==".getBytes());

        int v8 = 85;

        UnidbgPointer v11 = memory.malloc(100, false).getPointer();

        module.callFunction(
                emulator,
                0x1DA0,
                v7,
                v9,
                v8,
                v11
        );

        System.out.println(v11.getString(0));
        // byte[] bArr = v11.getByteArray(0,100);
        // Inspector.inspect(bArr,"结果");
    }

免费评分

参与人数 9威望 +1 吾爱币 +27 热心值 +8 收起 理由
junjia215 + 1 + 1 用心讨论,共获提升!
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
cn211211 + 1 热心回复!
debug_cat + 1 + 1 用心讨论,共获提升!
安道尔的鱼 + 1 + 1 我很赞同!
xlln + 1 + 1 我很赞同!
狄人3 + 1 + 1 谢谢@Thanks!
supercilious + 1 + 1 谢谢@Thanks!
vaycore + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wapython 发表于 2023-6-24 13:33
请问大佬,怎么判断签名啊
spawn_fly 发表于 2023-6-24 15:17
zjunjie616 发表于 2023-6-25 09:37
 楼主| 胡凯莉 发表于 2023-6-25 11:38
wapython 发表于 2023-6-24 13:33
请问大佬,怎么判断签名啊

jadx 下面有个smile代码 看一下就知道了
Daneellee 发表于 2023-6-25 17:41
感谢楼主分享!
wapython 发表于 2023-6-25 19:22
胡凯莉 发表于 2023-6-25 11:38
jadx 下面有个smile代码 看一下就知道了

哦哦,好,我弄弄,谢谢分享
zjh889 发表于 2023-6-26 00:42
不错,谢谢大师分享!
sabirjan2023 发表于 2023-7-7 10:35
libshell-superv.2019.so
libshell-supervbasic.2019.so
有点难度了
wasm2023 发表于 2024-7-19 19:22

模拟执行报错如下:
JNIEnv->GetMethodID(java/lang/Boolean.booleanValue()Z) => 0x31f67dab was called from RX@0x40038588[libkwsgmain.so]0x38588
JNIEnv->CallBooleanMethodV(true, booleanValue() => true) was called from RX@0x400386b8[libkwsgmain.so]0x386b8
JNIEnv->GetObjectArrayElement([["82a9a01089d9dde7d24ff7d3ea0dbe9c"], "d7b7d042-d4f2-4012-be60-d97ff2429c17", java.lang.Integer@c038203, false, com.yxcorp.gifshow.App@cc285f4, null, true, "5059fbc5-cce9-4393-a49e-1dda976617c4"], 7) => "5059fbc5-cce9-4393-a49e-1dda976617c4" was called from RX@0x400422b4[libkwsgmain.so]0x422b4
JNIEnv->GetStringUtfChars("5059fbc5-cce9-4393-a49e-1dda976617c4") was called from RX@0x400422d4[libkwsgmain.so]0x422d4
JNIEnv->ReleaseStringUTFChars("5059fbc5-cce9-4393-a49e-1dda976617c4") was called from RX@0x400424a8[libkwsgmain.so]0x424a8
[18:19:45 964]  WARN [com.github.unidbg.arm.AbstractARM64Emulator] (AbstractARM64Emulator$1:66) - Fetch memory failed: address=0x9c00, size=1, value=0x0
[18:19:45 964]  WARN [com.github.unidbg.AbstractEmulator] (AbstractEmulator:417) - emulate RX@0x40040cd4[libkwsgmain.so]0x40cd4 exception sp=unidbg@0xbfffeae0, msg=unicorn.UnicornException: Invalid memory fetch (UC_ERR_FETCH_UNMAPPED), offset=18ms @ Runnable|Function64 address=0x40040cd4, arguments=[unidbg@0xfffe1640[libjnigraphics.so]0x640, 1734853116, 10418, 703504298]
Exception in thread "main" java.lang.NullPointerException
  at com.ks.Ks.callTarget(Ks.java:72)
  at com.ks.Ks.main(Ks.java:81)
这种说是unidbg的资源文件不支持arm64,请问大佬如何修改才能支持呢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 09:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表