zoukankan      html  css  js  c++  java
  • 汉化破解:{smartassembly}使用指南

    {smartassembly} 操作指南

    SmartAssembly 主页: http://www.smartassembly.com/

     

    SmartAssembly 是一款不错的 .Net 混淆工具,支持字符串加密,字符串、字段名、流程混淆,程序集合并、移除无用代码、破坏元数据等。下面本文将逐一对 SmartAssembly 的各个功能进行一些简单的介绍。

     

    本次用来测试的程序为 CanYouLib.Framework.dll

     

    首先,启动 SmartAssembly 程序,点击左侧的“Home Page”选项卡,然后再右侧选择“New Project”新建工程。之后界面如下图所示:

     

    查看更多精彩图片

    1.请点击“Browse Assembly”选择CanYouLib.Framework.dll,之后界面如下图所示:

     

    查看更多精彩图片

    你必须先点击“Set Destination”按钮设置加密后程序集的保存位置,之后下面的选项才会被激活,上图最下方的“Save”、“Save As”按钮用于保存工程,“Build”按钮用于编译加密后的程序。请点击“Set Destination”按钮设置加密后程序集的保存位置激活下方的各个加密选项,下面将对常用的几个选项进行简单的介绍:

     

    查看更多精彩图片

    2.Depedencies Merging

     

    查看更多精彩图片

    该选项用于让将要加密的程序集运行所依赖的程序集(不包括 .Net FrameWork)合并为一个单个的程序,对于
    CanYouLib.Framework,上图已经列出了其需要依赖的程序集,如果你想要打包,只需要将其勾选即可,下面的“Rescan Dependencies”用于重新扫描选定程序集所依赖的程序集。

    注意: 某些时候,打包后的程序集可能无法正常运行(例如: 某些有自校验的类库),遇到这种情况,请自己多测试测试。

     

    3.Pruning

     

    查看更多精彩图片

    该选项用于移除程序集中无用的代码与元数据,从而减小文件的大小,提高其性能! 如果你想要对你的程序集使用该功能,那么请选择位于上图左下方的复选框,SmartAssembly 会自动对你的程序集进行扫描并移除,如果你想要自定义地移除命名空间、类或者成员,那么请点击“Advanced Settings”转到高级设置视图,然后在左侧的树中选择要移除的项目,点击“Exlude”移除,完成后点击“Apply”应用设置。

     

    4.Obfuscation

     

    查看更多精彩图片

    该选项用于将程序集中的类名与方法名称混淆为不可读的字符,如果你要使用该功能,那么请选择上图左侧居中的复选框(也可以点“Advanced Settings”进行高级设置)。下面是对“Name Mangling”与“Fields Name Mangling”选项的简单说明:

    Name Mangling(名称混淆):

    I want use only ASCII characters to obfuscate. --- 使用 ASCII 字符进行混淆。

    I want use Unicode unprintable characters to obfuscate. --- 使用 Unicode 不可打印字符进行混淆。

    I want use Unicode unprintable characters and advanced renaming algorithm. --- 使用 Unicode 不可打印字符与高级重命名算法进行混淆。

    Fields Name Mangling(字段名称混淆):

    I want to use a one-to-one renaming scheme. --- 使用一对一的命名方案

    I want to use standard renaming, where all the fields in a class have a different name. --- 使用标准重命名方案,一个类中的所有字段使用不同的名称

    I want to use standard renaming, where fields of a different type can have same name. ---使用标准重命名方案,不同类中的字段可以使用相同的名称

     

    下图为测试程序混淆前与混淆后在 Reflector 中的区别。(左侧为混淆前,右侧为混淆后)

     

    查看更多精彩图片 

    File: E:\TeamProgram\碳足迹\源程序集\CanYouLib.Framework.dll

    Size: 106496 bytes

    File Version: 1.0.0.2

    Modified: 星期六 2010925, 10:42:00

    MD5: 1DCDF8A5DE032A74DDF82EFFB1E015DF

    SHA1: CAF9CBE5ACC3B8273171BF4436DBDE31F7320F55

    CRC32: EC88227A

     

    File: E:\TeamProgram\碳足迹\加壳程序集\CanYouLib.Framework.dll

    Size: 94720 bytes

    File Version: 1.0.0.2

    Modified: 星期日 2010926, 10:36:16

    MD5: C487E8FB6F40B771068DD37D384B0FCB

    SHA1: 5D415FCC3C55FFFECC7EF047FC043C46628452FB

    CRC32: C3546E4E

     

    5.Control FlowObfuscation

     

    查看更多精彩图片

    该选项是对程序集进行流程混淆,他可以打乱你的程序原始运行流程,从而加大程序的破解难度,经过流程混淆的程序一般是无法被一些反编译工具(Reflector )反编译出现代的高级语言代码(C#VB.Net),只能为 IL 代码。另外,由于加上了较多的跳转,所以也加大了破解难度。如果要使用该功能,请先选中要混淆的程序集,然后在右侧选择混淆强度。(混淆强度越大,程序运行速度将会越慢)

     

    6.Strings Encodeing

     

    查看更多精彩图片

    该选项用于对程序集中的字符串进行编码加密,加密后的字符串是无法在程序集中以明文方式找到的,不管你是用 ILDASM(基于 IL)或者 Reflector(基于高级语言)

    下面简单的介绍一下字符串加密原理: SmartAssembly 将程序集中的字符串加密(PublicKeyToken + Hash + Base64)后存储为一个以 Guid 为命名的文件,然后将该文件加入到你的程序集 ManifestResource 表中的最后,该程序中原来字符串赋值处使用 string  MethodName(int) 的函数进行解密。

    如果想使用该功能,请选择“I want to hide important informaton by encoding all the strings in my software.”。

    勾选“I want to use strings encoding with improved protection.”将使用 PublicKeyToken + Hash 进行加密、解密字符串,这样任何人修改字符串后,程序将无法运行。

     

    7.Other Protections

    该选项用于对你的程序集加入一些其他的保护方式(个人觉得作用不是很大)。该选项中有两个子选项,请根据自身情况选择。

    I want to add incorrect metadata. --- 添加错误的元数据来使反编译工具出现错误

    I want to prevent Microsoft IL Disassembler from opening my assembly. --- 阻止 ILDASM 打开你的程序集(这个功能仅可以用 .Net 2.0 的程序,因为在 .Net 1.1 SupperssIldasmAttribute 属性还未被公开)

     

    8.Unhandled Exception

    该选项用于帮助对你的程序中未处理的异常进行捕获并报告,以帮助你修复问题。

    如果你想要使用该功能,那么请选择“I want to improve my software by reporting unhandled exceptions.”并选择或自定义模板然后填上用于自定义模板的信息。

     

    9.Depedencies Emedding

    将你的程序所依赖的程序集内嵌到你的程序中,在运行时,先将你的程序所依赖的程序集解压并释放到内存中。他的使用方法与“Depedencies Merging”一致,但是其性能要优于“Depedencies Merging!

     

    10.Other Optimizations

    该选项用于对你的程序集的性能进行优化,主要有两个选项,请根据选项进行优化。

    I want to improve the memory management. --- 通过自动释放不使用的内存来对程序内存进行优化

    I want to automatically seal classes whenever possible. --- 对程序中所有未被继承的类加上 seal 属性以提高程序性能

     

    11.Debugging

    该选项用于生成调试信息(*.pdb 文件),如果你想要使用该功能,请勾选“I want to generate the debugging information.”选项。

     

    12.Strong Name

    该选项用于为你的程序生成强命名。如果你想要使用该功能,请勾选“I want to sign my assembly with a Strong Name.”选项。

    如果你已有一个强命名文件,那么请选择“Browse for a key”浏览,如果没有请选择“Create a name key”生成一个强命名文件。

     

    当你所有的设置完成后,请点击“Build”按钮生成加密后的程序,编译成功后将会出现如下图所示窗体:

     

    查看更多精彩图片

    上面半部分显示了加密程序集的名称以及加密选项,你可以点击“Open Assembly Folder”打开程序集所在文件夹,或者点击“Run new Assembly”运行加密后的程序。

    下面半部分用于帮助你对你的程序集进行诊断,已修复程序集中的错误!Rebuild with self-diagnostic”用于重新编译你的应用程序并进行自我诊断,“Enable self-diagnostic”用于在下次编译时启用自诊断。

     

     

    :

    SmartAssembly 各版本比较

    查看更多精彩图片

    注意:上面众多选项,一般我们选择  3.Pruning,4.Obfuscation,6.Strings Encodeing 即可。

  • 相关阅读:
    解决页面报错: GEThttp://localhost:8080/favicon.ico 404 (Not Found)
    vs2019快捷键整理
    js保存图片至本地
    PHP输出方式的区别
    js运算精度问题
    Hadoop相关问题
    2015年10月5日 12:49:07
    Hive数据倾斜
    Hadoop错误日志
    使用maven开发MR
  • 原文地址:https://www.cnblogs.com/Gemgin/p/3136271.html
Copyright © 2011-2022 走看看