在main函数准备阶段,AFLNet比AFL多加了一个setup_ipsm函数,这里记录一下该函数的分析过程。
什么是ipsm
Implemented Protocol State Machine,协议状态机
setup_ipsm
/* Initialize the implemented state machine as a graphviz graph */
void setup_ipsm()
{
// 创建一个有向图形对象g,没有回调函数
ipsm = agopen("g", Agdirected, 0);
// agattr()函数用于设置图形对象的属性。这里将节点(AGNODE)的颜色属性设置为黑色("black"),边(AGEDGE)的颜色属性也设置为黑色。
agattr(ipsm, AGNODE, "color", "black"); //Default node colr is black
agattr(ipsm, AGEDGE, "color", "black"); //Default edge color is black
// kh_init()函数用于创建一个哈希表(Hash Table)的实例,并将其赋值给变量khs_ipsm_paths
// 这个哈希表用于存储IPS状态机的路径信息
khs_ipsm_paths = kh_init(hs32);
// kh_init()函数被用来创建另一个哈希表的实例,并将其赋值给变量khms_states。
// 这个哈希表用于存储IPS状态机的状态信息
khms_states = kh_init(hms);
}
agopen函数
这个函数中文网站介绍比较少,先去问下bing,如果回答不行,就去google一下:

bing回答的很清楚。











![[WiFi] 802.11w/802.11k/802.11v/802.11r/802.11u/802.11ai/802.11ah简介](https://img-blog.csdnimg.cn/img_convert/2a882869e7595dd8f64cd2a120b4f360.png)







