notsequence
打开是EIF文件,直接拖进IDA查看字符串
反汇编找到main函数
1 | int __cdecl main() |
首先要满足check1和check2即sub_80486CD和sub_80486CD
最后满足v2 == 20
1 | int __cdecl main() |
sub_80486CD:第一个for循环,i是求和递增,就是i=0,1,3,6,10….
第二个for循环首先将数组进行分隔,根据上面的i分成a[1],a[2],a[4],a[7]….
再将分隔中间的数字进行相加,v5=0,1,2,3,4…..代表着每一次相加的个数即每个隔间的个数
if判断语句1往左移动0001=1,0010=2,0100=4,1000=8依次类推,v3就代表着每个隔间的和
1 | v5 = 0; |
sub_80486CD:a2即上面的v5,a2-1就是去除最后一行把每一列的数字进行相加,if判断是与后一列的最后一个数字相等
1 | v6 = 0; |
杨辉三角简图:
通过main函数中的v2 == 20可得到需要20层的杨辉三角
写脚本:
1 | def yanghui(max): |
运行:
1 | [1] |
将数字连在一起,进行MD5加密,就得到最终flag
1 | 37894beff1c632010dd6d524aa9604db |