16.安卓逆向-frida基础-HOOK类方法2

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

内容参考于:图灵Python学院

本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:15.安卓逆向-frida基础-HOOK类方法1

上一个内容里hook了一些逆向时常用类和方法,本次接着继续

有一个app,如下图是通过青花瓷抓的包,它的参数加密了,就用它来进行实战

然后对它进行HOOK,它的参数可能会出现在解析json的时候,使用HashMap的时候

首先HOOK HashMap,可以看到下面两个图,HOOK它之后可以看到明文、密文、接口返回值

代码

function demo6() {var hashMap = Java.use("java.util.HashMap");hashMap.put.implementation = function (a, b) {console.log('输出-》',a,b);return this.put(a, b)}}Java.perform(function (){ // 调用java代码也就是getCalc方法// demo1()// demo2()// demo5()demo6()
})

然后下图是密文的k,所以用Encrypt它做一个判断,如果等于Encrypt的时候查看它的调用栈

打印调用栈的代码

function showStacks() {Java.perform(function (){console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()))})
}

实战:下图把调用栈打印了出来,然后可以逆向了

function demo6() {var hashMap = Java.use("java.util.HashMap");hashMap.put.implementation = function (a, b) {if(a == 'Encrypt'){showStacks();}console.log('输出-》',a,b);return this.put(a, b)}}function showStacks() {Java.perform(function (){console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()))})
}Java.perform(function (){ // 调用java代码也就是getCalc方法// demo1()// demo2()// demo5()demo6()
})

有了调用栈开始逆向分析,打开jadx-gui-1.4.7.exe并把apk拖进去进行反编译

然后下图红框是HashMap put的位置,这里是java提供的所以这里不用看,然后下图皇框里是json库里的方法所以也不用看,然后下图绿框是自己写的

不确定是不是自己写的就把下图红框位置,就是前面三个部分复制一下去百度,如果能百度到那就不是自己写的

然后如下图,搜索

双击下图红框进入类

双击之后

然后来到116行,来到之后如下图看到它添加加密数据的位置了,然后开始分析

然后看到加密的数据从 RequestUtil.encodeDesMap(code, this.desKey, this.desIV); 得到的,所以接下来去encodeDesMap里看

按住CTRL鼠标左键单机下图红框位置,就可以跳转进去了

然后就来到下图红框位置

然后右击选择复制为frida片段,也就是它会给我们生成frida的HOOK代码并复制,HOOK之后看它的入参

然后粘贴的代码

然后执行 frida -UF -l 指令执行hook代码,如下图可以看到它的明文和用来加密的字符

然后如下图红框,它里面有个 sign 的值也被加密了

通过Python代码加密,发现它的key有问题,与上图加密内容不一样

然后再回到apk反编译的代码,如下图红框,它把key放到了DesSecurity里

进入 DesSecurity 里,如下图红框,可以看到它对key进行了加密,所以用hook得到的key进行加密,它是可以加密但是加密的结果不对

然后分析InitCipher里面逻辑,不认识的代码可以复制去百度搜,加密的后面再写,这里先这样

然后分析 sign,sign在下图红框位置添加的

然后 Config.BASE_APPEND 的值是 sdlkjsdljf0j2fsjk

然后进入paraMap方法里分析,对sign进行了md5加密

进入md5方法里,如下图红框,它是标准md5加密

然后现在需要知道md5方法的入参是什么,所以要hook它,让他给我们生成代码

下图红框是要加密的数据,也就是sign的值

使用在线的md5加密,结果与它的加密一样

然后这个字符串值的来源如下图,sdlkjsdljf0j2fsjk来自于Config.BASE_APPEND(上面有找到)

HOOK JSON

function hookjson() {// hookjsonvar JSONObject = Java.use("org.json.JSONObject");JSONObject.put.overload('java.lang.String','java.lang.Object').implementation=function (key, value) {console.log('Hook JSONObjdect.put')console.log(`key:${key}`)console.log(`value:${value}`)return this.put(key, value)}JSONObject.getString.overload('java.lang.String').implementation=function (key) {console.log('Hook JSONObjdect.getString')console.log(`key:${key}`)var res = this.getString(key)return res;}
}Java.perform(function (){ // 调用java代码也就是getCalc方法// demo1()// demo2()// demo5()// encodeDesMap()// wmd5()hookjson()
})

它有时候HOOK之后没反应,感觉还是HOOK map的put方法好用


img

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线毫米(mm)到像素(px)换算器

具体请前往:在线mm转px工具--将实际长度毫米(Millimeters)单位换算为像素(Pixels)单位

CAN总线的错误类型

前言 CAN总线的错误类型主要包括:位错误、填充错误、格式错误、ACK错误和CRC错误。这里一定要做好CAN总线的错误类型、错误帧类型、节点状态之间的区别。 错误类型是帧传输出错的原因类型;错误帧类型(主动错误帧、被动错误帧)是帧…

(c++)内存四区:1.代码区2.全局区(静态区)3.栈区4.堆区

//内存四区:1.代码区 2.全局区 3.栈区 4.堆区 1.放在代码区的有:1.写的代码:只读的、共享的、存放的二进制机器指令、由操作系统直接管理 2.放在全局区的有:1.全局的(变量或常量) 2.静态的&#xff0…

基于ESP8266—AT指令连接阿里云+MQTT透传数据(1)

在阿里云创建MQTT产品的过程涉及几个关键步骤,主要包括注册阿里云账号、实名认证、开通MQTT服务实例、创建产品与设备等。以下是详细的步骤说明: 一、准备工作 访问阿里云官网,点击注册按钮,填写相关信息(如账号、密码、手机号等)完成注册。注册完成后,需要对账号进行实…

Python爬虫之requests(二)

Python爬虫之requests(二) 前面演示了requests模块的四种请求方式。接下来再来演示下综合的练习。 一、requests模块综合练习 需求:爬取搜狗知乎某一个词条对应的某个范围页码表示的页面数据。 点开搜狗首页,有一个知乎的版块…

敏感字段加密 - 华为OD统一考试(E卷)

2024华为OD机试(E卷+D卷+C卷)最新题库【超值优惠】Java/Python/C++合集 题目描述 【敏感字段加密】给定一个由多个命令字组成的命令字符串: 1、字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号; 2、命令字之间以一个或多个下划线 进行分割; 3、可…

登录功能开发 P167重点

会话技术: cookie jwt令牌会话技术: jwt生成: Claims:jwt中的第二部分 过滤器: 拦截器: 前端无法识别controller方法,因此存在Dispa什么的

QT——初识

目录 前言 1.创建一个QT项目 2.查看生成的文件 3.打印一条hello world! ①使用控件实现 ②使用代码实现 4.Qt的编码格式 5.信号和槽 6.Qt中的坐标系 前言 QT是一款可跨平台的电脑客户端开发软件,本文将介绍一些有关QT使用的基础内容。 1.创建一个…

介绍我经常使用的两款轻便易用的 JSON 工具

第一款是 Chrome Extension,名叫 JSON Viewer Pro,可以在 Chrome 应用商店下载: 点击右上角的 JSON Input,然后可以直接把 JSON 字符串内容粘贴进去,也直接直接加载本地 JSON 文件。 可以在树形显示和图形显示两种模式…

winform—实现窗口传值

winform实现窗口传值 在WinForms应用程序中,实现窗体间传值可以通过几种方式: 方式一通过构造函数传值 第一个窗体 public partial class Form1 : Form{public Form1(){InitializeComponent();}private void buttonOpenForm2_Click(object sender, Ev…

数学建模研赛总结

目录 前言进度问题四分析问题五分析数模论文经验分享总结 前言 本文为博主数学建模比赛第五天的内容记录,希望所写的一些内容能够对大家有所帮助,不足之处欢迎大家批评指正🤝🤝🤝 进度 今天已经是最后一天了&#xf…

《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024

《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024 前言简介任务定义模型架构Encoding Dialogue InformationCapturing Associated InformationPredicting Emotion and Generating Response损失函数问题前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦…

基于YOLOv8目标检测与chef-transformer(T5)从图像创建食谱

前言 在本文中,将演示如何使用从Roboflow获得的开源产品数据来训练我的YOLOv8模型,然后将其与从Hugging Face获得的chef-transformer(T5)模型集成。应用程序的主要目标是将检测到的对象参数化地发送到语言模型,并在NL…

sentinelhub3.7相比3.4的版本主要变化

sentinelhub3.7相比3.4的版本,主要变化包括: 1. 增加对sentinel 基线04.00数据产品的支持; 2. 将aws数据下载模块独立出来 3.4版本 3.7版本 3. 原来的DataSource改为DataCollection 3.7版本不再支持DataSource 3.4版本中的DataSource 3.7版本使用Data…

C#开发中如何在不破坏封装性下调用控件

在C#开发中,我们知道每个设计文件在完成后都会存在封装性,如果是方法,对象的调用,我们可以采取public方法来允许外部的访问,但是对于控件来说,封装性是与生俱来的,强行破环封装既复杂&#xff0…

如何获取钉钉webhook

第一步打开钉钉并登录 第二步创建团队 并且 添加自定义 机器人 即可获取webhook

Ajax ( 是什么、URL、axios、HTTP、快速收集表单 )Day01

AJAX 一、Ajax是什么1.1名词解释1.1.1 服务器1.1.2 同步与异步1. 同步(Synchronous)2. 异步(Asynchronous)3. 异步 vs 同步 场景4. 异步在 Web 开发中的常见应用: 1.2 URL 统一资源定位符1.2.1 URL - 查询参数1.2.2 ax…

03-指针的类型,算术运算,void指针

指针是强类型的,需要特定类型的指针来存放特定类型变量的地址. 指针作用: 储存内存地址; 解引用那些地址的内容(访问和修改地址中的值) 一、整形,字符型指针输出: #include <stdio.h>int main(int argc, const char* argv[]) {int a 1025;int* p;p &a;printf(&qu…

使用dockerfile来构建一个包含Jdk17的centos7镜像(构建镜像:centos7-jdk17)

文章目录 1、dockerfile简介2、入门案例2.1、创建目录 /opt/dockerfilejdk172.2、上传 jdk-17_linux-x64_bin.tar.gz 到 /opt/dockerfilejdk172.3、在/opt/dockerfilejdk17目录下创建dockerfile文件2.4、执行命令构建镜像 centos7-jdk17 : 不要忘了后面的那个 .2.5、查看镜像是…

基于SSM+小程序的电影院订票选座管理系统(电影2)(源码+sql脚本+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM的电影院订票选座小程序管理系统实现了管理员和用户二个角色。管理员实现了用户管理、影院信息管理、电影类型管理、电影信息管理、系统管理、订单管理等。用户实现了影院信息、电…