BUUCTF-RE-JAVA逆向解密
Posted Nicky_啦啦啦是阿落啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BUUCTF-RE-JAVA逆向解密相关的知识,希望对你有一定的参考价值。
一、
.class文件用jd-gui打开
二、分析
1 import java.io.PrintStream; 2 import java.util.ArrayList; 3 import java.util.Scanner; 4 5 public class Reverse 6 { 7 public static void main(String[] args) 8 { 9 Scanner s = new Scanner(System.in); 10 System.out.println("Please input the flag :"); 11 String str = s.next(); 12 System.out.println("Your input is :"); 13 System.out.println(str); 14 char[] stringArr = str.toCharArray(); 15 Encrypt(stringArr); 16 } 17 18 public static void Encrypt(char[] arr) 19 { 20 ArrayList<Integer> Resultlist = new ArrayList(); 21 for (int i = 0; i < arr.length; i++) 22 { 23 int result = arr[i] + ‘@‘ ^ 0x20; 24 Resultlist.add(Integer.valueOf(result)); 25 } 26 int[] KEY = { 180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65 }; 27 ArrayList<Integer> KEYList = new ArrayList(); 28 for (int j = 0; j < KEY.length; j++) { 29 KEYList.add(Integer.valueOf(KEY[j])); 30 } 31 System.out.println("Result:"); 32 if (Resultlist.equals(KEYList)) { 33 System.out.println("Congratulations!"); 34 } else { 35 System.err.println("Error!"); 36 } 37 } 38 }
第23行flag做了 arr[i]+‘@‘ ^ 0x20;
第26行可以看到 int[] KEY = { 180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65 };
key = [180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65] flag = ‘‘ for i in key: flag+=chr(i-ord(‘@‘)^0x20) print(flag)
* chr是将ascii码转字符 ord是将字符转ascii码
三、flag
flag{This_is_the_flag_!}
以上是关于BUUCTF-RE-JAVA逆向解密的主要内容,如果未能解决你的问题,请参考以下文章
android逆向开发工程师需要掌握的技能--实习一个月总结报告
Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段
JS 逆向 SMZDM 的登录加密,你学过全文扣JS代码解密吗?
Android 逆向Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )(代码片段
Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段
Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段