[0xFA-2021][Buuctf]Java逆向1
2021/9/30 20:11:11
本文主要是介绍[0xFA-2021][Buuctf]Java逆向1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java逆向
本周的题目非常之简单,所以不会像之前的解析那么详细。
直接给出解题步骤。
.class文件
.class文件是.java文件编译后的产物,它类似于C语言中的.c文件编译而成的.s文件。
我们写一个简单的C文件。
gcc main.c -S -o Main.s
然后在终端输入 more Main 就可以看到编译后的汇编文件。
那么.class文件和.s文件非常之类似,我们可以使用IDEA打开.class文件,
没有下载IDEA的同学可以在software.redrock.team下载。
02 使用IDEA打开文件
打开之后能直接看到java代码,IDEA自带反编译插件。
有同学可能会觉得我没学过java,做不出来。其实没关系的,代码的思路都是差不多的,基础的语法也是类似的。其实看两眼,和C语言也差不多了,
printf 函数还是printf函数
只不过多了System.out.
ArryList 看起来比较吓人,但其实也只是一个数组它和 int arr[]的区别在于ArryList是动态数组并且有更多的功能。比如ResultList.add(result)可以方便的向数组的加入一个新元素,而不用像C语言需要指定下标来加元素。
代码分析
import java.util.Scanner; import java.util.ArrayList; public class Reverse { public Reverse() { } public static void main(String[] args) { Scanner s = new Scanner(System.in); // 创建一个输入器,用来接受输入 System.out.println("Please input the flag :"); // 输出提示信息 String str = s.next(); // s.next()接受下一串字符串 System.out.println("Your input is :"); // 输出提示信息 System.out.println(str); // 输出信息 char[] stringArr = str.toCharArray(); // 将字符串类转换为 C-style 字符型数组 Encrypt(stringArr); } public static void Encrypt(char[] arr) { ArrayList<Integer> Resultlist = new ArrayList(); // 新建一个数组 for (int i = 0; i < arr.length; ++i) { int result = arr[i] + 64 ^ 32; // 临时变量 result 的值 = arr[i] +64^32; Resultlist.add(result); // 将计算结果添加到Resultlist } int[] KEY = new int[] { 180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65 }; // 新建一个 int 数组Key ArrayList<Integer> KEYList = new ArrayList(); // 新建一个KEYlist 数组 for (int j = 0; j < KEY.length; ++j) { KEYList.add(KEY[j]); // 将Key中的元素赋值到KeyList中 } System.out.println("Result:"); if (Resultlist.equals(KEYList)) { // 进行判断等于KEYList就输出正确。 System.out.println("Congratulations!"); } else { System.err.println("Error!"); } } }
解密脚本:
python语言
运行脚本得到flag
最后
这次的题目很简单,但涉及的语言会多,其实用C语言也能写这个脚本,但还是选择用Python,希望大家能够多多了解一些知识,扩展下知识面。
最后给大家一个学习指南,本章所涉及的:
-
简单的java语法
-
Python 列表
-
Python for-in循环
-
Python 数值转字符chr(),ord()函数
-
Python 列表解析式
国庆快乐!
我也要去上大分Happy去了
这篇关于[0xFA-2021][Buuctf]Java逆向1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-29RocketMQ底层原理资料详解:新手入门教程
- 2024-11-29RocketMQ源码资料解析与入门教程
- 2024-11-29[开源]6.1K star!这款电视直播源神器真的太赞啦!
- 2024-11-29HTTP压缩入门教程:轻松提升网页加载速度
- 2024-11-29JWT开发入门指南
- 2024-11-28知识管理革命:文档软件的新玩法了解一下!
- 2024-11-28低代码应用课程:新手入门全攻略
- 2024-11-28哪些办公软件适合团队协作,且能够清晰记录每个阶段的工作进展?
- 2024-11-28全栈低代码开发课程:零基础入门到初级实战
- 2024-11-28拖动排序课程:轻松掌握课程拖动排序功能