某coin数据加密接口分析

news2024/9/22 13:25:00

 新建项目,然后添加frida代码提示

frida 代码提示安装--vscode / node

npm i @types/frida-gum

任务 : sign 和 data,止于mobilekey是设备号,测试可以随机

 

sign 加密在 native 层 

动态调试配置:

把ida 的 dbsgv 文件下的 android_server 复制到真机

chmod -R 777 android_server 给权限

./android_server 启动服务

启动多一个命令窗口 :端口转发:adb forward tcp:23946 tcp:23946

可以看到有4个包名一样的进程,我们要附加到主进程用frida-ps -Ua 查看一下

确定是9376

这个报错是因为我的机子是armx64,而我用的是32位的ida

 改了之后进来了

加载objection

objection -g com.temperaturecoin explore -P ~/.objection/plugins

定位SO 

这里有个concatTokenMd5函数,可以作为定位

function main() {
    console.log("==== 0")

    Java.perform(function () {

        var process_Obj_Module_Arr = Process.enumerateModules();
        for(var i = 0; i < process_Obj_Module_Arr.length; i++) {
            //包含"lib"字符串的
            if(process_Obj_Module_Arr[i].path.indexOf("lib")!=-1)
            {
                console.log("模块名称:",process_Obj_Module_Arr[i].name);
                // console.log("模块地址:",process_Obj_Module_Arr[i].base);
                // console.log("大小:",process_Obj_Module_Arr[i].size);
                // console.log("文件系统路径",process_Obj_Module_Arr[i].path);
                var libname = process_Obj_Module_Arr[i].name
                frida_Module_import(libname)
            }
        }
    })
}

function frida_Module_import(libname) {
    Java.perform(function () {
        const hooks = Module.load(libname);
        var Imports = hooks.enumerateExports();
        for(var i = 0; i < Imports.length; i++) {
            if (Imports[i].name.indexOf('concatTokenMd5') != -1) {
                //函数类型
                console.log("type:",Imports[i].type);
                //函数名称
                console.log("name:",Imports[i].name);
                //属于的模块
                console.log("module:",Imports[i].module);
                //函数地址
                console.log("address:",Imports[i].address); 
            }
         }
    });
}

setImmediate(main)

 关键代码在libns.so模块

确认无误,那么m1508s 肯定也在其中

 0x28 = 40 ,静态+动态结合,理解代码

MRS X8, #3, c13, c0, #2"表示将协处理器13(c13)的寄存器0(c0)的第2个字段(#2)的值读取到X8寄存器中

经过分析V27是传进来的 timestap + subscribeListEncryption

16907601734120subscribeListEncryption

V28 是 token : ee00a8d3928bed31551132d5449ba3c7

静态分析过,X0是传进来的参数,然后动态单步到  STUR  X0, [X29,#var_30] 这里,才开始获取到传入的变量

 

看到 pre load 

我们知道程序流程的下一步就是V25,能定位到附近的关键代码可以快速解决问题

F7 步入V27(V29,V28)

对比在java 层的传入参数,token 和 时间戳字符串,确认这是核心加密函数 cxor

用nodepad++ 改写成标准C++代码 

 上VS测试结果

结果sign

GFJAIOGCOBMFJGMQJSEPMCBRPTZNPCRA

 对比抓包结果一致,至此sign参数算法搞定。

下面是java 层的data 参数,比较简单,简单说一下

也就是这里 时间戳+0-9随机字符一个+subscribel 

data 参数直接找到decrpyt函数得到key和iv: 

看到了AES字眼,data数据看也像AES 

setImmediate(function(){

Java.perform(function(){

    console.log("starting script");
    var Activity = Java.use("com.temperaturecoin.utils.AESUtil");
    Activity.decrypt.implementation = function(para){
        console.log("输入参数:"+para)
        var result = this.decrypt(para)
        console.log("输出:"+result)
        return result
    }
})


})

frida -U -F com.temperaturecoin  -l frida_test.js  

 易语言算法测试

 

至此data 参数搞定

某coin APP 的逆向,让我复习了一下frdia基本用法+关键函数SO定位+SO分析算法还原

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/815079.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SFL218、SFL214、SFL216、SFL218B双喷嘴挡板两级电液伺服阀

SFZ141直接驱动式伺服阀 SFL317电反馈三级伺服阀 SFL316电反馈三级伺服阀 SFL218A双喷嘴挡板两级电液伺服阀 SFL218双喷嘴挡板两级电液伺服阀 SFL214双喷嘴挡板两级电液伺服阀 SFL216双喷嘴挡板两级电液伺服阀 SFL218B双喷嘴挡板两级电液伺服阀 SFL212B双喷嘴挡板两级电…

HTSA101伺服流量阀放大器

电液伺服阀放大器HTSA101特点&#xff1a; 可用拨码方式选择比例、积分(PI)控制前面板有电源、阀电流和继电器指示灯可开关选择阀电流的输出电流范围可选输出电流或者电压信号来匹配伺服阀或者比例阀采用标准 DIN rail 规格带有颤振信号、颤振信号的幅值和频率可调标准的DIN 导…

Day05-作业(SpringBootWeb请求响应)

作业1&#xff1a;联网创建SpringBoot工程&#xff0c;完成如下需求 测试接口数据&#xff0c;提取码&#xff1a;5555&#xff08;将上述json文件,下载并导入postman&#xff09;https://pan.baidu.com/s/1rwUfKTCgncB_xxarzOUpfA 需求&#xff1a; springboot的版本选择 2…

ALLEGRO之View

本文主要介绍ALLEGRO中的View菜单。 &#xff08;1&#xff09;Zoom By Points&#xff1a;按照选型区域放大&#xff1b; &#xff08;2&#xff09;Zoom Fit&#xff1a;适合窗口放大&#xff1b; &#xff08;3&#xff09;Zoom In&#xff1a;放大&#xff1b; &#xf…

Java---Shiro框架

第一章 入门概述 1.1 什么是shiro Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完成:认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。 …

释放三年版本:Aspose.Total For NET [21.7/22.7/23.7]

请各位对号入座&#xff0c;选择自己需求范围&#xff0c;你懂的&#xff0c;你懂的&#xff0c;你懂的 Aspose.Total for .NET is the most complete package of all .NET File Format Automation APIs offered by Aspose. It empowers developers to create, edit, render, …

日撸java_day54-55

文章目录 第 54 、55 天: 基于 M-distance 的推荐代码运行截图 第 54 、55 天: 基于 M-distance 的推荐 1.M-distance, 就是根据平均分来计算两个用户 (或项目) 之间的距离. 2.邻居不用 k 控制. 距离小于 radius (即 ϵ ) 的都是邻居. 使用 M-distance 时, 这种方式效果更好. …

tinkerCAD案例:28. Build a Mobile Amplifier 构建移动放大器(3)

tinkerCAD案例&#xff1a;28. Build a Mobile Amplifier 构建移动放大器(3) 原文 step 1 “爵士乐”放大器 Lesson Overview: 课程概述&#xff1a; Now we’re going to decorate our design! 现在我们要装饰我们的设计&#xff01; step 2 In this step we will ref…

纯CSS实现手风琴效果(常用样式)

【效果图】&#xff1a; 【html代码】&#xff1a; <div class"rowd"><ul class"fold_wrap"><li><a href"#"><div class"pic_auto pic_auto1 trans"></div><div class"adv_intro flex&…

qt子进程和父进程读写数据通信

进程A&#xff08;例如主程序&#xff09;创建了一个QProcess B&#xff0c;这个B就称为A的子进程&#xff0c;而A称为B的父进程。 这也称为进程间通信&#xff0c;有多种方式&#xff1a; TCP/IPLocal Server/Socket共享内存D-Bus &#xff08;Unix库&#xff09;QProcess会…

Java版本企业电子招投标采购系统源码+功能模块功能描述+数字化采购管理 采购招投标

功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外部…

Android复习(Android基础-四大组件)—— Activity

Activity作为四大组件之首&#xff0c;是使用最为频繁的一种组件&#xff0c;中文直接翻译为"活动"&#xff0c;不过如果被翻译为"界面"会更好理解。正常情况&#xff0c;除了Window&#xff0c;Dialog和Toast &#xff0c; 我们能见到的界面只有Activity。…

【phaser微信抖音小游戏开发003】游戏状态state场景规划

经过目录优化后的执行结果&#xff1a; 经历过上001&#xff0c;002的规划&#xff0c;我们虽然实现了helloworld .但略显有些繁杂&#xff0c;我们将做以下的修改。修改后的目录和文件结构如图。 game.js//小游戏的重要文件&#xff0c;从这个开始。 main.js 游戏的初始化&a…

集合框架、多线程、IO流

目录 集合框架 Java迭代器&#xff08;Iterator&#xff09; Java集合类 Collection派生 Map接口派生&#xff1a; Java集合List ArrayList Vector LinkedList Java集合Set HashSet LinkedHashSet TreeSet Java集合Queue&#xff08;队列&#xff09; PriorityQue…

AP5101 高压线性恒流电源驱动 输入 24-36V 输出3串18V LED线性恒流驱动方案

1,输入 24V-36V 输出3串18V 直亮 参考BOM 表如下 2,输入 24V-36V 输出3串18V 直亮 参考线路图 如下​ 3&#xff0c;产品描述 AP5101B 是一款高压线性 LED 恒流芯片&#xff0c;外围简单、内置功率管&#xff0c;适用于6- 60V 输入的高精度降压 LED 恒流驱动芯片。最大…

cloudstack之advanced network

cloudstack网络模式的介绍&#xff0c;可参考【cloudstack之basic network】 一、添加资源 访问UI&#xff0c;默认端口为8080&#xff0c;默认用户民和密码是admin/password。点击【continue with installation】。修改默认密码选择zone type&#xff1a;core 选择advanced模…

python中的单引号、双引号和多引号

目录 python中的单引号 python中的双引号 python中的多引号 三者分别在什么时候使用&#xff0c;有什么区别 总结 python中的单引号 在Python中&#xff0c;单引号&#xff08;&#xff09;可以用来表示字符串。 可以使用单引号创建一个简单的字符串&#xff0c;例如&…

cad文件删除了怎么找回来?这7种方法帮你找回

用户咨询&#xff1a;我存在D盘的文件在今天中午突然不见了&#xff1f;全都是些CAD图纸&#xff0c;不知道是不是被我误删了&#xff0c;怎么才能找到这些图纸&#xff0c;对我很重要呢&#xff01;&#xff01;&#xff01; ——CAD文件删除了怎么找回来&#xff1f;误删除了…

测试平台——项目工程创建和配置

这里写目录标题 一、配置开发环境二、配置MySql数据库三、配置工程日志 一、配置开发环境 项目的环境分为开发环境和生产环境。 开发环境:用于编写和调试项目代码。 生产环境:用于项目线上部署运行。 base.py 修改BASE_DIR&#xff1a;拼接.parent 原因&#xff1a;原BASE_D…

数据包在网络中传输的过程

ref: 【先把这个视频看完了】&#xff1a;数据包的传输过程【网络常识10】_哔哩哔哩_bilibili 常识都看看 》Ref&#xff1a; 1. 这个写的嘎嘎好&#xff0c;解释了为啥4层7层5层&#xff0c;还有数据包封装的问题:数据包在网络中的传输过程详解_数据包传输_张孟浩_jay的博客…