安卓逆向从入门到入土之又双叒一道CTF题
时间:2019-10-22
本文章向大家介绍安卓逆向从入门到入土之又双叒一道CTF题,主要包括安卓逆向从入门到入土之又双叒一道CTF题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
小伙伴发来一道安卓的ctf题目,简单记录一下解题过程,一个apk和安装截图,我就不安装了,使用JEB或者反编译为jar用jd-gui打开都行,定位到MainActivity下:
关键代码中的关键判断:
要想验证成功,str.charAt(j) 的值必须等于 paramAnonymousView.charAt(j) ^ i,跟踪str、j、paramAnonymousView和i的值,画个图:
所以,成功的条件是:用户的输入等于versionName的值的每一位和versionCaode异或的结果。查一下getPackageManager()的getPackageInfo():
所以,com.example.yaphetshan.tencentgreat和 16384并不是versionName和versionCode的值(可能会造成误区),浏览一下,在BuildConfig中:
即X<cP[?PHNB<P?aj的每一位和15进行异或运算,简单写个py如下:
a=0x0f #15 b=[0x58,0x3c,0x63,0x50,0x5b,0x3f,0x50,0x48,0x4e,0x42,0x3c,0x50,0x3f,0x61,0x6a] #X<cP[?PHNB<P?aj flag='' for j in b: flag +=chr(a^j) print(flag)
为啥要一位加一位输出,不知道为啥,感觉看起来好舒服的亚子。。。
结果为W3l_T0_GAM3_0ne。
原文地址:https://www.cnblogs.com/Rakjong/p/11719287.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 比较JavaScript中的数据结构(数组与对象)
- 9 个JavaScript 技巧
- [已解决]报错:XGBoostError: XGBoost Library (libxgboost.dylib) could not be loaded.
- 2.3 spring5源码---spring ioc 加载配置类的源码
- Tree Shaking概念详解
- Canvas基础教程(章节1)
- Canvas基础教程(章节2)
- CSS文件夹
- Canvas基础教程(章节3)
- 口算训练 HDU - 6287
- Codeforces Round #674 (Div. 3) A ~ F 详细讲解
- C# 生成chart图表的三种方式
- C# Task.Run调用外部参数
- Git全方位指南,即用即查就可
- Python入门教程笔记(二)控制语句