fightingman 发表于 2020-3-21 23:31

一道有关变种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




冰露㊣神 发表于 2020-3-22 10:50

打破0回复吧,这道题刚做过

小橙紫 发表于 2020-3-22 22:51

加油,我支持楼主
页: [1]
查看完整版本: 一道有关变种RC4和变种BASE64适合新手的逆向算法题