
このリポジトリでは、プログラムのImport Address Table(IAT)を変更し、インポートされた関数名を対応するオーディナル(序数)に置き換える手法を使用しています。その結果、関数をオーディナル経由でのみインポートするバイナリが生成されます。
この手法により、システム間でオーディナル値が一致しないため、サンドボックスシステムによるバイナリの解析が成功する可能性が低くなります。この差異により、Windows Loaderが正しい関数アドレスを見つけられないか、誤った関数を取得してしまい、その結果バイナリはサンドボックス環境で壊れてしまいます。最後に、この手法によってバイナリのリバースエンジニアリングがより困難になります。
このリポジトリには2つのプロジェクトが含まれています:
ディスクからPEファイルを読み取り、名前インポートされた関数をそのオーディナル値で上書きします。生成されたプログラムは、インポートされた関数が生成元システムと同じオーディナル値を持つシステムでのみ実行できます。
TechTestBuilder.exeプログラムを使用して、mimikatz.exe をオーディナルインポートの関数に変換した mimikatzDRM.exe を生成します。

mimikatzDRM.exe を実行すると、次のエラーが発生します。

このプロジェクトは、最初に実行されたときにDRM手法自体を利用します。つまり、このバイナリは他のマシンでは簡単に実行できません。OrdinalDRMBin.exe は次の手順を適用します:
OrdinalDRMBin.exe を示しています。関数が名前でインポートされていることに注意してください。

OrdinalDRMBin.exe を示しています。関数がオーディナルでインポートされていることに注意してください。

前述のとおり、生成された実装のすべてのインポート関数について正確に同じオーディナル値を持つシステムのみが、保護されたバイナリを実行できます。ただし、異なるDLLから関数をインポートすることで、この可能性を低減できます。IAT Camouflage モジュールで使用されているのと同じアプローチをこの目的に利用できます。