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 数组KeyArrayList<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相关推荐

  1. BUUCTF 新年快乐 内涵的软件 Java逆向解密 刮开有奖

    文章目录 新年快乐 内涵的软件 Java逆向解密 贴脚本: 刮开有奖 sub_4010F0((int)&v7, 0, 10);(加密函数) sub_401000((int)&v26, ...

  2. 2021年Java面试题目最新总结【90%面试会踩的坑】

    学会java技术之后大家面临的最多的问题就是面试这关,求职面试java岗位是否能够成功是直接影响我们的工作机会的,所以对于Java程序员面试你准备好了吗?今天小编汇总了一下关于Java程序员面试,90 ...

  3. JAVA逆向反混淆-追查Burpsuite的破解原理(转)

    0x00 摘要: 本系列文章通过对BurpLoader的几个版本的逆向分析,分析Burpsuite的破解原理,分析Burpsuite认证体系存在的安全漏洞. 0x01 JD-GUI的用途与缺陷: JD ...

  4. JAVA逆向反混淆-追查Burpsuite的破解原理

    lxj616 · 2014/07/30 16:19 0x00 摘要: 本系列文章通过对BurpLoader的几个版本的逆向分析,分析Burpsuite的破解原理,分析Burpsuite认证体系存在的安 ...

  5. 2021 年 Java 开发者生产力报告

    责编 | 丁恩华 出品 | CSDN(ID:CSDNnews) 新的 2021 年,Perforce 公司依然没有 "爽约".前不久,这家公司发布了其第九份年度全球 Java 开发 ...

  6. 2021年Java开发者应该学习的技术

    对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西.不断更新的Java版本,以及发布很多流行的框架,这些都给我们带来了很大的挑战.Java的版本迭代速度实在是太快了,也带来了很多有 ...

  7. 2021大厂Java面试真题(一)

    2021大厂Java面试真题(一) 大厂面试的基本流程 以下是一些大厂面试的基本流程,大家可以参考下: 字节跳动 阿里 腾讯 网易游戏 面试前需要准备: \1. **Java 八股文:**了解常考的题 ...

  8. Java毕设项目自行车在线租赁管理系统2021(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目自行车在线租赁管理系统2021(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuild ...

  9. 2021年Java大数据难不难学

    2021年Java大数据难不难学 有Java基础学大数据的话会简单一些,Java和大数据是两种不同行业,Java是一个强类型编程语言,拥有极高的跨平台能力,如果是Java程序员想升级做大数据开发就会容 ...

最新文章

  1. 面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧
  2. 当程序崩溃的时候怎么办
  3. 【Shell】设置变量默认值,参数默认值, 自动赋值
  4. 深入分析之Cluster层
  5. junit依赖_3、Spring 中的依赖注入(DI),你都知道多少?
  6. K8S_Google工作笔记0013---通过二进制方式_部署node节点_安装docker
  7. python输出24进制时间_python-如何在给定时间原点的情况下将日期时间从十进制转换为“%y-%m-%d%H:%M:%S”?...
  8. 道路测量xy坐标表示什么_cad里面什么叫绝对极坐标,相对极坐标,怎么区分他们?...
  9. 公司官网建站笔记(四):从阿里云将域名转出,并将域名转入腾讯云
  10. javaktv点歌系统项目(java点歌系统)java点歌管理系统
  11. 中小学语文在线学习辅导哪家好?优质课程随你挑
  12. Zynq7000 USB2.0协议解析及USB控制器详解
  13. HTML 为元素设置边框
  14. python如何求阶乘_python如何求阶乘
  15. latex--图片并排和插入pdf格式图片
  16. 小米手机四种刷机方法
  17. 支付宝支付整体流程,包括验签【同步】【异步】
  18. Hadoop之Yarn
  19. 2022R2移动式压力容器充装考试题及在线模拟考试
  20. CSRF和SSRF漏洞案例讲解

热门文章

  1. 一元夺宝的2种押注策略分析
  2. goland dlv 进行remote debug实验
  3. 机器学习:模型评估与sklearn实现(三)_留一法与自助法(booststrapping)
  4. 网络运维基础知识梳理
  5. pandas数据上采样
  6. Matlab 分段函数怎么画 表示方式 (推荐)
  7. 一款棋牌游戏app被成功开发需要具备这些特点
  8. java API 在线文档
  9. 易 键盘读取,识别键盘代码,程序中响应键盘,键盘输入等,详细例子,手把手教会你!
  10. 浪潮服务器性能测试,内存、IO子系统性能测试_浪潮服务器_服务器评测与技术-中关村在线...