android 逆向题目,SafeBox一道简单的安卓逆向题
先安卓测试一下,发现输入字符串包含非数字字符时,会报错,然后用procyon-decompiler反汇编,下面我贴出两个重要文件:
com/geekerchina/hi/MainActivity.java
//
// Decompiled by Procyon v0.5.30
//
package com.geekerchina.hi;
import android.view.MenuItem;
import android.view.Menu;
import android.view.View;
import android.view.View$OnClickListener;
import android.widget.EditText;
import android.widget.Button;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(final Bundle bundle) {
super.onCreate(bundle);
this.setContentView(2130968603);
((Button)this.findViewById(2131427415)).setOnClickListener((View$OnClickListener)new View$OnClickListener() {
final /* synthetic */ EditText val$Et1 = (EditText)this.findViewById(2131427414);
public void onClick(final View view) {
final int int1 = Integer.parseInt(this.val$Et1.getText().toString());
if (int1 > 10000000 && int1 < 99999999) {
int n = 1;
int n2 = 10000000;
final boolean b = true;
if (Math.abs(int1 / 1000 % 100 - 36) == 3 && int1 % 1000 % 584 == 0) {
int n3 = 0;
int n4;
while (true) {
n4 = (b ? 1 : 0);
if (n3 >= 4) {
break;
}
if (int1 / n % 10 != int1 / n2 % 10) {
n4 = 0;
break;
}
n *= 10;
n2 /= 10;
++n3;
}
if (n4 == 1) {
this.val$Et1.setText((CharSequence)("NJCTF{" + (char)(int1 / 1000000) + (char)(int1 / 10000 % 100) + (char)(int1 / 100 % 100) + "f4n}"));
}
}
}
}
});
}
public boolean onCreateOptionsMenu(final Menu menu) {
this.getMenuInflater().inflate(2131558400, menu);
return true;
}
public boolean onOptionsItemSelected(final MenuItem menuItem) {
return menuItem.getItemId() == 2131427439 || super.onOptionsItemSelected(menuItem);
}
}
com/geekerchina/hi/androidTest.java
//
// Decompiled by Procyon v0.5.30
//
package com.geekerchina.hi;
import android.view.MenuItem;
import android.view.Menu;
import android.view.View;
import android.view.View$OnClickListener;
import android.widget.EditText;
import android.widget.Button;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class androidTest extends AppCompatActivity
{
@Override
protected void onCreate(final Bundle bundle) {
super.onCreate(bundle);
this.setContentView(2130968604);
((Button)this.findViewById(2131427415)).setOnClickListener((View$OnClickListener)new View$OnClickListener() {
final /* synthetic */ EditText val$Et1 = (EditText)this.findViewById(2131427414);
public void onClick(final View view) {
final int int1 = Integer.parseInt(this.val$Et1.getText().toString());
if (int1 > 10000000 && int1 < 99999999) {
int n = 1;
int n2 = 10000000;
final boolean b = true;
if (Math.abs(int1 / 1000 % 100 - 36) == 3 && int1 % 1000 % 584 == 0) {
int n3 = 0;
int n4;
while (true) {
n4 = (b ? 1 : 0);
if (n3 >= 3) {
break;
}
if (int1 / n % 10 != int1 / n2 % 10) {
n4 = 0;
break;
}
n *= 10;
n2 /= 10;
++n3;
}
if (n4 == 1) {
this.val$Et1.setText((CharSequence)("NJCTF{have" + (char)(int1 / 1000000) + (char)(int1 / 10000 % 100) + (char)(int1 / 100 % 100 + 10) + "f4n}"));
}
}
}
}
});
}
public boolean onCreateOptionsMenu(final Menu menu) {
this.getMenuInflater().inflate(2131558400, menu);
return true;
}
public boolean onOptionsItemSelected(final MenuItem menuItem) {
return menuItem.getItemId() == 2131427439 || super.onOptionsItemSelected(menuItem);
}
}
上面的代码已经很明确了,我们只需要爆破就行,不必进行代码分析,下面是我的爆破代码:
main.java
public class main {
public static void main(String[] args) {
int int1;
System.out.println("MainActivity.java:");
for (int1 = 10000000; int1 < 99999999; int1++) {
if (int1 > 10000000 && int1 < 99999999) {
int n = 1;
int n2 = 10000000;
final boolean b = true;
if (Math.abs(int1 / 1000 % 100 - 36) == 3 && int1 % 1000 % 584 == 0) {
int n3 = 0;
int n4;
while (true) {
n4 = (b ? 1 : 0);
if (n3 >= 4) {
break;
}
if (int1 / n % 10 != int1 / n2 % 10) {
n4 = 0;
break;
}
n *= 10;
n2 /= 10;
++n3;
}
if (n4 == 1) {
System.out.println("NJCTF{" + (char) (int1 / 1000000) + (char) (int1 / 10000 % 100)
+ (char) (int1 / 100 % 100) + "f4n}");
}
}
}
}
System.out.println();
System.out.println("androidTest.java:");
for (int1 = 10000000; int1 < 99999999; int1++) {
if (int1 > 10000000 && int1 < 99999999) {
int n = 1;
int n2 = 10000000;
final boolean b = true;
if (Math.abs(int1 / 1000 % 100 - 36) == 3 && int1 % 1000 % 584 == 0) {
int n3 = 0;
int n4;
while (true) {
n4 = (b ? 1 : 0);
if (n3 >= 3) {
break;
}
if (int1 / n % 10 != int1 / n2 % 10) {
n4 = 0;
break;
}
n *= 10;
n2 /= 10;
++n3;
}
if (n4 == 1) {
System.out.println("NJCTF{have" + (char) (int1 / 1000000) + (char) (int1 / 10000 % 100)
+ (char) (int1 / 100 % 100 + 10) + "f4n}");
}
}
}
}
}
}
编译执行效果如下:
ex@Ex:~/test/unzip/out/com/geekerchina/hi$ javac main.java
ex@Ex:~/test/unzip/out/com/geekerchina/hi$ java main
MainActivity.java:
NJCTF{05#f4n}
androidTest.java:
NJCTF{have05-f4n}
NJCTF{have05if4n}
生成了3个flag,再根据题目给的提示:“flag格式NJCTF{xxx} 并且 xxx只包含[a-z][A-Z][0-9]”,就可以过滤掉两个错误的flag。
0
0
投票数
文章评分
android 逆向题目,SafeBox一道简单的安卓逆向题相关推荐
- 一道简单的CTF登录题题解
一.解题感受 这道题50分,在实验吧练习场算比较高分,而且通过率只有14%,比较低的水平. 看到这两个数据,一开始就心生惬意,实在不应该呀! 也是因为心态原因,在发现test.php之后,自以为在SQ ...
- jq 数组不重复_一道简单的数组遍历题,加上四个条件后感觉无从下手
题目描述 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数. 示例 1: 输入: ...
- 一道简单的sql语句题
全文共4371个字,22张图,预计阅读时间25分钟. 这是很早之前面的,第一次面数据分析的面试,当时还傻乎乎的以为数据分析和数据挖掘是一回事呢.结果才发现,数据分析岗位大多注重的是数据库的能力,比如s ...
- c语言求满足不等式的最小值,高手请进,请教一道简单的c语言题!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #include #include #include using namespace std; if ...
- Python等级考试中的一道简单的血压数据处理题
代码: 所处理的数据仅局部图所示 import pandas as pd import numpy as np txt = pd.read_table('C:/Users/ASUS/Desktop/血 ...
- CTF--信息技术对抗赛ISCC之安卓逆向分析
0x01 题目介绍 本题目是一道信息安全大赛上的安卓逆向题目,主要考察选手,逆向分析能力, 反汇编能力,安卓程序结构分析能力,以及常见的安全加密编码算法得能力.题 目下载 http://downloa ...
- CTF的一道安卓逆向
前几天打CTF时遇到的一道安卓逆向,这里简单的写一下思路 首先用jadx打开apk文件,找到simplecheck处(文件名是simplecheck),可以看到基本逻辑就是通过函数a对输入的内容进行判 ...
- android获取apk名称_安卓逆向——APK安装流程
制丨文生 整理丨阿星 很多学习安卓逆向的朋友大多都会卡在安卓apk上,今天小生就来给大家讲解一下,安装apk的流程,希望能帮助到大家. 安装方式: ⑴系统程序安装 ⑵通过Android市场安装 ⑶手机 ...
- 安卓逆向(Android)之二__《全民捕鱼》游戏内购破解
安卓逆向之二__<全民捕鱼>游戏内购破解 环境简介 系统:Android 4.4 工具:Windows 10 64bit 夜神模拟器 Android Killer Java ...
最新文章
- (八)java版spring cloud+spring boot 社交电子商务平台-消息总线(Spring Cloud Bus)
- MyBatis框架学习:<select>节点中的resultType和resultMap属性
- 机器学习(MACHINE LEARNING)灰色关联分析(GRA)
- Namespace declaration statement has to be the very first statement in the script
- C++实践参考——数组类运算的实现
- c语言头文件和源文件_C语言头文件防卫式声明
- 升级Struts2.5后使用DMI动态方法调用遇到问题
- Qt creator5.7 OpenCV249之中值滤波(含源码下载)
- android应用开发(23)---处理Activity状态更改
- Ramfs、rootfs 和initramfs
- 深入理解Java中四种创建对象的方式
- 58 集团面向亿级用户 IM 长连接服务设计与实践
- php 开源留言板,PHP开源多功能留言板(SyGuestBook)
- SQL2000置疑数据库修复
- 中学生怎样学计算机编程6,中学生学电脑编程有什么好处
- PS教程淘宝美工平面设计入门自学课 photoshop软件零基础视频大全
- Python matplotlib画图表
- 微信一键激活 设置开卡字段
- 优化iphone存储空间,以及优化iphone内存。
- 计算机日志文件事件ID,教程分享:如何在Windows上对用户配置文件服务事件ID进行故障排除!...
热门文章
- 重定向dup和dup2
- 计算机系统精品教程,_《计算机操作系统教程》课程教学课件(精品) 设备管理(88P).pdf...
- Android o NotificationManager.cancel()无效
- Java基础之接口与抽象类的区别
- 算法题 容斥原理-能被整除的数(Python)
- Ubuntu 20.04解决idea/ jetbrain系列产品 搜狗输入法/其他输入法 一直显示在左下角,不跟随打字的问题
- 【教程】ESP8266 连接到的免费的 EMQ X MQTT 服务器
- 算法——二进制小数转换
- 杭州市安全技术防范行业协会第八届(换届)会员大会暨第八届第一次理事、监事会议顺利召开...
- 通过编程,实现atof函数