首页 > 其他分享 >【Android 逆向】【攻防世界】APK逆向

【Android 逆向】【攻防世界】APK逆向

时间:2023-03-17 12:44:06浏览次数:43  
标签:userName 逆向 return String StringBuilder APK append Android digest

1. apk安装到手机,提示输入flag

2. jadx打开apk

定位到checkSN方法

public boolean checkSN(String userName, String sn) {
    if (userName != null) {
        try {
            if (userName.length() == 0 || sn == null || sn.length() != 22) {
                return false;
            }
            MessageDigest digest = MessageDigest.getInstance("MD5");
            digest.reset();
            digest.update(userName.getBytes());
            byte[] bytes = digest.digest();
            String hexstr = toHexString(bytes, "");
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < hexstr.length(); i += 2) {
                sb.append(hexstr.charAt(i));
            }
            String userSN = sb.toString();
            return new StringBuilder().append("flag{").append(userSN).append("}").toString().equalsIgnoreCase(sn);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return false;
        }
    }
    return false;
}

这里做了一个md5计算,然后每进两步取一个字符来进行比较,这里直接把算法扣出来放到IDEA里取跑一下即可拿到结果
Main.java

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello world!");
        checkSN("Tenshine", "hello");
    }

    public static boolean checkSN(String userName, String sn) {
        if (userName != null) {
            try {
                if (userName.length() == 0 || sn == null) {
                    return false;
                }
                MessageDigest digest = MessageDigest.getInstance("MD5");
                digest.reset();
                digest.update(userName.getBytes());
                byte[] bytes = digest.digest();
                String hexstr = toHexString(bytes, "");
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < hexstr.length(); i += 2) {
                    sb.append(hexstr.charAt(i));
                }
                String userSN = sb.toString();
                System.out.println(userSN);
                return new StringBuilder().append("flag{").append(userSN).append("}").toString().equalsIgnoreCase(sn);
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
                return false;
            }
        }
        return false;
    }

    private static String toHexString(byte[] bytes, String separator) {
        StringBuilder hexString = new StringBuilder();
        for (byte b : bytes) {
            String hex = Integer.toHexString(b & 255);
            if (hex.length() == 1) {
                hexString.append('0');
            }
            hexString.append(hex).append(separator);
        }
        return hexString.toString();
    }
}

得到flag : bc72f242a6af3857

标签:userName,逆向,return,String,StringBuilder,APK,append,Android,digest
From: https://www.cnblogs.com/gradyblog/p/17226239.html

相关文章

  • 信息系统优化、解构、逆向的建议
    信息系统优化、解构、逆向是一种分析和改进信息系统的方法。下面我将分别介绍它们的基本思路和方法。1,信息系统优化信息系统优化是指通过对系统进行分析和改进,以提高其......
  • Android轻量级数据SparseArray详解
    SparseArray是Android中特有的数据结构,他的几个重要的特点;以键值对形式进行存储,基于二分查找,因此查找的时间复杂度为0(LogN);.由于SparseArray中Key存储的是数组形式,......
  • Android Studio预览Markdown文件办法
     01、安装Markdown插件打开File>>Settings>>Plugins>>Marketplace菜单,输入Markdown搜索,点击Install安装。02、下载ChooseRuntime插件JetBrains插件市场......
  • android studio之常用基本控件的使用
    转自:(7条消息)androidstudio之常用基本控件的使用_androidstudio控件栏_PPYY3344的博客-CSDN博客在Android开发中,需要使用的控件很多,除了TextView、Button、EditText......
  • Android android:exported="true" 属性
    android:exported="true"是什么android:exported其实并不是Android12的新属性,在前面的版本也可以看见它。它是Android中的四大组件Activity,Service,Provider,Receiver四......
  • 【Android 逆向】【攻防世界】android2.0
    这是一道纯算法还原题1.apk安装到手机,提示输入flag,看来输入就是flag2.jadx打开apk查看this.button.setOnClickListener(newView.OnClickListener(){//fr......
  • 网络对抗 Exp1-逆向破解实验
    目录逆向及Bof基础实践目标实践内容实践思路BOF原理基础知识准备实验过程直接修改程序机器指令,改变程序执行流程通过构造输入参数,造成BOF攻击,改变程序执行流注入Shellcode......
  • Android代码静态检查(lint、Checkstyle、ktlint、Detekt)
    Android代码静态检查(lint、Checkstyle、ktlint、Detekt)在​​Android​​项目开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。静态代码分析工具能够在代......
  • 【Android 逆向】【攻防世界】基础android
    1.下载并安装apk,提示要输入密码2.apk拖入到jadx中看一下this.login.setOnClickListener(newView.OnClickListener(){//fromclass:com.example.test.ctf02.MainAc......
  • Android FBE
    参考文档:https://github.com/novelinux/android/wiki/Android-FBE前面两个章节来自上述链接,在此致以谢意!AndroidFBE简介名称:FBE,File-BasedEncryption,基于文件的加......