针对现有二进制程序同源性判别方法受限于特定编程语言或环境、难以应对复杂的代码混淆攻击、易受依赖库影响等问题,提出了一种基于内存对象访问序列动态胎记(dynamic birthmarks based on memory object access sequences, DBMOAS)的程序同源性判别方法。该方法将程序对数据结构的访问顺序流作为程序语义的一种鲁棒性特征并加以分析,能较好地应对复杂的代码混淆攻击;基于动态污点分析,表征程序的数据结构,解决了二进制程序缺少数据结构与类型的语义表示问题。为验证DBMOAS 方法的可信性和弹性,在窗口大小取值不同的情况下,测试具有相似功能的独立程序间的相似度;针对不同编译器、编译选项、混淆方法、版本迭代产生的同源样本,测试程序间的相似度。实验结果表明,本文方法能有效判别程序间的同源性,可信性评估中误判率仅为6. 7%,弹性评估中无漏判情况。