zoukankan      html  css  js  c++  java
  • Dotfuscator 保护您的应用程序

      自从 .Net framework 推出之后,受到广泛的使用与欢迎;而相信您也听过 Native Code 与 Managed Code;执行在 .Net CLR 环境下的应用程序都是属于 Managed Code 的范围,而 Managed Code 在编译时会先编译成 MSIL (Microsoft Intermediate Language),实际执行时交由 JIT (Just-In-Time) 编译成机器码之后执行,而由于架构上的变更,MSIL (也就是我们的 .Net exe、dll 档案等) 是比较容易被解译的,因此便出现了混淆器,用来降低解译后程序代码的可读性、混淆流程、变量重新命名等,藉此来保护我们的应用程序;本篇主要将介绍如何利用混淆器来保护您的 Windows Phone 7 应用程序。

      议程

      取得软件

      为什么要使用混淆器

      开始使用

      测试经过混淆器产生的应用程序

      取得软件

      首先,要保护我们的应用程序必须要先取得软件;而 PreEmptive Solutions 与微软合作,推出了免费的版本让您可以保护您的 WP7 应用程序,那要怎么取得呢?首先到申请的位置

      http://www.preemptive.com/windowsphone7.html

      之后您会在右边看到 REQUEST DOWNLOAD 的按钮,像是下图这样

      点击之后会带到申请的页面,这个地方是要输入您的个人资料,大致上会像下图

      在这边要特别注意,您软件的序号以及软件下载位置会经由 email 寄送到您的个人信箱中,因此 email 字段填写时要特别留意正确性;而附注字段的地方记得要填上 WP7,表示您要申请用于 Windows Phone 7 应用程序的用途上。

      数据填写完成送出后,大约一个工作天的时间,您就会收到一封 email,内含软件的下载位置以及安装序号,内容大致上会像下图

      接下来您就可以下载软件并进行安装了;而如果您有想要使用 Intelligence 的相关功能,您可以回复这封邮件,并且将您安装后的软件序号提供给他,之后会再回复给你启动 Intelligence 的序号,而软件的序号在安装后可以在『Help\About』的画面中看到

      为什么要使用混淆器

      您可能会有疑问,为什么要使用混淆器?或者还不清楚混淆器的功能以及主要作用,下面笔者简单的用例子的方式来说明;例如以先前笔者的 BurshDemo 的范例程序来看,在 btnRadialGradient 按钮按下的源代码是下面这样

      而在没有经过混淆器编译过的程序代码档案 (exe 或是 dll),在反组译之后呈现出来的结果会像是这样子

      你会发现,几乎是完完整整的呈现出来了,而且过程是相当的简单;因此就必须要藉由混淆器来让这件事件变得困难,这也是混淆器存在的目的了。

      开始使用  软件的安装过程相当的简单,笔者这边就不再赘述了;安装完毕之后,您会在菜单中看到如下的项目

      其中 PDF 的档案 (Userguide) 是说明文件,另一个就是我们要使用的主程序了;执行之后第一个画面会看开启就项目或是建立新项目的画面

      在这个画面中,是选择要建立新的项目或是开启之前使用过的项目,这是由于在 Dotfuscator 中有相当多的设定可以让你去做设定以及调整,项目是用来储存这些相关的设定以及对应的 Visual Studio 项目。

      接下来要设定一下使用组件的参考位置,这个设定是位于 Setting 的页面中,加入的方式可以参考下图;这边设定参考组件的位置是让 Dotfuscator 能够分析程序代码中的型别、使用到的组件以及其他相关的信息

      而要加入的组件参考位置依照操作系统会有一些分别,会位于

      x64

      C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone

      x86

      C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone

      加入之后,第二个步骤是加入要混淆的项目,这个设定是位于 Input 页面中,例如下图

      这个地方就可以指定你编译后产生的 xap 档案,指定好了之后,接下来便是其他的设定项目了;先回到 Setting 的页面中,首先先来看看经过混淆器编译后的档案会放置在什么地方呢?这个在 Build Setting 中可以去做设定,例如笔者这边是设定成 D:\WP7 的目录,而在这个部分原始的设定是『${configdir}\Dotfuscated』您也可以保留这样的设定,这个设定的意思是经过混淆器编译后的档案会跟您的 xml 配置文件放在相同的位置,这部分可以依照您的喜好下去做设定。

      到这边为止,就已经完成了基本的环境设定了,接下来需要再调整一些设定;这些设定位在 Global Options 这个项目中,在 Global Option 中可以设定 Dotfuscator 各功能是开启或关闭,而在这边,我们将重新命名 (Renaming) 以及 Control Flow 的项目给关闭起来 (依照预设的设定,这两个项目是开启的),例如下图这样

      那么为什么要关闭 Renaming 项目的功能呢?这是因为在应用程序中,可能会自定义类别来储存各种数据使用,例如说建立了 Book 的类别,而其中可能会有标题、出版日期等属性存在,大概像这样子

    public string Title
            {
                get { return _title; }
                set { _title = value; }
            }
            public string PubDate
            {
                get { return _pubdate; }
                set { _pubdate = value; }
            }
      而在 XAML 的地方,利用了数据系结的功能去做显示,例如
    1. <TextBlock VerticalAlignment="Center" Grid.Column="1" Margin="5,0,0,0" Grid.Row="1" FontSize="32" TextWrapping="Wrap" Text="{Binding Path=Title}"/>
    2.  
    3.     <TextBlock VerticalAlignment="Center" Grid.Column="1" Margin="5,0,0,0" Grid.Row="1" FontSize="32" TextWrapping

      而混淆器中 Renaming 的功能会将各变量、方法等作重新命名,而之间可能会发生对应不到的情形,因此会造成应用程序的错误发生,这部分要特别的留意一下。

      而 Control Flow 的部分是会在程序代码中加入一些混淆程序流程以及架构的程序代码,而在现阶段我们也不希望 Dotfuscator 这么做,因此也设定为关闭。

      设定完成之后,就可以按下 Build Project 的按钮来建立项目了,按钮的位置可以参考下图

      建置之后没有意外的话会在下方的说明窗口中出现完成的讯息,

      而之后就会在您指定的位置产生一个新的 xap 档案了;完成

  • 相关阅读:
    BZOJ 1391: [Ceoi2008]order
    BZOJ 4504: K个串
    2019 年百度之星·程序设计大赛
    POJ 2398 Toy Storage (二分 叉积)
    POJ 2318 TOYS (二分 叉积)
    HDU 6697 Closest Pair of Segments (计算几何 暴力)
    HDU 6695 Welcome Party (贪心)
    HDU 6693 Valentine's Day (概率)
    HDU 6590 Code (判断凸包相交)
    POJ 3805 Separate Points (判断凸包相交)
  • 原文地址:https://www.cnblogs.com/zhibin/p/2565820.html
Copyright © 2011-2022 走看看