分析过程
- 用户输入user_string,程序调用highly_optimized_parallel_comparsion(user_string)函数。而highly_optimized_parallel_comparsion会作运算得到3个arguments
- first_letter:random%26+97(由于没有设置seed 导致每次random得出的值都是11)
- differences(固定数组)
- user_string(用户输入)
- 接下来通过pthread_create创建进程将argument传入checking,pthread_join等待进程结束得到result
- 分析pthread_join的后面的程序,发现pthread_join得到的result会和just_a_string(固定数组)相加得到generated_string,而如果generated_string!=just_a_string则return 0 ,因此可以判断所有 pthread_join得到的result都为0时程序才能使is_ok=1
- 因此*result = (argument[0]+argument[1]) ^ argument[2]中的result需要为0即user_string= (97+11 + difference[i])^0
- exp如下
1 | list1=[0, 9, -9, -1, 13, -13, -4, -11, -9, -1, -7, 6, -13, 13, 3, 9, -13, -11, 6, -7] |