南京邮电大学网络攻防平台逆向writeup之[WxyVM]
#1
找到主函数,看上去很简单,把输入的字符串拿去一个函数作运算,然后拿字节和一个固定的dword对比
坑点1:动态调试的时候才找到,是拿byte和dword对比,这里卡了好久,终于找到拿出来对比的字符串了。
#2
进入sub_4005b6();这个就是加密函数,byte_6010C0 是一个类似hash表的东东,有1500字节长,为了方便读取截出来保存为一个二进制文件,winhex打开看一下
3#
读这段代码的大致意思,每次循环取0,1,2三位,第一位拿来select case,第2位拿来定位,第3位拿来运算,比如03,04,05的值分别是[03,0d,0a],在select case 中的运算公式就应该为
byte_604b80[0d]^=0a
坑点2:运算过程中可能会溢出,这里卡了好几天,NND
#4
答案就不给了吧,看一下提交成功的截图