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 类加载流程 )(代码片段