1.得到exe文件,查壳。
upx壳,32位文件。
2.脱壳。丢到IDA中找主函数,F5.
3.分析代码。有好多不知到的函数(枯了枯了),网搜一波,发现主要是在createthread函数,他就是建了个线程(可以把他忽略主要看参数里面蓝色的)
大致看一下代码关键就是三个函数:两个createthread函数还有一个sub_411190.
两个createthread函数都是加密用的,sub_411190就是比较。(flag就是那个score)
先看第一个startAddress:
继续跟进函数sub_41112c
这个函数就是先判断flag是不是大写字母,
是:a1[a2]==off_418000[a1[a2]-38] 不是:a1[a2]==off_418000[a1[a2]-96]
第二个sub_41119f:
这个主要是说上面的加密方式是一个见一个的(即奇数位加密,偶数位不加密)
(这两个线程好像是并行的)
最后是比较score和off_418004。查一下off_418004==‘TOiZiZtOrYaToUwPnToBsOaOapsyS’
(即加密后flag的值)
4.写脚本。
运行得到ThisisthreadofwindowshahaIsES。(我以为这就是falg就提交了,结果不对,想了半天不知道咋弄,就看了看大佬的wp,才发现有坑。)看sub_418008处的值是0x1D(29)所以flag应该是30位的,我们运行出的只有29位。最后一位要自己猜。
4.get flag
flag{ThisisthreadofwindowshahaIsESE}