-
-
[原创]
-
发表于: 2017-6-1 16:48 2358
-
1 | <br> |
儿童节的礼物!!!
一、看汇编
题目说了“三无CrackMe”,那就按照规矩来,拉到IDA看看:
上图,说的是获取输入的字符后,先判断长度是否为4,那么假设输入的4个数字分别为x1,x2,x3,x4;
再判断输入的是否含“0”,由于是第二版的crackme,加上了限定条件,x1 =1, x2 =5。
继续分析:
可以看到中间进行了浮点数运算,要走到“successful”,那么必须满足条件:(x3-x1/x2)*x4*16.0 == 384.0
二、撸代码
根据条件:(x3-x1/x2)*x4*16.0 == 384.0,得出 (x3-x1/x2)*x4 = 24.0,所以用下面的代码:
1 2 3 4 5 6 7 8 9 10 | x = 0 num = 24.0 for i in xrange ( 1 , 10 ): for j in xrange ( 1 , 10 ): for k in xrange ( 1 , 10 ): for l in xrange ( 1 , 10 ): x = ( float (k) - ( float (i) / float (j))) * float (l) if x = = num: #print "x1 = %d, x2 = %d, x3 = %d, x4 = %d \n" % (i, j, k, l) print "%d%d%d%d" % (i, j, k, l) |
跑出来,是15开头的,只有1555!!!
验证一下:
最后,祝大家玩的开心,多多交流 *_*
[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!
赞赏
赞赏
雪币:
留言: