第一题:
题目拖进IDA提示已经加壳,PEID查壳,upx的壳,熟悉这种壳的可以用OD手动转到OEP,原理就是利用ESP平衡,在pushad指令后下硬件断点,然后运行就会暂停在popad指令后。再后面的就是JMP OEP指令了,最好使用LoadPE+ImportREC进行脱壳修复,这里因为是upx这种最简单的壳,直接使用ollydump脱掉壳就好了。
使用upx 自带解压功能:
使用ollydump脱壳 :
修改了几个变量和类型之后
因为要求用户名大于10个字节,只能靠后面strcmp(pass)对比成立
算法的脚本
第七题
exe一开始按钮是灰色的,可用Resource Hacker(EXE文件资源编辑器)解决
先进入DialogFunc函数,可用IDA的枚举功能还原windows消息对应的整形值,这里的控件1002对应上图的GetFlag按钮,1001对应输入框
点击GetFlag按钮会进入sub_401070函数
sub_401000对假flag的第16位开始进行异或操作
算法脚本
第十题
v9作为int类型的下标,*(&v9 + 1)= *v10,即指针+1等于指针+其所指向的类型的大小,对应的汇编指令为
mov edx, [ebp+i]
mov eax, [ebp+edx*4+v9] //即edx*4解释了此v9为int类型的指针
movsx edx, ds:byte_415768[eax]
修改v9变量的类型为int数组(最新版IDA7.5直接识别为int v9[24]类型)
也可以直接在v11[i] != byte_415768[v9[i]] 这行下断点直接查看每个字符
最后得到KEY{e2s6ry3r5s8f61024}
第二十四题
没什么好说的
第二十五题
输入正确的EYG3QMCS之后,会启动一个FlagActivity弹出flag
第二十六题
算法脚本