唯品会 unidbg 补环境 分析

server/2025/3/27 17:41:50/

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

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


http://www.ppmy.cn/server/179180.html

相关文章

qt QOffscreenSurface详解

1、概述 QOffscreenSurface 是 Qt 中用于离屏渲染的一个类。它允许在不直接与屏幕交互的情况下进行 OpenGL 渲染操作&#xff0c;常用于生成纹理、预渲染场景等。通过 QOffscreenSurface&#xff0c;可以在后台创建一个渲染表面&#xff0c;进行绘制操作&#xff0c;并将结果捕…

安铂克科技APLC系列射频模拟信号发生器

产品概述 APLC系列是安铂克科技推出的高性能信号发生器&#xff0c;以极低相位噪声、快速切换速度和高频率范围为核心优势&#xff0c;适用于对信号质量、精度及同步性能要求严苛的应用场景。其频率覆盖12.75GHz至54GHz&#xff0c;支持灵活配置&#xff0c;满足多领域科研与工…

Rust从入门到精通之进阶篇:17.宏编程基础

宏编程基础 宏是 Rust 中强大的元编程工具,允许你编写可以生成其他代码的代码。与函数不同,宏在编译时展开,可以实现更灵活的代码生成和重用模式。在本章中,我们将探索 Rust 的宏系统,包括声明宏和过程宏的基础知识。 宏与函数的区别 在深入宏编程之前,让我们先了解宏…

LRU算法实现

基于双链表的实现 需要维护的是两个&#xff1a; 负责达到快速查找作用的unodered_map<key, DLinkList*>&#xff0c;key存放的是键&#xff0c;值存放的是这个键在cache里面的地址&#xff0c;这样查找的时候就能快速找到键并通过值访问地址获取其val了负责记录具体信…

【docker】docker-compose安装RabbitMQ

docker-compose安装RabbitMQ 1、配置docker-compose.yml文件&#xff08;docker容器里面的目录请勿修改&#xff09;2、启动mq3、访问mq4、查看服务器映射目录5、踩坑5.1、权限不足 1、配置docker-compose.yml文件&#xff08;docker容器里面的目录请勿修改&#xff09; versi…

一个简单的用C#实现的分布式雪花ID算法

雪花ID是一个依赖时间戳根据算法生成的一个Int64的数字ID&#xff0c;一般用来做主键或者订单号等。以下是一个用C#写的雪花ID的简单实现方法 using System; using System.Collections.Concurrent; using System.Diagnostics;public class SnowflakeIdGenerator {// 配置常量p…

数据库 第一章 MySql基础(1)

目录 数据库概述 定义 常见的数据库产品&#xff1a; Mysql数据库 MySQL的常用命令 安装可视化客户端工具 sql DDL 创建,删除数据库 数据库表的基本概念 设 计 表 设计表(数据类型) 字符 日期 整数 浮点 长文本字符 主键&#xff1a; 约束: 创建表语法: 删…

Solr-搜索引擎-入门到精通

以下是对 Apache Solr 的简介及其常用语法的快速入门指南&#xff1a; 一、Solr 是什么&#xff1f; • 核心定位&#xff1a;Apache Solr 是一个基于 Lucene 的高性能、开源的搜索平台&#xff0c;支持全文检索、分词、高亮、聚合统计等功能。 • 核心功能&#xff1a; • 全…