Android加密 看雪,Android加密与解密入门两题

2023-11-03

写在最前面

本次题目来自看雪2w班9月题。密码学一直是安全的基础,Android安全也不例外,这次9月份的题分别从java层和C层考察了密码学中常用的对称加密、hash函数以及一些基础的编码,但是不是单纯的算法分析题,可以说是很好的练习题了。

9月第一题

脱壳,脱壳后进行逆向,

4eb177bf8b5f1c17a0e1fa4b248808a0.png

一开始感觉so文件完全没啥用,反而有一个Utils的类十分可疑

很明显的test函数是入口,然后调用bbbbb函数进行加密得到的返回值作为aaaaa函数的参数进行加密,最后确认是否等于Utils.Cipher

一开始一看 不是很明显嘛直接CyberChef,然而。。

4f347c6555ba6d237d8ed577f62af603.png

很明显不对。。想到之前寒冰师傅出的题,一定是动态修改,静态看的肯定不准

于是直接用Objection打印吧

9605e2bea802467cb1ad915b699c3427.png

果然。。。

再来CyberChef

d79e58b517a114d62ea385df5c22b2dc.png

还是不对,难道不是也不是AES嘛 。。

后来经过主动调用发现AES是对的,那么RC4魔改了????直接抠出来用Java工程跑一遍,确实和标准的RC4不一致。。

不过由于RC4这种是一个对称密码,那么我直接拿AES解密后的去再调用一次这个函数就行了。。

最终frida跑出来原来的正确的flag

10dfb139770d0d38fae5d456a68c723f.png

脚本关键函数如下

这里的c3bfc...是我用CyberChef逆出来的。

或者自己写一个java工程,把这个类的所有代码拷出来。。。写个反向的工程就行了。这里我贴出我为了印证RC4的Java工程的代码吧

最后验证索然无味

b90b2b48f85624659e488d7abc15ee71.png

九月第二题

024ca100d17d9b982e04289edf80fab9.png

脱壳后查看代码。。猜测onCreate函数应该是360给native化了,暂时不管,从jnitest函数入手。

先静态看看

124c9a3f3992ee277be128d387ce055b.png

emmmmm这个函数ollvm了,差点就准备放弃。。。F5看看,静态看了看发现实际真实块只有一个

180c6dc9e16f4cf9e3a2f9d7ef1475d0.png

跟进看看,最后跟进到mytest这个函数

038530aa157a300e55718496231d76bc.png

这个混淆的不是很严重,基本块都在,稍微看了看执行顺序,会发现先执行了1基本块,然后执行2号基本块

稍微跟进里面的几个函数一看就能恢复出来,

先看sub_428bc

251cea90d09cbde9dd38397bceb5b617.png

跟进第一个执行的函数

3ac07cf30fd34ae5349045a7bedeff62.png

会发现有几个特别明显的hex值,猜想sub_428bc是md5,emmmm不想看了,猜想这个jnitest的函数是处理我们的输入的,先直接hook吧,最终关键代码如下

3af91b8f1573bb2376362a00e3e16cb8.png

图片左边是hook的结果,右边是CyberChef的加密结果,hook多次后发现,sub_428bc函数确实是md5 hash函数,第一个参数是输入,第二个参数是用于存储md5加密后的byte数组的地址。

c02af7966e9ba97b872cbabd3f50f68a.png

而mytest函数中sub_8748使用FindCrypt插件会发现是一个base64加密函数,hook再次确认,是base64加密,函数的第一个参数是我们md5加密后的值,第二个参数是固定的16.

a64ec1e8f969eecbf4c33935b64f2952.png

在hook的过程中会发现,mytest函数第二个基本块,也就是下面这张图中。也调用了sub_8748函数且生成的结果唯一。其值为4QrcOUm6Wau+VuBX8g+IPg==

8d9abf0a64e936e364c97eff09f15a7c.png

直接逆推对应的md5 哈希值为e10adc3949ba59abbe56e057f20f883e

一解emmmm,flag是123456

93eef467c0733452c899197533b9001d.png

验证发现是对的。。。

小结

在我做这两个练习题的过程中,主要使用静态的代码逆向去进行大概的逻辑分析,使用frida的hook和主动调用去进行动态验证,压根没有什么IDA进行动态调试,所以最后还是喊一句frida牛逼!

另外我在做第一题时,想研究一下如何做到静态jeb看的字符串和动态使用Objection查看的字符串不同的这个技术,可是我竟然在so文件中没有找到操作对应位置的stringID的地方,懵了,希望知道的大佬不吝赐教2333,最后一句,寒冰师傅牛逼!

附件附上

上传的附件:

1.zip

(8.32MB,25次下载)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android加密 看雪,Android加密与解密入门两题 的相关文章

  • 树与图的存储及遍历(分别①采用DFS深度优先遍历;②采用BFS宽度优先遍历)

    树与图的存储 树是一种特殊的图 只是在树中没有环 树是无环连通图 与图的存储方式相同 gt 因此只考虑图的存储即可 gt 图分为有向图和无向图 gt 对于无向图中的边a b 存储两条有向边a gt b和b gt a 即无向图就是特殊有向图
  • git+gerrit+jenkins+sonar 持续集成开发环境搭建

    1 安装git yum y install git 安装成功之后 git version 1 8 3 1 2 安装apache yum install httpd y service httpd start bin systemctl st
  • 腾讯云服务器搭建WordPress网站教程(全流程)

    已经有了腾讯云服务器如何搭建网站 腾讯云服务器网以腾讯云服务器 借助宝塔面板搭建Web环境 然后使用WordPress博客程序搭建网站 大致分为三步 首先购买腾讯云服务器 然后在腾讯云服务器上部署宝塔面板 最后在宝塔面板上安装WordPre
  • STM32CubeMx使用教程(五)—— 使用PWM控制蜂鸣器演唱孤勇者

    本章节将讲解如何使用STM32CubeMx配置定时器 并使用PWM控制无源蜂鸣器频率演奏 前言 1 软件准备 STM32CubeMx Keil5 MDK 2 硬件准备 STM32F103最小系统板 无源蜂鸣器模块 杜邦线若干 本实验所使用的
  • Linux高级实战部署专题篇:ansible自动化运维工具(lnmp自动化实战部署)

    一 ansible环境部署 环境 系统 centos7 主机 4台 1台控制节点 3台被控制节点 1 解析 四台本地解析都要互相做 root ansible 1 vim etc hosts 192 168 222 131 ansible 1
  • Loadrunner11破解详解 .

    使用说明 要以管理员的身份运行 1 正常安装完LR11后 然后双击deletelicense exe 2 然后解压替换其中的2个DLL文件拷贝到 C Program Files HP LoadRunner bin 下替换原有文件 3 进入L
  • anaconda激活环境和退出环境

  • Java面试汇总(四)

    url http www topDesignerStyling com color red size xx large u 最全的Java面试题目下载 u size color url 1 Which of the following li
  • 运行 Python 脚本时传入参数

    转载至 https blog csdn net helloasimo article details 124210144 为了在命令行运行 Python 脚本时传入参数的 采用的方法如下 import argparse if name ma
  • JVM-监控及诊断工具

    本文目录 命令行 jps 查看正在运行的Java进程 jstat 查看JVM统计信息 jinfo 实时查看和修改JVM配置参数 jmap 导出内存映像文件 内存使用情况 jhat JDK自带堆分析工具 jstack 打印JVM中线程快照 j
  • 题目爬取 js

    function collect 内容元素 const content document querySelector content 题目正则 const regexp d 题 n s S 参考答案 A Z 选项正则 const optio
  • Vue3实现Pagination分页组件(一)基础实现

    转载于 Vue3实现Pagination分页组件 一 基础实现 掘金 写在前面 在 B 端的 web 开发中 分页组件或者叫分页器 是较为常用的控件之一 通常配合表格或列表 实现数据量大的情况下 分页拆解数据的功能 由于完整实现的篇幅较大
  • 用c语言编写gps程序,GPS模拟C语言

    A 7654321 B 1714171 C 1711717 D 7177171 48 以下程序的输出是 C include main char a language p p a while p u printf c p u U p A LA
  • 【华为OD机试真题2023B卷 JAVA&JS】采样过滤

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 采样过滤 知识点滑窗 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 在做物理实验时 为了计算物体移动的速率 通过相机等工具周期性的采样物体移动距离 由于工具故障 采样
  • 【C语言】求任意两整数的和入门详解

    今天我们来看这个使用c语言编写的一个简易的求和程序 代码如下 define CRT SECURE NO WARNINGS 1 该行代码用来解决scanf函数报错的 不推荐使用scanf s来修正 因为该解决方案并非适用于所有编译器 incl
  • 极坐标转化

    在数学中 极坐标系是一个二维坐标系统 该坐标系统中任意位置可由一个夹角和一段相对原点 极点的距离来表示 极坐标系的应用领域十分广泛 包括数学 物理 工程 航海 航空以及机器人领域 两点间的关系用夹角和距离很容易表示时 极坐标系便显得尤为有用
  • Spring课件

    容器与 bean 1 容器接口 BeanFactory 接口 典型功能有 getBean ApplicationContext 接口 是 BeanFactory 的子接口 它扩展了 BeanFactory 接口的功能 如 国际化 通配符方式
  • Python自动化

    usr bin env python os system gnome terminal e bash c ls exec bash coding utf 8 import linecache import pyautogui import
  • Nginx(代理)+Tomcat(Java)+Apache(PHP)共用80端口

    解决的核心问题是 使用一个80端口 根据域名或者子域名 同时访问java php运行环境 1 下载nginx 官网下载链接 http nginx org en download html 接下来我以nginx Windows 1 16 0

随机推荐

  • 『学Vue2+Vue3』智慧商城项目

    智慧商城 接口文档 https apifox com apidoc shared 12ab6b18 adc2 444c ad11 0e60f5693f66 doc 2221080 演示地址 http cba itlike com publi
  • 在ubuntu下安装vscode

    ubuntu22 04下通过命令安装vscode 1 为什么不用应用市场直接下载 最近下载ubuntu22 04版本 不知道为啥里面的应用软件下载不了vscode 尝试在网上解决 gt 卸载自带的应用市场 安装另外的一种 结果失败了 导致原
  • 【路由指令】

    一 linux route add net 192 0 0 0 netmask 255 0 0 0 gw 192 180 30 1 sudo route add net 192 180 0 0 netmask 255 255 0 0 gw
  • python爬取今日头条后台数据_爬虫爬取今日头条数据代码实现

    课程链接 讲师的公众号文章 今日头条数据抓取及持久化 完整代码版 含IP和用户代理 mp weixin qq com 课程代码 抓取并持久化user agent工具utils py 对于爬虫工具 需要设置发起请求的user agent im
  • Spring Boot 框架基础

    Spring Boot 框架基础 基础案例 pom xml
  • BUCK LX_OUT Snubber电路

    1 问题 开关节点振铃 过冲 开关节点过冲会导致LX OUT管脚的电压过高 如果超过datasheet上的maximum值 就有可能影响DCDC芯片寿命 2 产生振铃 过冲的原因 2 1 输入电容摆放不正确 2 2 输出电感 电容摆放不正确
  • STM32F103滴答计时器之delay函数

    如果使用FreeRTOS void delay us u32 nus u32 ticks u32 told tnow tcnt 0 u32 reload SysTick gt LOAD ticks nus fac us tcnt 0 del
  • k8s删除deployment_k8s灾备指南(Velero)

    最近验证了使用velero对k8s进行灾难恢复 操作验证步骤如下 1 下载verlero 解压 tar xvf
  • java案例15:模拟订单号生成

    思路 模拟订单号生成 超市购物时 小票上都会有一个订单号 且订单号唯一 编写程序模拟订单系统中订单号的生成 生成订单号时 使用年月日和毫秒值组合生成唯一订单号 例如 给一个包括年月日和毫秒值的数组arr 2023 0401 1100 将其拼
  • git解决代码冲突、合并代码

    共同开发时提交代码会遇到代码冲突 第一次遇到就手足无措的我 打算写一篇博客记录下来 下次遇到稳如老狗 一 远程代码已有更新记录 忘记拉取远程代码 直接提交 单人开发时 我没有先拉远程代码再提交的习惯 千万不要学习 一定要先拉代码再提交 导致
  • 关于odoo条码显示问题处理

    这里分几种情况 1 第一种情况 打印的单据不显示条码 这种情况比较常见 一般是 没有对应字体导致 不能正常显示条码 单据打印的条码 一片空白 无条码的情况 这种情况是因为 条码的字体没有安装 需要安装一下 这里我会把资源上传 大家可以下载
  • Mac texlive+texstudio 如何手动安装宏包

    1 从CTAN上搜索自己需要的package 2 以subfigure为例 选择第一个结果 下载下来 3 解压下载后的文件 这时候发现里面并没有 sty文件 在终端中输入latex subfigure即可生成需要的sty文件 将整个文件夹保
  • nuxt.js-------koa2项目,环境错误一次性解决

    nuxt js虽然好用但是自己的脚手架安装完全是坑 cnpm run dev 报错确实main js node环境nuxt版本不匹配 在网上找了很多解决方法没有解决 就一次性把所有脚手架和环境都升级到最新版本 npm install bac
  • Nginx 负载均衡 - fair

    学习在 Nginx 中使用 fair 模块 第三方 来实现负载均衡 fair 采用的不是内建负载均衡使用的轮换的均衡算法 而是可以根据页面大小 响应时间智能的进行负载均衡 1 准备工作 nginx upstream fair 官方下载地址
  • 使用Nuxt.js框架开发(SSR)服务端渲染项目

    SSR 服务端渲染的优缺点 优点 1 前端耗时少 首屏加载速度快 因为后端拼接完了html 浏览器只需要直接渲染出来 2 有利于SEO 因为在后端有完整的html页面 所以爬虫更容易爬取获得信息 更有利于seo 3 无需占用客户端资源 即解
  • flutter 文字从左到右轮播滚动,跑马灯

    参考 description begin 跑马灯 根据滚动方向可以分为 横向滚动 和 纵向滚动 此页实现的跑马灯是 横向滚动的 description end import dart async import package flutter
  • Shell—变量、字符串和数组

    本文主要讲解Shell变量 字符串和数组的相关知识 一 Shell变量 1 变量的定义 运行shell时 会同时存在三种变量 1 局部变量 局部变量在脚本或命令中定义 仅在当前shell实例中有效 其他shell启动的程序不能访问局部变量
  • 区块链+教育:区块链是底层技术,教育才是本质!

    建国君民 教育为先 国愚是智可以强国 国智则力可以强人 依教建国 以智强国 是中国古代先贤就教育强国思想的重要体现 每次的教育改革也牵动着无数人的心 也有很多人关心未来的教育会走向哪里 百年大计 教育为先 随着人们对教育行业的关注度逐渐提升
  • HECO使用docker部署单节点的开发网

    文章目录 一 编写说明 1 1 文档说明 1 2 配置信息 1 3 部署文档信息 二 heco开发网镜像生成 三 heco主链容器生成 3 1 配置文件编写 3 2 预先创建一个账户地址 3 3 创建genesis json 3 4 初始化
  • Android加密 看雪,Android加密与解密入门两题

    写在最前面 本次题目来自看雪2w班9月题 密码学一直是安全的基础 Android安全也不例外 这次9月份的题分别从java层和C层考察了密码学中常用的对称加密 hash函数以及一些基础的编码 但是不是单纯的算法分析题 可以说是很好的练习题了