多层SMC代码自修改程序逆向分析
SMC简介
在真正执行某一段代码时,程序会对自身的该段代码进行自修改,只有在修改后的代码才是可执行的。在程序未对该段代码进行修改之前,在静态分析状态下,均是不可读的字节码,IDA之类的反汇编器无法识别程序的正常逻辑。
代码分析
首先用IDA打开这个程序,用F5插件将其转换为伪代码
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608143652128.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l6YXhJbG92ZXlvdQ==,size_16,color_FFFFFF,t_70#pic_center)
下面分析这段代码
首先让用户输入一段字符串,并检测它的长度是否为28字节,然后检测v6对应的ASCII码是否为125,这里看不出来v6是什么,所以我们看一下汇编代码
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608143716718.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l6YXhJbG92ZXlvdQ==,size_16,color_FFFFFF,t_70#pic_center)
可以看到伪代码中if(v6 == 125)对应的是汇编代码中的loc_40107F,当我们输入的字符串长度为