Java逆向解密1
背景描述:程序员小张不小心弄丢了加密文件用的秘钥,已知还好小张曾经编写了一个秘钥验证算法,聪明的你能帮小张找到秘钥吗?
注意:得到的 flag 请包上 flag{} 提交
题目附件:点击这里下载
反编译
我们通过jd-gui反编译获得的.class文件,代码如下:
1 | import java.util.ArrayList; |
我们发现这个文件中包含着两个函数,一个是Reverse另外一个是Encrypt,其中Reverse函数让我们输入flag,但是我们哪里有flag?
我们接着往下看,Encrypt中传入形参(也就是我们的输入)并对其进行以下操作:
1 | for (int i = 0; i < arr.length; i++) |
然后在将其与KEY进行ASCII码对比,如果正确则输出Congratulations,否则输出Error
脚本编写
很显然,由上述我们可知,flag[i]+64 ^ 0x20=KEY[i];
现在我们知道KEY,所以flag[i]=KEY[i]-64 ^ 0x20;,我们使用c语言编写代码来实现:
1 |
|
得到flag

推荐文章
站内
推荐
(5.0%)
15分钟
行政职业能力测验行测必看:必然性推理直言命题全解析-6种形式、矛盾关系与反对关系解题指南
详解公务员/银行考试行测必然性推理核心模块!掌握直言命题6大标准形式、矛盾关系(所有是↔有些非)、上反对(所有是vs所有非)、下反对(有些是vs有些非)三大关系
站内
推荐
(4.2%)
14分钟
Java 数组—JAVA语言基础
数组是最为常见的一种数据结构,是相同类型的用一个标识符封装到一起的基本类型数据序列或对象序列。(本文章参考《Java从入门到精通 第5版 明日科技》。
站内
推荐
(4.2%)
16分钟
Java 字符串—JAVA语言基础
字符串是Java程序中经常处理的对象,如果字符串运用得不好,将影响到程序运行的效率。(本文章参考《Java从入门到精通 第5版 明日科技》。故不采用
--- over ---
- 本文链接: https://i-nmb.cn/Android-reverse-1st.html
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。