使用Dotfuscator混淆winphone8应用XAP

最近公司winphone应用有oem(企业定制版)给客户,为了安全就研究了下代码混淆。

 大家可以参考下这个<<C#使用Dotfuscator混淆代码的加密方法>>。

一、注册

首先在Dotfuscator官网上(https://www.preemptive.com/my-account/evaluations?view=evaluations)下载个最新版本,点击here 会要求注册个账号,注册成功并填写 许可信息后会发一个邮件到注册邮箱中,里面有产品序列号(这个序列号只能在一台机子上使用,切记!),有14天的免费试用期。当前最新版本为4.10.1。

使用Dotfuscator混淆winphone8应用XAP_第1张图片

二、创建项目

第一次打开软件需填写序列号,然后创建个项目

使用Dotfuscator混淆winphone8应用XAP_第2张图片

还有一点在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71下若有这两项要删除要不会报错。我同事电脑上没有这,我有,然后生成总不成功,删除就好了,为了安全搞个备份吧。

三、Input选项

使用Dotfuscator混淆winphone8应用XAP_第3张图片

将xap项目中引用的dll右键(exclude assembly from package)去掉,只保留主项目。上面的Newtonsoft.Json.dll不去掉怎样都不行,要不混淆失败,要不生成的xap不能部署(错误类型:Newtonsoft.Json.dll were not resigned. You will need to sign these dotfuscated assemblies manually.;

WARNING: Newtonsoft.Json has non-input Friend Assemblies and is not in Library Mode; internal members may be renamed or pruned. References from non-input Friend Assemblies to the internal members of Newtonsoft.Json may no longer be valid)。

使用Dotfuscator混淆winphone8应用XAP_第4张图片

四、Settings选项

使用Dotfuscator混淆winphone8应用XAP_第5张图片

五、Rename选项使用Dotfuscator混淆winphone8应用XAP_第6张图片

将去掉的dll命名空间添加到不更改名称选项中(exclude),type和method也要加上。

使用Dotfuscator混淆winphone8应用XAP_第7张图片

“Renaming Scheme” 选择“Unprintable”(不可打印字符,即乱码),也可以选择其他如小写字母、大写字符、数字的方式。

但改为unprintable可能会引发错误(会报“eval_”什么的错误),我改的是数字

六、 String Encryption 选项

使用Dotfuscator混淆winphone8应用XAP_第8张图片

全选即可

七、其他的选项选择默认,然后保存、编译即可(第一次保存时会要求保存个项目操作xml文档,编译成功后会在原始xap相同路径中会生成个名为Dotfuscated的文件夹,里面有混淆成功的xap文件和混淆具体内容的map.xml文件)

使用Dotfuscator混淆winphone8应用XAP_第9张图片

当过期后重新注册,重新获得sn;还要在C:\Documents and Settings\All Users\Application Data\PreEmptive Solutions\Dotfuscator Professional Edition Evaluation\4.0中删除Dotfuscator.dat继续使用14天。


突然遇到Dotfuscator加密应用闪退现象,花了几天才发现原因:第三方控件不要使用系统事件,否则加密会报错!


在c4fToolkit
里面加个手势事件(ManipulationStarted),加密后应用会闪退

xmlns:c4fToolkit="clr-namespace:Coding4Fun.Phone.Controls;assembly=Coding4Fun.Phone.Controls"
     <c4fToolkit:Tile  ManipulationStarted="goback_Manipulate"  Width="0" Height="70" Title=""  Click="goback_Click"   >
          <Image  Grid.Column="0" Source="/images/back.png" Stretch="None" RenderTransformOrigin="0.682,0.044" Margin="-44,0,-58,0"  />
  </c4fToolkit:Tile>


解决方案:在控件上方加个容器,在容器上加事件


<StackPanel Grid.Column="0"   ManipulationStarted="goback_Manipulate"  >
     <c4fToolkit:Tile   Width="0" Height="70" Title=""  Click="goback_Click"   >
          <Image  Source="/images/back.png" Stretch="None" RenderTransformOrigin="0.682,0.044" Margin="-44,0,-58,0"  />
     </c4fToolkit:Tile>
</StackPanel>


你可能感兴趣的:(加密,WinPhone,Dotfuscator,XAP)