SMC简介
SMC,即Self Modifying Code,动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果。
SMC的实现方式有很多种,可以通过修改PE文件的Section Header、使用API Hook实现代码加密和解密、使用VMProtect等第三方加密工具等。关于具体的实现方式可以参考合天的文章:探究SMC局部代码加密技术以及在CTF中的运用 - SecPulse.COM | 安全脉搏
CTF中的SMC
SMC一般有俩种破解方法,第一种是找到对代码或数据加密的函数后通过idapython写解密脚本。第二种是动态调试到SMC解密结束的地方dump出来。
SMC的实现是需要对目标内存进行修改的,.text一般是没有写权限的。那么就需要拥有修改目标内存的权限:
- 在linux系统中,可以通过mprotect函数修改目标内存的权限
- 在Windows系统中,VirtualProtect函数实现内存权限的修改
因此也可以观察是否有这俩个函数来判断是否进行了SMC。
CTF 题目复现
[网鼎杯 2020 青龙组]jocker

文件先查壳,无壳,32bit文件,一打开就可以发现VitualProtect函数,这里对内存权限进行了修改,大概率是SMC。
这里的逻辑大致看下,通过scanf让我们输入一个长度为24的flag,再

本文介绍了SMC(SelfModifyingCode)动态代码加密技术,包括其实现方式、在CTF中的破解策略,以及如何通过观察内存权限修改和动态调试来识别和复现SMC加密的CTF题目实例。
最低0.47元/天 解锁文章
1190





