APP逆向百例五-Flutter逆向案例----某次元(AES+RSA)

news2024/11/17 5:45:46

现在售价依旧是99¥,计划更新100案例,平均一个案例1块钱,要什么自行车!

还原一下我逆向此app的方法

1.抓包分析:

我这边用socksDroid抓不到数据包,但是小黄鸟可以,那就用Reqable结合电脑端进行抓包,不纠结。

我们可以看到请求头中有个authentication这个经过测试多次携带同一个值不影响,所以我们把重点放在响应体的解密中。

这里给大家先给出一个细节,响应体的解密中有个"."这个重点圈起来后面要考:

2.使用blutter工具

这个不多说了写了好几期了,这次我就省略了。忘记的翻前几期笔记

最后导出ida的符号

3.分析ida中so文件

首先因为我们的目标是将密文进行解密,所以我们先去尝试搜索一下,decrypt:

出来这些 不算多,观察一下 我们发现了一个AES_decrypt和一个RSA_decrypt

我们先hook encrypt这个类下的函数,也就是先去尝试hook 这几个 因为他比较像flutter开发引入的类。

hook encrypt_encrypt_Encrypter::decrypt64_822d84 直接就hook到了明文了! 我们就不用向下hook了

hook代码:

// encrypt_encrypt_Encrypter::decrypt64_822d84
var addr = Module.findBaseAddress('libapp.so');
console.log(addr);
var funcAddr = addr.add(0x822d84);
console.log(funcAddr);
Interceptor.attach(funcAddr, {
    onEnter: function (args) {
        console.log("hook 11 到了------------------")
        console.log('arg0,',hexdump(args[0],{length:2000}))
    },
    onLeave: function (retval) {
        console.log("-------hook 11 到了结束-------------")
        console.log('返回值:', hexdump(retval))
    }
})

仔细观察一下hook的入参 是 . 后面的密文

在仔细观察一下hook日志 :

还输出了一串 16位的字符,入参是 "."前面的数据。那么我们现在就该思考到底是如何变成 这个16字符的,这个16位字符又有什么用。

我们多测试几次会发现hook到的 16位字符 是随机的,不确定的。

这里提示一下AES key 是 16位的,所以我们猜测是解密的key是由  "."前面的数据 一系列处理变成的,结合前面看到的RSA字眼,我们是不是可以大胆的猜测 是由rsa解密成aes的key 和 iv呢。

好到此为止都是我们的猜测,我们去用ida的X交叉编译 查看谁调用了他--此函数 encrypt_encrypt_Encrypter::decrypt64_822d84

我们 追一下:

发现上一层函数是:guoguo_api_utils_g_api_::apiDecrypt_8ab12c(__int64 a1)

仔细观察 里面确实有rsa的东西,而且还有AES_KEY 和 AES_IV的字眼,所以我们猜测是一个AES CBC模式

其实hook AES的函数能 hook到:这里我就不对赘述了

7601e635a9  45 53 2f 43 42 43 2f 50 4b 43 53 37 00 00 00 04  AES/CBC/PKCS7

看到这个reverse 反转 这个注意一下重点!!!

然后我们去先hook一下 AES的 IV 和 KEY 一般案例有的是定值,这里我们再确认一下是否是动态的,因为上面说的都是我们的猜测,只有去用frida hook 到才能证明自己的推论。

至此我们验证了key和Iv 都是动态的哦!

并且hook到的key和iv都是可以解出明文的:

KEY: QJHG7NWAQ6J7NZKV

IV : VKZN7J6QAWN7GHJQ

结合上面提到了 reverse

GET到了吗????老铁们!

接着我们去分析 aes的key是如何来的 , 上面我们看到了rsa的字眼结合密文 “.”前面的字符我们可以猜测是 经过RSA解密然后得到的动态key 然后key反转就是动态的iv

现在去hook RSA KEY: 得到rsa 私钥  私钥用来解密

用这个去解密 返回值的 ". "前面字符:成功可以的!

交流群与联系方式:

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

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

相关文章

Leetcode 347. 前 K 个高频元素

解法: 字典统计排序 class Solution:def topKFrequent(self, nums: List[int], k: int) -> List[int]:cont {}for eve in nums:if eve not in cont: cont[eve] 1else: cont[eve] 1contlist sorted(cont.items(), keylambda x: x[1])res [eve[0] for eve i…

从安装Docker到打包迁移MySQL的完整指南

从安装Docker到打包迁移MySQL的完整指南 每一天过得充实,眼中无迷茫,心中无烦恼。日子就会充满希望,岁月就会洒满清欢。 这篇文章将带你从零开始,在CentOS服务器上安装Docker、使用Docker部署MySQL数据库,并打包和迁移…

凯迪仕智能锁携手唐百电器达成战略合作,市场布局和拓展再加速

近日,凯迪仕智能锁中国区总裁陈露拜访唐山百货大楼集团(唐百电器),双方深入交流资源优势,结合唐山市场实际情况达成2024年-2025年度深度战略合作,并完成首次签约千余套凯迪仕智能锁战略目标,接下…

【java计算机毕设】中小型人力资源管理系统MySQL ssm vue maven项目设计源代码带项目报告 前后端可分离可不分离

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】中小型人力资源管理系统MySQL ssm vue maven项目设计源代码带项目报告 前后端可分离可不分离 2项目介绍 系统功能: 中小型人力资源管理系统包括管理员、人事管理员、普通人员三种角色。 管理员…

【JS】不使用BigInt实现大整数相加

前言 JS中整数有存储范围,一旦超出这个范围则会丢失精度,通过MAX_SAFE_INTEGER可以看到JS中支持的最大的、安全的正整数为9007199254740991。 JS新类型BigInt可以处理大整数运算,但这次不逃课,本文将尝试自行处理大整数相加&…

python安装包,2024最新Python下载环境配置教程!

一、Python安装包下载 1.进入Python官网下载(如果不想去官网下载可以点击领取安装包) Python官网主要有python的About (简介)、Downloads (下载)、Documentation(文档)、Community (团体)、Success Stories (成功案例)、News (新闻)、Events (事件动态…

Windows微调Qwen2-7B-Instruct-甄嬛

一、下载Anaconda 在下载Anaconda之前建议先将电脑原有的python卸载,避免造成冲突。 之后一直Next即可,不过要记得在环境变量中添加Anaconda(在安装完成之前会有一个Add PATH选项,可以选上) 安装完成之后打开CMD&…

3.2.5 宙之CPU的时分复用

点击查看系列文章 》 Interrupt Pipeline系列文章大纲-CSDN博客 3.2.5.1 __primary_switched开始构建0号进程 宙者,古往今来,时间为宙。盘古为了开天辟地,必须分开空间和时间。在时间维度,要对CPU的运行时间进行切分,…

netty编程之自定义编解码器

写在前面 源码 。 本文看下netty如何自定义编解码器。为此netty专门定义抽象类io.netty.handler.codec.MessageToByteEncoder和io.netty.handler.codec.ByteToMessageDecoder,后续我们实现自定义的编解码器就继承这两个类来做。 1:正戏 server 启动类&#xff1a…

卖一辆亏6万搞倾销,极越汽车高管掀了小米汽车遮羞布?

"炮轰解决不了极越销量问题" 作者 | 魏 强 编辑 | 卢旭成 8月22日早9点40分,极越汽车公关负责人徐继业发朋友圈炮轰小米汽车创始人雷军:“雷军这样的企业家,有点公德心和羞耻心好不好?每台车亏6万,亏那么…

Springboot中的mapper与entity难以觉察的匹配问题,困扰我几天时间,形成很大的压力!

最近,应好友邀请,替她做了一个心理疗愈项目的小系统,在编制后台API代码时,遇到了一个不易觉察的问题,终于查找出来,并且解决了,现奉献出来,供大家碰到类似问题,进行参考。…

面试题详解

前言&#xff1a;这一期我们专门来巩固所学知识&#xff0c;同时见识一些面试题。对知识做出一个总结。 1 不创建临时变量交换两个整数 . 第一种方法 #include<stdio.h> int main() {int a 0;int b 0;scanf("%d %d", &a, &b);printf("交换前…

中央空调安装8个标准流程指南

1、内机安装施工队进场第一步就是吊装内机&#xff0c;这里只要注意2个点就可以避免后续问题。 ① 内机离房顶距离不得小于1公分&#xff0c;避免机器运行时与墙顶产生共振。② 内机吊装需考虑百分之一的坡度&#xff0c;接冷凝水的一侧要稍微低一些&#xff0c;避免冷凝水排不…

单个像素的威胁:微小的变化如何欺骗深度学习系统

深度学习&#xff08;DL&#xff09;是人工智能&#xff08;AI&#xff09;的基本组成部分。它的目标是使机器能够执行需要决策机制的任务&#xff0c;这些决策机制往往近似于人类推理。深度学习模型是许多先进应用的核心&#xff0c;例如医疗诊断和自动驾驶汽车。不幸的是&…

饿了么后端登录模块

一、回顾 高并发集群 饿了么后端的登录模块 1、数据库 1. 主从复制(高可用) 2. 传统的主从复制 3. gtids事务型的主从复制 4. 注意 1. server_id唯一 2. 8.x版本需要get_ssl_pub_key 3. 5.x不需要 4. change master to 5. stop | start slave 5. 非交互 import pymy…

uniapp 地图map画出地市轮廓

最近做uniapp项目 H5微信小程序&#xff0c;需要在地图中打点并把相对应的区域轮廓给画出来。 首先查看uniapp官方文档&#xff1a;https://uniapp.dcloud.net.cn/component/map.html 想在uniapp中使用map直接写map标签即可 <view class"page-section page-section-…

CSS实现鼠标hover展开菜单

效果图&#xff1a; HTML源码&#xff1a; 背景图地址需要更改 <!-- 软件介绍 --> <div class"software-box"><div class"software-container"><div class"software-title"><h2>&ldquo; 一个软件搞定所有 &am…

创客匠人老蒋在「IP私域发售六脉神剑落地班」现场金句频出

破认知&#xff0c;提新知&#xff0c;老蒋的观点&#xff0c;再一次带你穿越周期 2024&#xff0c;变革不断&#xff0c;知识服务行业到底该怎么做&#xff1f;「IP私域发售六脉神剑落地班」现场&#xff0c;老蒋作为大课导师&#xff0c;再一次为大家带来了新鲜且颠覆的行业知…

基于SpringBoot的在线笔记网站的设计与实现

目录 项目技术和环境 页面展示 登录注册 管理员页面 用户页面 在线网址 源代码 本系统由十大核心模块构成&#xff0c;包括用户登录与注册模块、个人中心模块、笔记分类与笔记管理模块、笔记详情展示模块、分享协作与收藏管理模块、回收站与用户管理模块&#xff0c;以及…

CoppeliaSim(V-Rep)与ROS1、ROS2接口变迁-2024-

Webots&#xff1a;Webots与ROS1、ROS2接口变迁 Gazebo&#xff1a;Gazebo与ROS1、ROS2接口变迁 ROS1 2016&#xff1a;ROS_Kinetic_18 使用V-Rep3.3.1和Matlab2015b&#xff08;vrep_ros_bridge&#xff09;续 vrep_ros_bridge 插件 一、项目背景与目标 vrep_ros_bridge 是…