前言:做题笔记(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,看来思路是正确的。