zoukankan      html  css  js  c++  java
  • C#使用Xamarin开发可移植移动应用进阶篇(9.混淆代码,防止反编译)

    前言

    系列目录

    C#使用Xamarin开发可移植移动应用目录

    源码地址:https://github.com/l2999019/DemoApp

    可以Star一下,随意 - -

    说点什么..

    今天讲讲如何混淆我们的C#代码,来达到反编译的目的

    今天的学习内容?

    使用Dotfuscator来混淆C#代码,防止反编译.

    正文

    嗯,既然是客户端应用,自然而然就需要一些防止源码泄漏的手段.通过C#编写的APP,完全是可以直接解压APK,然后得到里面的DLL然后进行反编译的..

    如下图:

    嗯..这样就会造成代码泄漏..

    下面就介绍一下,如何使用VS自带的Dotfuscator来进行混淆代码.

    1.安装Dotfuscator

    打开VS2017的安装工具,如下,点击修改按钮.

    选择单个组件,如下:

    在代码工具中找到Dotfuscator并添加.(注意:这里我们安装的是社区版,功能有限,如果需要更深度的混淆,请购买专业版..)

    这样,我们的安装就完成了.

    2.将Dotfuscator与Xamarin项目集成(重点)

       2.1下载Dotfuscator-Xamarin MSBuild目标文件

         这个文件是用来生成的,直接下载就行,地址:下载

        然后复制到项目路径下.

       

      2.2保护我们的安卓项目.

         首先,我们要先卸载安卓项目,如图:

        

       然后编辑csproj文件.如图:

     我们在PropertyGroup标签里,添加Dotfuscator的相关配置.

    <DotfuscatorXamarinCliPath>(这里是你dotfuscator的安装位置)C:VS2017Common7IDEExtensionsPreEmptiveSolutionsDotfuscatorCEdotfuscator.exe</DotfuscatorXamarinCliPath>
    <DotfuscatorXamarinConfigFileName>DotfuscatorConfig.xml</DotfuscatorXamarinConfigFileName>
    <DotfuscatorXamarinGenerateNewConfigFile>true</DotfuscatorXamarinGenerateNewConfigFile>

     第一个是你的Dotfuscator的安装位置,自行选择

      然后在我们文件的最下面,导入刚刚下载的生成文件.如下图:

    设置生成选项,我们找到如下代码:

    这里面的配置就是用来设置生成选项的,你可以任意选择是debug还是Relase.

    这里,我们当然设置Relase,只有发布的时候才保护嘛 ..调试的时候保护有啥用 - - .

    我们在这个标签下,添加代码如下:

    <DotfuscatorXamarinEnabled>true</DotfuscatorXamarinEnabled>

    2.2生成项目,并设置混淆内容.

    修改完成后,我们将项目重新加载进去.

    然后存档发布.

    如果一切正常的话,会弹出如下界面:

    因为我这里用的是免费的社区版,所以功能有限,

    我们直接点击生成,完成后关闭这个界面.(很重要,不关闭..就一直卡在生成那里..)

    这样,我们就完成了整个C#代码的混淆工作.

    3.反编译混淆后的Dll

    如图所示,因为社区版的功能较少,所以只能混淆一些变量名..其实混淆的程度有限.

    专业版提供了更多的选择..嗯..他可以直接混淆整个控制流程 如下效果:

    写在最后

    今天的内容就这些了.其实这个混淆方案对于其他的C#项目也是适用的.嗯..大家可以随意试试.

  • 相关阅读:
    vue-element 时间选择器datepicker 第二次展示change无效,数据刷新页面不刷新
    uniapp
    mysql
    python
    pycharm
    从maven的debug compile到java的编译时注解(与springboot项目整合)
    关于H5+实现APP检查自动更新与 调用 plus.runtime.install 弹出不了安装界面问题
    Linux常用命令
    mybatis中sql语句必须用${}而不能不用#{}的情况
    Mybatis映射文件中的参数传递
  • 原文地址:https://www.cnblogs.com/GuZhenYin/p/7463286.html
Copyright © 2011-2022 走看看