SCTF 2019 Crackme -wp

这是主函数
先用findcrypt扫描算法发现有aes和base64编码并回溯找到aes函数位置为sub_4020D0(Block, (int)v22)

接着运行调试时进入sub_402320(ModuleHandleW)发现有int3断点

打开汇编流程图分析

左边的为seh函数右边为主程序
并且在右边发现了注册she函数的汇编


其中seh结构体中loc_4023EF就是主程序中左边的seh函数

这个程序在注册seh后在下面的DebugBreak()会强制出发int3断点然后交给调试器进而反调试我们调试的时候可以选择交给程序自己解决来跳过
在seh中有个函数sub_402450


这其中就是smc代码对每个字节和aSycloversyclov中的字符循环加密然后取反
至于smc的区域肯定在后面可以找到

这个函数中return ((int (*)(void))dword_404000[0])();就是很明显的smc代码

我们用ida脚本来还原

重新编码后可以看到

这是一个对aPvfqyc4ttc2uxr每个字符减一再逆序的函数

解密后可以得到nKnbHsgqD3aNEB91jB3gEzAr+IklQwT1bSs3+bXpeuo=
这很明显是一个base64加密后的结果
结合前面的加密函数中两串连续的字符


推测是aes的cbc模式

解密拿到答案sctf{Ae3_C8c_I28_pKcs79ad4}