当前位置: 首页 > news >正文

唯品会 unidbg 补环境 分析

声明:
本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
逆向分析

unidbg整合springboot太多坑了,被静态资源坑了,没有报错代码也没问题但是加密一直不通过,把整个项目静态资源重新改了才可以正确加密。

部分代码
@Service("weipinhui")
public class WeiPinHui extends AbstractJni{
    private final AndroidEmulator emulator;
    private final VM vm;
    // 包名
    private final String processName = "com.achievo.vipshop";
    // apk 地址
    private final String packagePath = "lib/wph/wph.apk";
    // so 名称, 要去掉 lib 和  .so
    private final String libraryName = "lib/wph/libkeyinfo.so";
    // jni 类名
    private final String jniClassName = "com.vip.vcsp.KeyInfo";
    // 调试信息
    private final Boolean verbose = true;
    // jni 模块
    private final DvmClass Module;

    private File apkFile;
    private File soFile;
    public String getSign(TreeMap<String,String> map){
        DvmClass keyInfo = vm.resolveClass("com/vip/vcsp/KeyInfo");
        DvmObject<?> contextObj = vm.resolveClass("android/content/Context").newObject(null);
//        TreeMap<String, String> map = new TreeMap<>();
//        map.put("api_key", "aaaa");
//        map.put("app_name", "shop_android");

        StringObject dvmObject = keyInfo.callStaticJniMethodObject(emulator,
            "gsNav(Landroid/content/Context;Ljava/util/TreeMap;Ljava/lang/String;Ljava/lang/Boolean;)Ljava/lang/String;",
            contextObj,
            ProxyDvmObject.createObject(vm, map),
            null,
            false
        );
        return dvmObject.getValue();
    }


    public WeiPinHui() throws IOException {
        // 生成临时 APK 文件
        File apkFile = TempFileUtils.createTempFileFromResource(packagePath);
        // 生成临时 SO 文件
        File soFile = TempFileUtils.createTempFileFromResource(libraryName);
        emulator = AndroidEmulatorBuilder
            .for32Bit()
            .addBackendFactory(new Unicorn2Factory(true))
            .setProcessName(processName)
            .build();
        Memory memory = emulator.getMemory();
        memory.setLibraryResolver(new AndroidResolver(23));
        vm = emulator.createDalvikVM(apkFile);
        vm.setJni(this);
//        vm.setVerbose(verbose);
        DalvikModule dm = vm.loadLibrary(soFile, false);
        Module = vm.resolveClass(jniClassName);
//        System.out.println(Module);
        dm.callJNI_OnLoad(emulator);
    }

结果

总结

   1.出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来。

相关文章:

  • Weblogic
  • 解决企业案例
  • srpingboot-后端登录注册功能的实现
  • 美摄科技智能汽车视频延迟摄影解决方案,开启智能出行新视界
  • 基于SpringBoot + Vue 的汽车租赁管理系统
  • C++ 术语解析与实践指南(十一)
  • Cesium通过本地nginx代理实现离线加载地图
  • 算法(十六)
  • Mysql-经典实战案例(11):深度解析Sysbench压测(从入门到MySQL服务器性能验证)
  • ES 加入高亮设置
  • 12届蓝桥杯—货物摆放
  • 《AI加持,SQL Server预测性维护全攻略》
  • 如何下载 Postman?快速指南!
  • 论坛测试报告
  • 汽车行业可信数据空间研究探索
  • 人工智能与区块链融合:开启数字信任新时代
  • 第 2 章 | 智能合约攻击图谱全景解析
  • 【数组去重、分组和拷贝】
  • Vue 3使用 Socket
  • Skynet 中 snlua 服务启动整体流程分析
  • 如何做酒网站/餐饮管理和营销方案
  • 网站备案照片怎么弄/百度平台商家app下载
  • 简单的网站模板/百度我的订单app
  • 富锦网站/比优化更好的词是
  • 住房和城乡建设部网站标准下载/什么是搜索引擎优化seo
  • 荆门做微信公众号的网站/未来网络营销的发展趋势