2017-08-02 18 views
2

ConfuserExが正しく実行されたかどうかをチェックし、そうでない場合はコンパイルプロセスを終了するコードをCSharpプロジェクトファイルに含めることができますか?リフレクションを使用して、クラス名がまだ存在するかどうかを確認することができます(つまり、難読化されていません)。ObfuscationがCSharpプロジェクトファイルで成功したかどうかを確認する方法

更新:なCecilなどのライブラリを経由して、

<Target Name="AfterCompile"> 
    <Exec Command="if &quot;$(PlatformName)&quot; == &quot;AnyCPU&quot; (if &quot;$(ConfigurationName)&quot; == &quot;Release&quot; (powershell.exe -ExecutionPolicy Bypass -File &quot;$(ProjectDir)confuserEx\confuserps.ps1&quot; &quot;'C:\Program Files\ConfuserEx\Confuser.CLI.exe'&quot; &quot;'$(ProjectDir)confuserEx\confuser.crproj'&quot; &quot;'$(ProjectDir)obj\$(ConfigurationName)\'&quot; &quot;'$(ProjectDir)obj\$(ConfigurationName)\$(TargetFileName)'&quot; &quot;'normal'&quot;)&#xD;&#xA;) else (if &quot;$(ConfigurationName)&quot; == &quot;Release&quot; (powershell.exe -ExecutionPolicy Bypass -File &quot;$(ProjectDir)confuserEx\confuserps.ps1&quot; &quot;'C:\Program Files\ConfuserEx\Confuser.CLI.exe'&quot; &quot;'$(ProjectDir)confuserEx\confuser.crproj'&quot; &quot;'$(ProjectDir)obj\$(PlatformName)\$(ConfigurationName)\'&quot; &quot;'$(ProjectDir)obj\$(PlatformName)\$(ConfigurationName)\$(TargetFileName)'&quot; &quot;'normal'&quot;)&#xD;&#xA;)" /> 
    </Target> 
+0

ビルド前またはビルド後のタスクを実行することの1つは、難読化がいつ行われるかに依存します。 – stuartd

答えて

0

あなたは難読化が正常に実行されるかどうかを確認するために、独自のユーティリティを書くことができ、または単に既存の使用:これは、難読化ルーチンを呼び出し.csprojファイル内のコードですツール(Red-Gate Obfuscation Checkerなど)。

+0

プロジェクトファイルにCecilをスクリプト化してクラスが存在するかどうかを確認する方法はありますか? – dashnick

+0

また、Red-Gate Obfuscationチェッカーは、他の難読化ツールでも機能しますか? – dashnick

+1

@dashnick最初の質問には、プロジェクトファイル内で、[インラインC#でビルドタスクを定義する]ことができます(https://docs.microsoft.com/en-us/visualstudio/msbuild/walkthrough-creating-an-inline -task)を使用して、Mono.Cecilを使用して、難読化が検出されたかどうかを出力します。その後、 'AfterCompile'ターゲットの中で、タスクを呼び出して、あなたのタスクが難読化されていないと言った場合はエラータスクを実行することができます。 –

関連する問題