该存储库使用一种技术来修改程序的导入地址表(IAT),将导入的函数名称替换为相应的序号,从而生成一个仅通过序号导入函数的二进制文件。
由于不同系统上序号值的不匹配,该技术降低了二进制文件被沙箱系统成功分析的机会。这种差异会导致 Windows 加载程序要么无法定位正确的函数地址,要么检索到错误的函数,从而使二进制文件在沙箱环境中损坏。最后,该技术使对二进制文件进行逆向工程变得更加困难。
该存储库包含两个项目:
从磁盘读取 PE 文件,并将其按名称导入的函数覆盖为对应的序号值。生成的程序只能在导入函数与生成它的系统具有相同序号值的系统上运行。
TechTestBuilder.exe 程序生成 mimikatzDRM.exe,它是 mimikatz.exe 的副本,但其中的函数是通过序号导入的。

mimikatzDRM.exe,将会抛出以下错误。

该项目在首次执行时即使用了 DRM 技术本身。这意味着该二进制文件在其他机器上不太容易执行。OrdinalDRMBin.exe 执行以下步骤:
检查本地程序是否包含任何按名称导入的函数,如果没有,则跳过应用 IAT 补丁。
从磁盘读取自身,并将所有按名称导入的函数转换为按序号导入。
从磁盘删除自身。
写入新映像,其中所有函数均按序号导入。
OrdinalDRMBin.exe。注意函数是按名称导入的。

OrdinalDRMBin.exe。注意函数现在是按序号导入的。

如前所述,只有那些与所生成实现的所有导入函数具有完全相同的序号值的系统,才能运行受保护的二进制文件。不过,可以通过从不同的 DLL 导入函数来降低发生这种情况的概率。可以使用 IAT Camouflage 模块中使用的相同方法来实现这一目的。