先安卓测试一下,发现输入字符串包含非数字字符时,会报错,然后用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一道简单的安卓逆向题相关推荐

  1. 一道简单的CTF登录题题解

    一.解题感受 这道题50分,在实验吧练习场算比较高分,而且通过率只有14%,比较低的水平. 看到这两个数据,一开始就心生惬意,实在不应该呀! 也是因为心态原因,在发现test.php之后,自以为在SQ ...

  2. jq 数组不重复_一道简单的数组遍历题,加上四个条件后感觉无从下手

    题目描述 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数. 示例 1: 输入: ...

  3. 一道简单的sql语句题

    全文共4371个字,22张图,预计阅读时间25分钟. 这是很早之前面的,第一次面数据分析的面试,当时还傻乎乎的以为数据分析和数据挖掘是一回事呢.结果才发现,数据分析岗位大多注重的是数据库的能力,比如s ...

  4. c语言求满足不等式的最小值,高手请进,请教一道简单的c语言题!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #include #include #include using namespace std; if ...

  5. Python等级考试中的一道简单的血压数据处理题

    代码: 所处理的数据仅局部图所示 import pandas as pd import numpy as np txt = pd.read_table('C:/Users/ASUS/Desktop/血 ...

  6. CTF--信息技术对抗赛ISCC之安卓逆向分析

    0x01 题目介绍 本题目是一道信息安全大赛上的安卓逆向题目,主要考察选手,逆向分析能力, 反汇编能力,安卓程序结构分析能力,以及常见的安全加密编码算法得能力.题 目下载 http://downloa ...

  7. CTF的一道安卓逆向

    前几天打CTF时遇到的一道安卓逆向,这里简单的写一下思路 首先用jadx打开apk文件,找到simplecheck处(文件名是simplecheck),可以看到基本逻辑就是通过函数a对输入的内容进行判 ...

  8. android获取apk名称_安卓逆向——APK安装流程

    制丨文生 整理丨阿星 很多学习安卓逆向的朋友大多都会卡在安卓apk上,今天小生就来给大家讲解一下,安装apk的流程,希望能帮助到大家. 安装方式: ⑴系统程序安装 ⑵通过Android市场安装 ⑶手机 ...

  9. 安卓逆向(Android)之二__《全民捕鱼》游戏内购破解

    安卓逆向之二__<全民捕鱼>游戏内购破解 环境简介 系统:Android 4.4 工具:Windows 10 64bit 夜神模拟器         Android Killer Java ...

最新文章

  1. (八)java版spring cloud+spring boot 社交电子商务平台-消息总线(Spring Cloud Bus)
  2. MyBatis框架学习:<select>节点中的resultType和resultMap属性
  3. 机器学习(MACHINE LEARNING)灰色关联分析(GRA)
  4. Namespace declaration statement has to be the very first statement in the script
  5. C++实践参考——数组类运算的实现
  6. c语言头文件和源文件_C语言头文件防卫式声明
  7. 升级Struts2.5后使用DMI动态方法调用遇到问题
  8. Qt creator5.7 OpenCV249之中值滤波(含源码下载)
  9. android应用开发(23)---处理Activity状态更改
  10. Ramfs、rootfs 和initramfs
  11. 深入理解Java中四种创建对象的方式
  12. 58 集团面向亿级用户 IM 长连接服务设计与实践
  13. php 开源留言板,PHP开源多功能留言板(SyGuestBook)
  14. SQL2000置疑数据库修复
  15. 中学生怎样学计算机编程6,中学生学电脑编程有什么好处
  16. PS教程淘宝美工平面设计入门自学课 photoshop软件零基础视频大全
  17. Python matplotlib画图表
  18. 微信一键激活 设置开卡字段
  19. 优化iphone存储空间,以及优化iphone内存。
  20. 计算机日志文件事件ID,教程分享:如何在Windows上对用户配置文件服务事件ID进行故障排除!...

热门文章

  1. 重定向dup和dup2
  2. 计算机系统精品教程,_《计算机操作系统教程》课程教学课件(精品) 设备管理(88P).pdf...
  3. Android o NotificationManager.cancel()无效
  4. Java基础之接口与抽象类的区别
  5. 算法题 容斥原理-能被整除的数(Python)
  6. Ubuntu 20.04解决idea/ jetbrain系列产品 搜狗输入法/其他输入法 一直显示在左下角,不跟随打字的问题
  7. 【教程】ESP8266 连接到的免费的 EMQ X MQTT 服务器
  8. 算法——二进制小数转换
  9. 杭州市安全技术防范行业协会第八届(换届)会员大会暨第八届第一次理事、监事会议顺利召开...
  10. 通过编程,实现atof函数