EntropyReducer 算法由 BUFF_SIZE 和 NULL_BYTES 的值决定。以下说明当 BUFF_SIZE 设为 4、NULL_BYTES 设为 2 时,EntropyReducer 将如何组织你的载荷。

BUFF_SIZE 的整数倍,如果不是,则对其进行填充使其满足该条件。BUFF_SIZE 大小的块,使用 InitializePayloadList 函数为其创建一个链表节点,将载荷初始化为链表。NULL_BYTES 的空缓冲区,用于降低熵。Obfuscate 函数完成,见此处。混淆算法 的最后一步是序列化链表,因此这里首先要做的是反序列化混淆后的载荷,从中生成一个链表,此步骤在 Deobfuscate 函数中完成,见此处。BUFF_SIZE 和 NULL_BYTES 两者的值。不过,可以使用以下公式确定FinalSize = ((OriginalSize + BUFF_SIZE - OriginalSize % BUFF_SIZE ) / BUFF_SIZE) * (BUFF_SIZE + NULL_BYTES + sizeof(INT))
本仓库中的 PoC 项目用于执行生成的 ".ER" 文件,作为反序列化和去混淆的示例。
你只需将 EntropyReducer.c 和 EntropyReducer.h 文件添加到你的项目中,并调用 Deobfuscate 函数即可。你可以参考 PoC/main.c。
在此示例中,BUFF_SIZE 设置为 3,NULL_BYTES 设置为 1。
FC 48 83)

5.883,通过 pestudio 查看。
7.110。
7.210
4.093