逆向萌新打题,攻防世界
放入PE查看,无壳
放入IDA
非常简洁,一共对输入的flag进行了两次变换
这里i的地址在sp+18h处,而v5的地址在sp+1ch处,就是说v5的地址加4就是i
所以第一个框就是对flag进行了一次异或变换
第二个框先进行了一次判断,对前5个值校检,再进入sub_4007F0中
这里很显然只进行了一次变换,而这个左移跟右移结合按位或的可以将左移跟右移调换写出逆向脚本。
这里需要注意一点,为什么要用0xff,在原来的变量定义中这是个char型的字符串,也就是说是8位的长度,而python里默认是64位长度上限,在右移的过程中容易超出8位的长度且取入了8位以上的值,0xff可以取得前8位的长度的值。