第四届省赛逆向writeup

第一题: 题目拖进IDA提示已经加壳,PEID查壳,upx的壳,熟悉这种壳的可以用OD手动转到OEP,原理就是利用ESP平衡,在pushad指令后下硬件断点,然后运行就会暂停在popad指令后。再后面的就是JMP OEP指令了,最好使用LoadPE+ImportREC进行脱壳修复,这里因为是upx这种最简单的壳,直接使用ollydump脱掉壳就好了。
使用upx 自带解压功能:

使用ollydump脱壳 :

修改了几个变量和类型之后

因为要求用户名大于10个字节,只能靠后面strcmp(pass)对比成立
算法的脚本 Small Picture

第七题
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

第二十六题

算法脚本