XCTF-boomshakalaka-3
2024-08-27 08:40:33
这题讲道理出的挺脑洞的,apk直接拖入jeb打开,找到主活动
这里有两个方法,一个是onCreate()方法,还有一个是onCreateView()方法
onCreate()方法调用了a这个对象的d方法,还调用了两次,onCreateView()方法调用是在onCreate()方法调用后才会调用
里面也调用了a对象的d方法,现在跟进这个方法看看
它里面调用了一个getSharedPreferences()方法,这个方法是会返回一个SharedPreference对象的,这个对象在安卓开发中
用途就是保存一些配置信息的,不过是以键值对的形式保存在xml文件中,调用edi()方法后,返回一个edit对象,调用putString()方法
将键值对保存到xml文件中,这里d方法,是先将data这个key所对应的值弄出来,然后和我们传入的字符串进行一个拼接,之后再保存
到xml文件中,java层仔细看了半天发现,根本没有涉及到分数的函数,这里就是用ida,打开它的so文件
搜索一下分数的字符串。
发现好像是每到一定分数,都会往xml文件中添加对应的字符串,这里我先玩了一下,观察了一下xml文件的内容,以此来验证一下我的猜想
那些通过Sharepreference对象保存的xml文件是在data/data/对应app包名/shared_prefs这个文件下的
发现每次我刷新最高分数,都会在分数0的基础上所对应的字符串上,添加我ida里面看到的字符串,并每次结束都是以dz99结尾
那么我大概就可以直接拼凑出字符串了,然后为什么联想到base64呢,因为onCreate()方法里面是放进来的一个是base64的编码后的东西
所以可以联想到,这里真的脑洞
最新文章
- linq to js使用汇总
- jquery和css3实现滑动导航菜单
- jquery中获取元素的几种方式小结
- .net framework 3.5sp1 安装不成功
- MySQL数据库备份命令
- iOS---内存优化
- Firefly Http通信简单介绍
- 定时器NSTimer的用法
- 【POJ2114】Boatherds 树分而治之
- NIO 入门
- 转载_2016,Java成神初年
- Java——类和对象
- vue-cli创建的项目的目录结构及说明
- React文档(十二)组合vs继承
- 特大数字之和,返回结果是字符串(考虑到数字特别大,如果相加会产生e)
- Asp.Net Core基于Cookie实现同域单点登录(SSO)
- centos7及服务器端安装python2.7.13, setuptools, pip
- BCS SET EMAIL
- 第三节 java 函数
- sublime text 3 使用简介