一道有关变种RC4和变种BASE64适合新手的逆向算法题
运行一下,发现应该是普通的字符串匹配题目进入IDA进行分析,发现几个可疑的函数
首先跟进sub_401760,函数里面就是两个简单的for循环。这个函数的内容与RC4初始化的内容比较相似,所以可以将这个函数命名为RC4_INIT
附上RC4初始化S盒的算法
根据理解加了几行注释
接着继续分析sub_40188D,与RC4加密函数对比时候发现这其实就是一个RC4加密,但是在异或的地方由少许不同,数据偏移加了24
附上RC4机密部分的算法进行参照
最后分析sub_401530,首先注意一个比较可疑的字符串。
而这个算法其实就是一个类似base64的编码运算。根据其原理和C语言的对比可以推断得到这个结论。而那个字符串就是就是base64的码表,只是变异的。致于和真正的base64区别在于sub_401711这个函数将码表进行了偏移---向左循环24位(出题人还挺喜欢24这个数字啊)
通过每个函数的分析之后再来看主函数逻辑就比较清楚了。程序首先对输入进行变种rc4加密,然后通过变种的base64编码,将结果与密文B4QrGVzkpZVeHssap5HEgWfSQQ0zmMAA进行比较
这样就可以写出脚本。首先是RC4部分,因为RC4是流加密算法,加密的过程再进行一次就是解密了(异或他不香吗)
接着是BASE64的部分
最后是主函数部分
运行结果
这里附上完整EXP,希望大佬帮忙改改,可以写的简介一点
题目链接
链接:https://pan.baidu.com/s/1uE49L77x5V2trS_Vopxqag
提取码:vnuo
打破0回复吧,这道题刚做过 加油,我支持楼主
页:
[1]