记一次某app 调用ijiami so libJMEncryptBox.so 逆向过程


前言

注意:本教程只用于学习交流 请勿利用其行不法之事 分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。


准备

sunny
frida
ida
jadx-gui
jeb
ida
unidbg

一、抓包

app:联不通
加固:梆梆企业版

在这里插入图片描述
通过抓包发现提交数据和返回数据均已加密

二、脱壳反编译定位

在这里插入图片描述
定位到以上位置
frida hook 明文

{“orderCache”:“{“commonActivityState”:“1”,“commonId”:“xxxxx”,“eleActivityState”:“0”,“eleAmount”:“0”}”,“toolExpand”:“{“toolActivityId”:”“,“toolActivityState”:“0”,“toolCode”:“ZL”,“toolId”:“ZL”}”,“fromToolExpand”:“{“toolActivityId”:”“,“toolActivityState”:“0”,“toolCode”:“ZFB”,“toolId”:“ZFB”}”,“tradeOrderNo”:“xxxxxxx”,“commReqHeader”:{“commonReqExtendStr”:“xxxxx”,“trace_id”:“xxxxxx”,“tokenId”:“”,“payUid”:“xxxxxx”,“appVer”:“11.0601”,“iMei”:“”,“channel”:“225”,“rptId”:“”,“userTokenId”:“xxxxxx”,“did”:“xxxxx”,“mac”:“02:00:00:00:00:00”}}

1.unidbg模拟

搭台子 代码如下(示例):


    zglt(){

    emulator = AndroidEmulatorBuilder.for64Bit().setProcessName("com.sinovatech.unicom.ui").build(); // 创建模拟器实例
    final Memory memory = emulator.getMemory(); // 模拟器的内存操作接口
    memory.setLibraryResolver(new AndroidResolver(23)); // 设置系统类库解析
    try {
        vm = emulator.createDalvikVM(TempFileUtils.getTempFile("/zglt/base.apk")); // 创建Android虚拟机
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    vm.setJni(this);
    vm.setVerbose(true); // 设置是否打印Jni调用细节
    DalvikModule dm = null;
    try {
        dm = vm.loadLibrary(TempFileUtils.getTempFile("/zglt/libJMEncryptBox.so"), true);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    dm.callJNI_OnLoad(emulator);



2.调用

在这里插入图片描述

报错 补环境
在这里插入图片描述

继续补
在这里插入图片描述

继续
在这里插入图片描述

继续
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

ok 成功出结果

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值