32位无壳
进入main函数
在第14行对输入的V8进行了处理 跟进sub_401080函数
很明显的base64加密 但在前面又一个sub_401000函数 跟进一下
将byte_40E0AA数组的第7个到第15个和byte_40E0A0数组进行交换
最后还有sub_401030函数跟进一下
可以看出是大小写转换
回到主函数最后与byte_40E0E4比较
也就是我们输入的V8要与byte_40E0E4相等
所以拿byte_40E0E4的数据先转换大小写然后进行base64解密就能得到flag (这个base64的表被换了)
大小写转换
str = 'zMXHz3TIgnxLxJhFAdtZn2fFk3lYCrtPC2l9'
print(str.swapcase())
#得到ZmxhZ3tiGNXlXjHfaDTzN2FfK3LycRTpc2L9
base64表从下标为6开始到下标为15也就是将默认表里的QRSTUVWXY和GHIJKLMNOP相互交换了一下
得到
ABCDEFQRSTUVWXYGHIJKLMNOPZabcdefghijklmnopqrstuvwxyz0123456789+/
flag
a 是要解密的数据
b 是要更换的表
c 是默认的表
得到flag={bAse64_h2s_a_Surprise}