NSSCTF MOBILE [SWPU 2019]easyapp 详细题解

文章目录

  • 一. 前言
  • 二. 安装安卓SDK
  • 三. 安装安卓模拟器(推荐夜神模拟器)
  • 四. 安装frida和objection
  • 五. 解题过程
  • 六. 总结

一. 前言

  1. 题目地址:[SWPU 2019]easyapp
  2. 大佬题解[SWPU 2019]easyapp pwjcw的WriteUp
    大佬的题解很简单,直接hook就可以看到返回值,但是我看了半天没看明白是用什么工具做的
    看其他题解是分析so文件得到答案,但是仍然没有搞清楚函数调用流程.
    后来我学习了一下《安卓Frida逆向与抓包实战 (陈佳林)》才知道是用frida和objection进行hook
    不过仍然没有成功复现,这里推测是由于安卓版本的问题,低版本(安卓7)成功复现,安卓9及以上均会失败

app目标安卓版本是安卓10(sdk29),但是我使用了雷电模拟器(安卓9 x86_64)和真机红米Note7(安卓10 arm64)均无法和大佬题解中一样成功hook Android 各版本对应的 SDK 版本
请添加图片描述

二. 安装安卓SDK

这一步主要是为了获取adb(安卓调试桥)工具
可以在这里直接下载SDK 平台工具版本说明
比较推荐的是安装AndroidStudio并将SDK设置到环境变量,这里不多赘述

三. 安装安卓模拟器(推荐夜神模拟器)

官网:夜神模拟器
注意: 可能出现adb无法找到安卓虚拟机的问题
在模拟器路径 \Nox\bin\ 下的nox_adb.exe和adb.exe先查看一下版本,要和安卓sdk的adb版本一致,不一致直接复制sdk的adb,修改名称并替换掉夜神模拟器中的nox_adb.exe和adb.exe
请添加图片描述
可以使用adb devices查看识别出的设备
如果打开了模拟器那么应该能正常识别到,
使用connect命令连接,之后就可以使用adb调试

查看安卓版本: adb shell getprop ro.build.version.release
查看sdk版本:adb shell getprop ro.build.version.sdk
请添加图片描述

四. 安装frida和objection

我的学习笔记略有介绍Android逆向学习之Frida逆向与抓包实战学习笔记(持续更新中)但不够详细,后续会继续补充完善
可以根据大佬文章安装配置frida和objectionfrida安装配置教程
建议使用anaconda管理python版本,给每个版本frida单独开一个环境便于操作多种设备
安装教程anaconda的安装和使用(管理python环境看这一篇就够了)

五. 解题过程

这题调用了Native层的Encrypt函数并进行比较,所以可以尝试hook Encrypt函数直接获取用于比较的字符串
在这里插入图片描述

  1. 启动frida server
adb shell
su
cd data/local/tmp					
./frida-server-12.8.0-android-x86	

启动之后命令行会卡在这里,注意不要关闭,另开一个cmd窗口进行操作
在这里插入图片描述
2. 切换到objection1.8.4环境(frida=12.8.0 frida-tools=5.4.0 python=3.7.16)

conda activate objection1.8.4
frida version

在这里插入图片描述
3. objection注入

objection -g com.example.ndktest2 explore

objection会自动搜寻该app并启动注入
在这里插入图片描述
4. hook函数

android hooking watch class_method com.example.ndktest2.MainActivity.Encrypt --dump-args --dump-backtrace --dump-return

在这里插入图片描述
hook之后在app输入框内随便输入点什么,点击登录,objection会给出hook到的返回值YouaretheB3ST
在这里插入图片描述
输入YouaretheB3ST即可成功登录
在这里插入图片描述

六. 总结

这题前前后后一个多月终于解决了,虽然是个简单题目但是为了得到答案并不简单
安卓逆向学习之路漫漫,还需多学习多总结多动手
强烈推荐学习陈佳林老师的《安卓Frida逆向与抓包实战》

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis简介

Redis是基于内存,也可以基于磁盘持久化nosql数据库,使用c语言开发。 数据存储结构:key-value 安装环境准备 Redis使用c语言开发,需要使用gcc编译程序进行编译。 1) 安装gcc a) 从磁盘镜像中进行安装:&…

决策树分类算法

#CSDN AI写作助手创作测评 目录 ID3算法 1.算法原理 2.代码实现 3.ID3算法的优缺点分析 C4.5算法 1.原理 2.优缺点 心得感受 决策树表示方法是应用最广泛的逻辑方法之一,它从一组无次序、无规则的事例中推理出决策树表示形式的分类规则。在决策树的内部…

Java集合详解

集合详解 1、集合,也可以说是容器。由两大接口派生而来,一个是collection,主要用于存储单一元素;另一个是map接口,主要用于存储键值对。 Collection接口 Map接口 2、集合和数组 在之前我们保存多个数据可以使用数组…

Tcl常用命令备忘录-正则命令篇

正则表达式是一种用于匹配、查找、替换文本中特定模式的工具。在Tcl脚本中,可以使用正则表达式对字符串进行匹配、查找和替换。 regexp 语法: regexp ?选项? 正则表达式 字符串 ?变量1 变量2 ...? 其中,?选项?为可选项,…

Spring Security OAuth2授权原理、流程与源码解读

文章目录 前言AuthorizationServerConfigurerAdapter(身份认证服务配置适配器)OAuth2AuthorizationServerConfiguration(OAuth2授权服务配置) EnableAuthorizationServer(开启身份认证服务)AuthorizationServerEndpointsConfigurations身份认证服务站点配置类AuthorizationEndp…

Qt编写精美输入法(历时十年迭代/可换肤/支持Qt4/5/6/win/linux/mac/嵌入式等)

一、前言 大概是从2012年就开始研究用Qt写输入法,因为项目需要,嵌入式板子上,没有对应的输入法,当初使用过很多NVR,里面也是鼠标按下弹出输入法面板进行输入,可以切换数字和字母及中文,于是借鉴…

jmeter如何进行http压力测试

目录 前言: 1、添加线程组: 2、添加采样器: 3、添加监视器 压力测试知识说明 前言: JMeter是一个基于Java的开源压力测试工具,可用于评估Web应用程序的性能,包括HTTP、HTTPS、FTP、SOAP、Restful、JD…

Oracle-高版本SQL优化分析(bind mismatch)

背景: 接到用户报障说一套Oracle19c数据库近期出现insert语句执行变慢的情况,执行一次数据插入需要1秒的时间,而且问题发生的数据库是跑在一体机上面,数据插入正常不应该这么慢,需要分析插入慢的原因 问题: 数据库近期出现insert…

StarRocks 文章收集

StarRocks在58的实践 StarRocks在58的实践 - 墨天轮StarRocks在58的实践 --2022-06-08https://www.modb.pro/db/639611 StarRocks之系统架构 StarRocks之系统架构 - 墨天轮https://www.modb.pro/db/610300 StarRocks小规模集群部署最佳实践(1/2) 0016.S StarRocks小规模集…

2自由度并联仿生腿的制作

1. 运动功能说明 本文实例将实现2自由度并联仿生腿模组运动起来,模拟实现狗腿行走的动作。 2. 结构说明 2自由度并联仿生腿模组是由两个舵机驱动的,它的所有动作都将在两个舵机的配合运动下实现。 3. 运动原理说明 2自由度并联仿生腿模组运动的点位如下…

数据结构-各种树(二叉树、二叉查找树、平衡二叉树、红黑树、B树、B+树)

文章目录 二叉树二叉查找树平衡二叉树红黑树B树B树 二叉树 概念:二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一…

2023 年6月开发者调查统计结果——最流行的技术(1)

2023 年6月开发者调查统计结果——最流行的技术(1) 本文目录: 一、编程、脚本和标记语言 二、数据库 三、云平台 四、网络框架和技术 五、其他框架和库 六、其他工具 七、集成开发环境 八、异步工具 九、同步工具 ​十、操作系统 …

端午出行电脑没网怎么办?无线网卡解决网络问题

无线网卡是一种可以让电脑或其他设备通过无线信号连接网络的硬件设备,无线网卡有多种类型和接口,例如USB无线网卡,PCI-E无线网卡,PCMCIA无线网卡等。端午出行在即,不妨看看驱动人生准备的无线网卡攻略,让大…

基于Python的招聘信息可视化系统,附源码

文章目录 1 简介2 技术栈3 总体设计3.1 系统结构3.2 数据库设计3.2.1 数据库实体3.2.2 数据库表设计 4 运行设计4.1 招聘热门行业分析4.2热门岗位分析界面4.3招聘岗位学历分析界面4.4岗位分布分析界面 5 源码下载 1 简介 基于Python的招聘信息可视化系统,通过对招聘数据进行分…

MFC扩展库BCGControlBar Pro v33.5亮点 - Ribbon Bar等全新升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版 v33.5已正式发布了,此版本包含了Ribbon(功能区)自定义…

Linux国产操作系统,UCA-系统工程师学习必备技能,使用dpkg管理软件包、apt命令、内网获取依赖包及源码安装

目录 ​编辑 1.使用dpkg管理软件包 2.apt命令 3.内网获取依赖包 4.源码安装 1.使用dpkg管理软件包 第一种方法当然可以上网搜索软件安装包,下载然后解压成软件。 第二种也就是我接下来要介绍的,dpkg 命令,dpkg 全称叫做debian package…

步长(stride) | 填充(padding) | 扩长(dilation)

这几个名词中文真的好难翻译,不是大佬就不要造名词了,后面还是老老实实用英文吧!(标题是机翻的 。) stride stride 很好理解,stride 就是卷积核移动的步长。 如下图: stride1 stride2 paddi…

技术新动向 | 谷歌云大举扩展安全 AI 生态系统

【本文由 Cloud Ace 整理发布, Cloud Ace 是谷歌云全球战略合作伙伴,拥有 300 多名工程师,也是谷歌最高级别合作伙伴,多次获得 Google Cloud 合作伙伴奖。作为谷歌托管服务商,我们提供谷歌云、谷歌地图、谷歌办公套件…

【设计模式】SpringBoot优雅使用策略模式

文章目录 1.概述1.1.简述策略模式 2.实现方法2.1.实现思路2.2.实现代码2.3.策略拓展2.4.执行调用 3.总结 1.概述 本篇文章主要会描述SpringBoot与策略模式的结合使用,因为不涉及到理论部分,所以在阅读本篇之前,需要对策略模式的理论已经有了…

HarmonyOS学习路之开发篇—Java UI框架(JS FA调用Java PA)

JS FA调用Java PA机制 使用兼容JS的类Web开发范式的方舟开发框架提供了JS FA(Feature Ability)调用Java PA(Particle Ability)的机制,该机制提供了一种通道来传递方法调用、处理数据返回以及订阅事件上。 当前提供Ab…