Android逆向题解-boomshakalaka-3-难度5
这个app 是一个cocos游戏,没有用脚本实现,纯c++实现。
题目描述:play the game, get the highest score
题目要求是玩游戏得到最高分就可以得到flag,是写到配置文件的,初始flag值看着是base编码的。


核心代码在so里面的ControlLayer::updateScore函数
判断a2的值然后往配置文件DATA字段写入数据
if ( a2 <= 0x3B9ACA00 ){v4 = cocos2d::CCUserDefault::sharedUserDefault(this);sub_3A34D8(v21, &byte_3F92A0, v19);cocos2d::CCUserDefault::getStringForKey(v20, v4, &v33, v21);v5 = sub_3A1DDC(v21);if ( a2 == &dword_64 ){v6 = cocos2d::CCUserDefault::sharedUserDefault(v5);std::operator+<char>(v22, v20, "MW");cocos2d::CCUserDefault::setStringForKey(v6, &v33, v22);v7 = v22;}else if ( a2 == &stru_254.st_value ){v8 = cocos2d::CCUserDefault::sharedUserDefault(v5);std::operator+<char>(v23, v20, "Rf");cocos2d::CCUserDefault::setStringForKey(v8, &v33, v23);v7 = v23;}else if ( a2 == &stru_2B4.st_size ){v9 = cocos2d::CCUserDefault::sharedUserDefault(v5);std::operator+<char>(v24, v20, "Rz");cocos2d::CCUserDefault::setStringForKey(v9, &v33, v24);v7 = v24;}else if ( a2 == &stru_BB4.st_value ){v10 = cocos2d::CCUserDefault::sharedUserDefault(v5);std::operator+<char>(v25, v20, "Bt");cocos2d::CCUserDefault::setStringForKey(v10, &v33, v25);v7 = v25;}else if ( a2 == &stru_15D4.st_info ){v11 = cocos2d::CCUserDefault::sharedUserDefault(v5);std::operator+<char>(v26, v20, "RV");cocos2d::CCUserDefault::setStringForKey(v11, &v33, v26);v7 = v26;}else if ( a2 == &stru_26A4.st_size ){v12 = cocos2d::CCUserDefault::sharedUserDefault(v5);std::operator+<char>(v27, v20, "9Z");cocos2d::CCUserDefault::setStringForKey(v12, &v33, v27);v7 = v27;}else if ( a2 == &stru_4644.st_info ){v13 = cocos2d::CCUserDefault::sharedUserDefault(v5);std::operator+<char>(v28, v20, "b1");cocos2d::CCUserDefault::setStringForKey(v13, &v33, v28);v7 = v28;}else if ( a2 == &stru_15AD4.st_info ){v14 = cocos2d::CCUserDefault::sharedUserDefault(v5);std::operator+<char>(v29, v20, "Vf");cocos2d::CCUserDefault::setStringForKey(v14, &v33, v29);v7 = v29;}else if ( a2 == &stru_18694.st_info ){v15 = cocos2d::CCUserDefault::sharedUserDefault(v5);std::operator+<char>(v30, v20, "S2");cocos2d::CCUserDefault::setStringForKey(v15, &v33, v30);v7 = v30;}else{if ( a2 != 1000000000 ){
LABEL_25:v17 = cocos2d::CCString::createWithFormat("%d", a2);(*(**(v18 + 66) + 428))(*(v18 + 66), *(v17 + 20));return sub_3A1DDC(v20);}v16 = cocos2d::CCUserDefault::sharedUserDefault(v5);std::operator+<char>(v31, v20, "4w");cocos2d::CCUserDefault::setStringForKey(v16, &v33, v31);v7 = v31;}
逻辑就是根据玩游戏的得分拼接上面函数里面的的字符串;
玩几次之后查看配置文件数据base64解码可以看到出现了部分flag,对比上面的代码补齐字段;
base64解码就出来了。

相关文章:
Android逆向题解-boomshakalaka-3-难度5
这个app 是一个cocos游戏,没有用脚本实现,纯c实现。 题目描述:play the game, get the highest score 题目要求是玩游戏得到最高分就可以得到flag,是写到配置文件的,初始flag值看着是base编码的。 核心代码在so里面的ControlLay…...
Linux(Ubuntu 22.04)系统中固定串口
Linux(Ubuntu 22.04)系统中固定串口 文章目录 前言正文查看linux串口信息修改udev固化串口校验是否修改完成 注意 前言 在Linux系统中固定串口(通常指的是串行通信接口,如/dev/ttyS0或/dev/ttyUSB0)的原因有几个方面&…...
LeetCode - 209 - 长度最小的子数组
力扣209题 题目描述:长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组&…...
探索空间计算与VR中的手势跟踪新纪元:XHand框架详解
在虚拟现实(VR)和扩展现实(XR)技术日新月异的今天,手势跟踪作为实现沉浸式体验的关键技术之一,正逐步从概念走向成熟。今天,我们将深入探索一个创新的框架——XHand,它以其卓越的性能和先进的技术亮点,为空间计算与VR领域的手势跟踪带来了全新的解决方案。 XHand框架…...
leetcode + 项目复习
上午 Leetcode算法 参考文章——代码随想录 1. KMP 概念 主要应用 字符串匹配 主要思想 根据之前匹配的信息,当发现字符串不匹配时,避免从头开始匹配。 什么是前缀表(next数组、prefix) 是用来回退的,当文本串和…...
树莓派4/5:设置apt、pip、conda首选清华镜像源
一、教程简介 在中国大陆地区,使用清华镜像源可以显著缩短资源下载时间。 本教程介绍如何将清华镜像源设置为树莓派的apt、pip、conda下载的首选项(默认项)。其中,apt和pip为树莓派系统自带,conda则需要安装miniforg…...
NoSQL 之Redis集群模式
目录 案例概述 redis工作模式 主从模式 哨兵模式 redis cluster模式 Redis集群介绍 Redis集群的优势 Redis集群的实现方法 Redis-Cluster数据分片 Redis-Cluster的主从复制模型 Redis集群部署 案例部署 安装redis 检查redis的状态 修改配置文件 重启启动redis服…...
oracle rac
1、app连接oracle rac集群 连接到 Oracle RAC(Real Application Clusters)的多种配置方式 1. 使用 JDBC 连接字符串: 使用 JDBC 连接字符串是连接 Oracle RAC 的常见方式。连接字符串的格式如下: jdbc:oracle:thin:(DESCRIPTION…...
计算机毕业设计Python深度学习房价预测 房价可视化 链家爬虫 房源爬虫 房源可视化 卷积神经网络 大数据毕业设计 机器学习 人工智能 AI
Python深度学习房价预测系统开题报告 一、研究背景与意义 随着城市化进程的加速和房地产市场的不断发展,房价成为影响人们生活质量的重要因素之一。准确预测房价不仅有助于政府制定科学的房地产政策,还能为开发商提供市场参考,同时帮助购房…...
【Linux】学习Linux,需要借助具象化的思维
指令与图形化界面 导读一、命令行与图形化界面二、命令行与图形化界面的发展历程1.2.1 打字机的起源1.2.2 肖尔斯和格利登型打字机1.2.3 鼠标的发明1.2.4 图形化界面(GUI)的发展 三、命令行与图形化之间的联系3.1 图形化界面的人机交互3.2 命令行界面的人…...
R语言贝叶斯方法在生态环境领域技术教程
原文链接:R语言贝叶斯方法在生态环境领域技术教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247612056&idx5&snb170122cf5052cc7cb2d858606b9f158&chksmfa82777fcdf5fe69eec092410530e2900c98bcbb84e3d33c823705c948b4db96545bf282747a…...
mojo实现高阶函数(algorithm)
functional 实现高阶函数。 您可以从 algorithm 包导入这些 API。例如: from algorithm import map别名: Static1DTileUnitFunc = fn[Int](Int, /) capturing -> None: Signature of a 1d tiled function that performs some work with a static tile size and an off…...
先进制造aps专题二十四 云平台排产aps的方案设计
云平台排产aps的方案设计 针对对象是有排产需求无需定制的中小型工厂企业 一 网站功能(b/s架构) 1 前端界面 客户登录 排产项目管理 基础数据(产品资料,产品工艺,工作日历,生产资源,工艺能力…...
JavaScript 逆向技巧总结
本节属于知识总结,只是对思路的梳理,不对具体内容进行展开 JS 逆向可以分为三大部分: 寻找入口, 调试分析, 模拟执行 寻找入口: 这是非常关键的一步,逆向在大部分情况下就是找一些加密参数到底…...
linux反向代理原理:帮助用户更好地优化网络架构
Linux反向代理原理详解 反向代理是一种在网络架构中常用的技术,尤其在Linux环境下被广泛应用。它可以帮助实现负载均衡、安全防护和请求缓存等功能。本文将深入探讨Linux反向代理的原理、工作机制以及其应用场景。 1. 什么是反向代理 反向代理是指代理服务器接收客…...
开源DevOps工具链管理:DevStream
DevStream:简化DevOps,加速创新- 精选真开源,释放新价值。 概览 DevStream,一个开源的DevOps工具链管理器(DTM),由merico-dev团队精心打造,现已加入CNCF大家庭,并在devs…...
图数据库框架及其支持的开发语言和应用场景
图数据库框架及其支持的开发语言和应用场景 1. Neo4j 类型:原生图数据库特点:最流行的图数据库之一,使用Cypher查询语言,支持ACID事务,具有丰富的图算法库。支持的开发语言:Java, Python, JavaScript, Go, .NET, Ruby, PHP等。驱动和库:Neo4j Java Driver, Py2neo (Pyt…...
【Linux 18】核心转储
文章目录 🌈 一、什么是核心转储🌈 二、如何启动核心转储🌈 三、为什么有核心转储 🌈 一、什么是核心转储 核心转储 (Core Dump):当一个进程异常终止时,会在触发进程崩溃的目录下生成一个以进程 pid 命名的…...
远程传输文件至服务器—spc 传输
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、SPC是什么?二、使用步骤1.进入 windows 客户端需要传输文件的目录。2.在该目录的路径栏输入 cmd,回车打开终端。3.确定服务器端 IP …...
HarmonyOS.FA开发流程
开发环境配置 1、DevEco Studio的安装 2、DevEcoStudio模拟运行工程:运行Tools->Device Manager,使用已认证的HW开发者联盟帐号Login(在DP平台申请测试者权限),点击"允许"授权,选择一个设备运…...
seo站长论坛讨论哪些SEO热点话题_seo站长论坛如何运营自己的网站
SEO站长论坛讨论哪些SEO热点话题 在当前数字化竞争激烈的市场环境中,SEO(搜索引擎优化)已经成为每个网站运营者必不可少的技能。SEO站长论坛作为交流与分享的重要平台,各类热点话题层出不穷。在SEO站长论坛上,哪些话题…...
CTFHub Web技能树通关笔记:用BurpSuite和cURL实战HTTP协议五大关卡
CTFHub Web技能树通关笔记:用BurpSuite和cURL实战HTTP协议五大关卡 当你第一次面对CTFHub的Web技能树时,那些关于HTTP协议的挑战关卡可能会让你感到既兴奋又迷茫。作为Web安全的基础,HTTP协议的理解和工具使用能力直接决定了你能否顺利通关。…...
揭秘MiniMax-Remover:如何通过两阶段优化实现视频物体移除的高效与精准
1. MiniMax-Remover:视频编辑领域的"魔法橡皮擦" 想象一下,你刚拍完一段完美的旅行vlog,却发现画面角落有个碍眼的垃圾桶;或者你下载了一段珍贵的纪录片,却被平台水印破坏了观影体验。传统视频编辑软件处理这…...
SparkFun HyperDisplay SSD1309 OLED驱动库详解
1. 项目概述SparkFun HyperDisplay SSD1309 是 SparkFun Electronics 针对基于 SSD1309 显示驱动芯片的 OLED 模块推出的标准化嵌入式显示控制库。该库并非独立实现,而是作为 SparkFun HyperDisplay 显示抽象框架(Display Abstraction Framework…...
OpenClaw多任务调度:千问3.5-9B并行处理多个自动化流程
OpenClaw多任务调度:千问3.5-9B并行处理多个自动化流程 1. 为什么需要多任务调度? 去年夏天,我同时接手了三个技术项目:一个爬虫数据清洗任务、一个Markdown文档自动化整理工具,还有一个需要定期检查服务器日志的监控…...
Serde JSON Map对象终极指南:BTreeMap与IndexMap性能深度对比
Serde JSON Map对象终极指南:BTreeMap与IndexMap性能深度对比 【免费下载链接】json Strongly typed JSON library for Rust 项目地址: https://gitcode.com/gh_mirrors/jso/json Serde JSON 是 Rust 生态中最流行的 JSON 序列化库,提供了强大的类…...
告别串口打印!用STM32F103C8T6和0.96寸OLED打造迷你温湿度计
用STM32F103C8T6和0.96寸OLED打造极简温湿度监测终端 在创客圈里,总有些小项目能让人眼前一亮——比如把枯燥的传感器数据变成桌面上的精致显示装置。今天我们要做的,就是用一个STM32F103C8T6开发板、0.96寸OLED屏幕和DHT22传感器,打造一个完…...
Linux下CST8XX触摸屏驱动调试实战:从I2C波形异常到内核崩溃的完整解决记录
Linux下CST8XX触摸屏驱动调试实战:从I2C波形异常到内核崩溃的完整解决记录 在嵌入式Linux开发中,触摸屏驱动的调试往往是最具挑战性的环节之一。本文将详细记录CST8XX系列电容触摸屏在Linux平台上的完整调试过程,涵盖从硬件信号异常到内核崩溃…...
别再硬扛内存了:用Gensim的Word2Vec分批次处理超大语料库(附Python代码)
高效处理海量文本:Gensim Word2Vec分批次训练实战指南 当面对数十GB的文本数据时,传统的一次性加载方法往往会让内存不堪重负。本文将深入探讨如何利用Gensim库的Word2Vec实现分批次训练,突破内存限制,同时保持模型质量。 1. 大…...
Linux-特殊权限SUID,SGID,SBIT
SUIDSet UID:当字母s出现在文件拥有这的x权限位上的时候,例如/usr/bin/passwd这个文件的权限是[-rwsr-xr-x],此时就被称为Set UID,简称为SUID的特殊权限。SUID的权限有以下这样的功能和限制。SUID权限仅对二进制程序(binary progr…...
