题目网址:https://pan.baidu.com/s/1czp8npiCczQ2sU32YA_96g
提取码:jm99
暨南大学新手赛题目,win.exe拿进去看,运行:

拖进去,优先找main函数,按F5:

说明要输入的第一个数字是2018,输进去,看看:

对的,很好,接下去分析,

说明这里是关键函数,所以V3是我们的关键数字,要不能为空,找到V3的出处。那个sub-401610那里,进去:

所以,我们可以判断出这里就是有比较的,看到一串可疑的字符串:

进去看看:


v2就是我们能知道的字符串的长度,所以就是copy全部(当然这里是可选的长度,说不定下次就是一半呢,哈哈(暗示可以自己修改算法代码)),这样就明朗了,V5就是copy到的寄存器,出来吧:

v4是存下来了,而V4的首地址刚好就是a1,再回去:


我们从头开始分析,

不行同则调到label—24那里,后面的也是,label—24是什么,我们看看:


所以这个函数是我们要避免的,不能跳到这个坑里面,所以继续分析:


回去看看一个具体的分析:


最后全部匹配完成,成功的话,V4=1,就是V3的值=1;

对V11进行操作啦!来个python脚本:


程序闪退了,说明正确!
好啦,脚本搞出来了,接下来,题目还提示拼拼拼!前面不是还有2018吗?所以答案就是:flag{2018reverse_1s_very_easy}!
这就是全部过程啦,这道题还是很有收获的,首先是第一个substr函数的用法!切片(任意切!),第二个就是对于整体的把握和认知,程序明白了,一切都好办了~本题的匹配是将输入切片和答案的切片进行匹配,通过切片达到保护作用!
网友评论