我正在寻找一种算法和/或代码片段,它在稳定的数据流上提供单遍算法,可以检测有效的字节码或操作码序列。
没有可用于辅助的 PE32、ELF 或 Mach0 头信息;所以这意味着,手头没有以下入口点、偏移量、段或节信息。
我想认为ARM比英特尔更难。
谷歌并没有出现太多,所以我想我一定是在这里使用了错误的术语。
我正在寻找一种算法和/或代码片段,它在稳定的数据流上提供单遍算法,可以检测有效的字节码或操作码序列。
没有可用于辅助的 PE32、ELF 或 Mach0 头信息;所以这意味着,手头没有以下入口点、偏移量、段或节信息。
我想认为ARM比英特尔更难。
谷歌并没有出现太多,所以我想我一定是在这里使用了错误的术语。
首先,ARM 比 Intel 容易得多,因为它有固定的指令长度,(如果我没记错的话)要求指令按 2 或 4 对齐,并且由于其哈佛架构而对任意代码自修改的能力有限。
我想说没有这样的算法,而且在一般情况下这样的算法是不可能的,例如因为代码可能会自我修改并在常规代码流中使用异常和陷阱,所以唯一的通用达到预期结果的方法是仿真。
答案的其余部分取决于所需算法的更准确定义、目标架构和序列的有效性。
我认为没有搜索字节码的最佳算法......除非您了解有关数据流的其他信息,例如base 64编码等。
您可以做的一件事是查看是否有过多的 NOP 字节(0x90、x86),但如果真的想要,他们可以找到使用不同操作码执行等效 NOP 的方法。