SMC,即Self Modifying Code,动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果。 SMC的实现方式有很多种,可以通过修改PE文件的Section Header、使用API Hook实现代码加密和解密、使用VMProtect等第三方加密工具等。 CTF
1. SMC的实现比较复杂,需要涉及到PE文件结构、内存管理等方面的知识。 2. SMC需要在运行时动态地解密代码,因此会对程序的性能产生一定的影响。 3. SMC只能对静态的代码进行加密,对于动态生成的代码无法进行保护。 4. SMC对于一些高级的破解技术(如内存分析)可能无法完全保护程序。 综上所述,SMC是一种局部代码加密...
第一种是找到对代码或数据加密的函数后通过idapython写解密脚本。 第二种是动态调试到SMC解密结束的地方dump出来。 SMC的实现是需要对目标内存进行修改的,.text一般是没有写权限的。那么就需要拥有修改目标内存的权限: 在linux系统中,可以通过mprotect函数修改目标内存的权限 在Windows系统中,VirtualProtect函数实现内存权...
smc自解密 ollvm混淆 变量名混淆 也可按源码和机器码层面来进行分类: 源码级: 变量名混淆 花指令 自解密 机器码: ollvm混淆 mov混淆 在ctf中常见的是花指令,ollvm,自解密,mov混淆 花指令 花指令一般干扰静态分析层面,扰乱汇编代码,让ida反汇编失败 这里说一下在反汇编的过程中,数据与代码的区分问题 在程序...
当我们理解了花指令的原理后,我们可以在将花指令中的垃圾数据替换为一些特定的特征码,可以对应的“定位功能”,尤其在SMC自解码(https://blog.csdn.net/dontbecoder/article/details/8754729?utm_source=app)自解码这个反调试技术中可以运用。 例如: asm
代码混淆常见的是花指令和SMC,花指令就是在代码中插入一些垃圾数据,或是构造一些跳转语句来干扰静态调试。SMC是自修改代码,通过修改内存地址,使程序无法静态分析,但是在程序运行时会进行自解密,也就是我们调试的方法就是通过动态调试 调试到修改后的代码处,然后再dump'出来就好。
3. NewStarCTF 2023 WEEK2|REVERSE SMC 使用IDApython静态解决SMC(100) 4. 用栈实现数的后序遍历(70) 5. exe-py(40) 评论排行榜 1. NewStarCTF 2023 WEEK2|REVERSE SMC 使用IDApython静态解决SMC(1) 最新评论 1. Re:使用IDApython静态解决SMC NewStarCTF 2023 week2 SMC --陳51r 博客...
本身是初学逆向,当时一直卡在反调试(太菜了..),smc一直未能解密得到正确代码,赛后找apeng大佬看wp又仔细琢磨了一下,有些收获,便写文章做个记录。 题目分析 首先运行一下程序 然后动态调试会发现代码出现异常,异常处理程序输出”not welcome!”,所以可以断定程序存在反调试。
EVP_EncryptFinal_ex(ctx, ciphertext + len, &len) // 清理 EVP_CIPHER_CTX_free(ctx); SMC技术将plaintext解密,之后将解密的值fun()的地址处 附加一道简单的smc patch一下 之后将这个函数的部分全部u掉,之后p(如果直接p可能会识别不出来,导致不能反编译)...
在实际环境中可能解密算法很复杂,但是思路是一样的,在IDA中对这种SMC或者其他技术加密的代码也可以使用其他方法,例如用OD动态调试,然后用IDA的“Additional binary file”功能附加二进制文件将解密文件重新加载,这样做是很有效的,具体参考《加密与解密(第四版)》16.10节。 签名 有时候我们在反编译程序的时候,如果没有...