VS2008 ClickOnce发布Xenocode混淆的应用

来源:互联网 发布:阿里巴巴外贸绑定域名 编辑:程序博客网 时间:2024/06/06 14:22

有混淆加密的Dotnet程序实在太无语了,反编译后的代码可读性极高。混淆器算是个门槛了,如何融入ClickOnce,我参考了这个地址。但不知为何,使用Dotfuscator生成的程序无法执行,直接退出。后来找到Xenocode Postbuild,经过手动测试成功。于是考虑与ClickOnce结合。

一样的思路,也是修改项目工程文件末尾的Microsoft.Common.targets部分。

增加内容如下:

<PropertyGroup>

    <XenocodeLocation>"K:\Crack\DotNetReflector\postbuild.exe"</XenocodeLocation> (Xenocode Postbuild绝对路径

    <XenocodeProjectLocation>"$(ProjectDir)djcj.postbuild"</XenocodeProjectLocation> (提前运行Xenocode Postbuild后的配置文件,保存在项目文件夹内。Xenocode Postbuild用法详后。

    <XenocodeOutputLocation>"$(ProjectDir)temp"</XenocodeOutputLocation> (创建的临时文件夹,用来保存混淆好的文件

    <PostBuildEvent>

    </PostBuildEvent>

  </PropertyGroup>

  <Target Name="BeforeBuild" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

    <CreateProperty Value="true">

      <Output TaskParameter="Value" PropertyName="Obfuscate" />

    </CreateProperty>

  </Target>

上面这段Target的意思是在生成之前触发——若配置和平台分别是Release(指定Release可以避免调试的时候开启混淆)和AnyCPU的时候,给一个名叫Obfuscate的属性赋True值。

  <Target Name="AfterCompile" Condition=" '$(Obfuscate)' != '' "> (编译之后触发。Target节点与程序中的事件相像

    <Exec Command="$(XenocodeLocation) $(XenocodeProjectLocation)" />(执行命令+参数

    <Copy SourceFiles="$(ProjectDir)temp\APP.exe" DestinationFiles="$(ProjectDir)obj\Release\APP.exe" />(Copy temp中的项目主程序文件到obj\Release里

    <Copy SourceFiles="$(ProjectDir)temp\Sys.dll" DestinationFiles="$(SolutionDir)Sys\obj\Release\Sys.dll" />

    <Copy SourceFiles="$(ProjectDir)temp\Sys.dll" DestinationFiles="$(SolutionDir)Sys\bin\Release\Sys.dll" />

Copy混淆后的自定义程序集到自身的obj\Release和bin\Release里。之所以Copy两次,是因为项目依赖的这个Sys程序集先于本项目编译完成,因此混淆后的程序集要Copy回去。

  </Target>


Xenocode Postbuild的配置要点:

1、开始配置前一定生成一次,且不能带上边那些标签的。

2、项目主程序和自制程序集都放到输入中,不要管软件的警告!这些文件的来源都是obj\Release文件夹。

3、预设务必选择ClickOnce;不选择VM虚拟机。

4、选择生成多个程序集;输出目录是项目文件夹里的Temp目录。


带Xenocode混淆的ClickOnce发布注意事项:

1、无论是生成还是发布之前务必清理一次项目。

0 0
原创粉丝点击