buuctf Java逆向解密

前言:做题笔记(Java语言我不懂,但我们可以大胆去猜测。)

(不管是什么类型文件)常规>>> 下载 解压 查壳

用 jd-gui打开。【针对Java语言的】

打开之后,该文件只有这一个界面。【太难看了。。。CV大法,,,用sublime打开】

sublime:

格式好难看,我们进行整理。【干净整洁永远比在垃圾堆里找代码强】>>>逻辑更加清晰。

大致分析一下:

不出意外应该没错。。【不懂Java】

OK! 猜测!

((c+64)^32)) >>>应该就是大写字母转小写字母的算法。

KEY= {180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65};

那应该就是加密后的字符对应的dec进制。

if         xxx函数(KEYList) >>> Congratulations 否则>>> Error 【ok,确定>>肯定是和key有关的】

那么去写C逆向脚本。

脚本思路:将KEY进行逆向 还原,不出意外的话,还原的结果就是flag【也就是求arr[c]的值】。

①        已知>>> (c + 64) ^ 32) 逆的话>>>(c-64)^32【原因:加密时是” + “ 解密那就 “ - ” 呀】

②        已知key、arr是数组【】 那么 逆的话>>>c[最后一位往前推]。

③        for(char :  arr)>>>根据我们猜测 等价于 for(int c =0 ; c< strlen(arr) ; c++)

不对的话,在改值。【因为不懂Java语法。】

C脚本:

ok,看来思路是正确的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值