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

识货APP sh-sign sh-ba sh-jt 分析

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

版本识货8.3  

unidbg 跑的。有很多坑用SpringBoot今天又踩了一个新坑。一值报空指针,backException。排错太麻烦了。

@Service("ShiHuo")
public class ShiHuoService extends GlobalJni {
    private final AndroidEmulator emulator;
    private final VM vm;
    // 包名
    private final String processName = "";
    // apk 地址
    private final String packagePath = "lib/shihuo/8.0.apk";
    // so 名称, 要去掉 lib 和  .so
    private final String libraryName = "l";
    // jni 类名
    private final String jniClassName = "com.shihuo.shsecsdk.Enviroment";
    // 调试信息
    private final Boolean verbose = true;
    // jni 模块


    private File apkFile = TempFileUtils.createTempFileFromResource(packagePath);
    private File soFile = TempFileUtils.createTempFileFromResource(libraryName);

    private final Module module = null;

    public String getSign(String str) {
        DvmClass cContext = vm.resolveClass("android/content/Context");
        DvmClass cContextWrapper = vm.resolveClass("android/content/ContextWrapper", cContext);
        DvmObject<?> ctx = vm.resolveClass("android/app/Application", cContextWrapper).newObject(null);
        DvmClass env = vm.resolveClass("com/shihuo/shsecsdk/Enviroment");
        StringObject sign = env.callStaticJniMethodObject(emulator,
            "nativeParam(Landroid/content/Context;Ljava/lang/String)Ljava/lang/String;",
            ctx,
            (StringObject) ProxyDvmObject.createObject(vm, str)
        );
        return sign.getValue();
    }


    public ShiHuoService() throws IOException {

        // 实例化一个模拟器

        emulator = AndroidEmulatorBuilder
            .for32Bit()
            .addBackendFactory(new Unicorn2Factory(true))
            .setProcessName(processName)
            .build();
        Memory memory = emulator.getMemory();
        memory.setLibraryResolver(new AndroidResolver(23));
        vm = emulator.createDalvikVM(getFileFromClasspath("/lib/shihuo/识货8.0.apk"));
        vm.setJni(this);
//        vm.setVerbose(verbose);
        DalvikModule dm = vm.loadLibrary(getFileFromClasspath(""), false);

        dm.callJNI_OnLoad(emulator);
    }

    public File getFileFromClasspath(String fileName) {
        try {
            ClassPathResource resource = new ClassPathResource(fileName);
            return resource.getFile();
        } catch (IOException e) {
            throw new RuntimeException("Failed to get file from classpath: " + fileName, e);
        }
    }

}

结果

列表

详情

总结

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

相关文章:

  • qt QQuaternion详解
  • Arduino、ESP32驱动GUVA-S12SD UV紫外线传感器(光照传感器篇)
  • 2025-03-26 学习记录--C/C++-PTA 6-2 顺序表操作集
  • SSML(Speech Synthesis Markup Language)简介
  • 视频前后景分离
  • 003仿射和欧式几何
  • (Windows系统)为matplotlib设置中英组合字体:中文宋体+英文Times New Roman
  • PHP中yield关键字的使用
  • 浏览器渲染原理与优化详解
  • Pytest的Fixture使用
  • 异常断电导致current redo损坏处理
  • 练手项目1:Dockerized Redis访问计数器
  • 【AI】MAC版本本地Stable Diffusion web ui安装
  • 深度剖析:域名与DNS安全的全方位解读
  • UFS Explorer Technician:处理最具挑战性数据恢复及取证案例
  • 【0】数据结构的绪论章
  • DS足球监控【比分直播】监控,钉钉实现自动提醒
  • MySQL-存储过程
  • 05.AI搭建preparationの(transformers01)BertTokenizer实现分词编码
  • 命令模式(Command Pattern)★
  • 上海车展侧记|中国汽车产业的韧性从何而来
  • 安徽六安特色产品将“组团”入沪,借力五五购物节开拓市场
  • 五大光伏龙头一季度亏损超80亿元,行业冬天难言结束
  • “80后”杨占旭已任辽宁阜新市副市长,曾任辽宁石油化工大学副校长
  • 三大猪企一季度同比均实现扭亏为盈,营收同比均实现增长
  • 张炜琳已任三明市委常委、宣传部部长