@TOC
这次的羊城杯出的题挺好的,对于我的学习还是有很大的帮助,赛后也是把6个题都复现了一遍,除了oddcode留下了一个问题外,其他的都跟着过了一遍,这里不写wp了,简单复述一下,并记录学到的知识点

smc

这个题虽然说做出来了,但是用的时间比较长,smc不算是难点,但是我在对于base64的算法分析上花费了点时间,被程序那么长的代码误解了

deltx

这个就是个数学题,用自己的指令实现了乘法和减法,静态分析会比较困难,通过构造简单的输入,动调后,就可以知道程序在干什么

android

我不是很会做安卓,没学过java,jeb的调试和hook当时也没搞出来(后面再去学习)
这个题还算是比较简单,就用jeb硬分析就行,多看看java代码就熟悉了

Babyvm

典型的vm题,我做这种题做的少,不过套路都是一样的,对着代码一个一个字节的过,还是比较考研耐心的,下次比赛出了多尝试尝试

SafeBox

这个题之前在mrctf的时候见过一次,这次又出现了,一模一样,调试器代码里有smc,用idaoython还原代码,之后分析就行,主要的是学习了这个双进程保护,我对着文档还是过了一遍,收获还挺大(api多)
在这里插入图片描述
在这里插入图片描述

oddcode

这个题的主要知识点在于32位和64位的切换,第一次学
在这里插入图片描述
远跳的时候会改变段寄存器的值
cs=0x33 64位
cs=0x23 32位
这样模式改变后就不能动调分析了,加上后面有大量花指令,会十分恶心人

这里有两种方法,一种是把源程序考下来,重新用64位编译,分析,一种是用unicorn模拟执行,找到关键代码的位置
不过这两种我都没有实现出来,前面是因为没有找见和wp一样的字节,后面是对unicorn的不熟,虽说我前面学过一次

前者wp:
在这里插入图片描述后者wp:
在这里插入图片描述