误导性恶意软件相似性分析与无虚拟机犯罪软件诱骗技术
一、数据结构混淆相关内容
在数据结构处理方面,有多种情况需要特别关注。
- 结构体初始化
- 对于GCC复合常量表达式和复合字面初始化算法,当使用默认值填充结构体字段时,例如
struct {int a; int b; int c;} bar = {1,2};,c会被赋予默认值,此时需要调整映射以适应默认值的位置。 - 还有一种“指定初始化器”,如
struct foo = {.x = 1, .y = 2};,元素可以以任意顺序出现,并且由于有字段名,无需提供映射。不过,对于部分元素有字段名而部分没有的混合情况,当前的StructPoly无法处理,这将作为未来的工作方向。
- 对于GCC复合常量表达式和复合字面初始化算法,当使用默认值填充结构体字段时,例如
- 类型转换和指针算法识别
StructPoly利用GCC的流敏感过程间类型逃逸分析来识别类型转换和指针算法。逃逸类型包括在类型转换中另一个类型为不透明或通用类型(如char*)的指针。类型转换通常发生在不同指针类型之间,StructPoly会在三种表达式中拦截类型转换:- 显式类型转换表达式
VIEW CONVERT EXPR,例如(int*) structp。 - 赋值表达式
MODIFY EXPR,例如
- 显式类型转换表达式
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



