写在前面:最近在学逆向,然后很多人说不知道怎么入门,我也在摸着石头过河,然后想的发一个系列。一来分享学习的过程,大家一起进步,二来就当笔记来记录一下,加深印象。当然,时间不定,看心情。
0x00
题目:第三届上海市大学生网络安全大赛 REVERSE-->crackme
放在了百度云:链接: https://pan.baidu.com/s/1pLNyeaZ 密码: vhr9
刚拿到题还是太年轻,直接放到了ida分析,一堆花指令,然后搜key word定位关键位置,竟然啥都没搜到。。。
然后反应了一下,是不是有壳。上pedid
可以看到是nSPack 3.7 -> North Star/Liu Xing Ping。然后肯定就是要脱壳了,我直接拿脚本脱的,也可以根据esp手工脱,网上有很多教程,在此不再累述。
脱完以后重新走一遍流程,静态的先看一下,是不是很清楚了。
当然可以静态的去分析,今天咱们来拿od动态的来分析一遍,在这里下个断,看看程序的判断流程是怎么样的
先把栈上我们输入的字符串长度计算出来,edx就是开始,ecx就是结束。减一下,是不是刚好就是咱们输入的长度==11,然后就要和0x2A(42)比较了。如果成功的话就跳je,不成功的话就exit了。
跳过去以后,把我们的字符串和this_is_not_flag按位异或相与,然后eax*n+401250比较,看看这块内存是什么鬼。
看到了吧,对应ida的这里
然后逻辑很简单了。
0x01
exp如下
领取专属 10元无门槛券
私享最新 技术干货