C#语言的类型变量、反编译与代码保护
作者:互联网
类型和变量
- 类型:声明可以包含其成员、基类型、它实现的接口和该类型允许的操作。 保留字:@
- 变量:用于引用特定类型的实例的标签。
- 值类型 和 引用类型。
- 值类型的变量直接包含它们的数据。
- 引用类型的变量存储对数据(称为“对象”)的引用。 对于引用类型,两个变量可以引用同一个对象。
由上图的二叉树显示结构可以看出,类型包括值类型和引用类型,分别有不同的组成部分。分为基础结构类型和用户自定义结构类型;基于两种不同的结构类型,在堆栈中存储可由 下图呈现:
在上图左侧的Method1 中,定义了int 值类型和class 引用类型,由于值类型存储空间小,由栈管理数据并返回变量a 一个内存地址。而引用类型class 则在栈中分配一块内存地址指向堆中的数据
同样的,假设我们在Method1中,定义 class2 obj2 = obj; 这样的结构语句的情况下,栈中同样会开辟一块内存地址交由obj2 管理,但指向是和obj 同样堆中的数据Obj 对象。
IL字节代码探索
IL 汇编程序
作用:将中间语言IL编译成DLL文件
引用:Ilasm.exe(IL 汇编程序) - .NET Framework | Microsoft Docs
打开 Ilasm.exe所在位置:
操作步骤:
1、将ildasm 程序查看的文件【文件】-【转储】 成IL 中间语言文件数据
2、编辑ComsoleSample.il 右键打开为文本文档
3、编辑需要修改的内容,并保存修改的数据信息
4、在当前Il 文件所在目录,运行cmd命令,并输入执行命令:ilasm全路径 xx.il /dll /output:xx.dll
IL 反汇编程序
作用:将DLL 程序反编译成IL 中间语言
引用:Ildasm.exe(IL 反汇编程序) - .NET Framework | Microsoft Docs
打开 Ildasm.exe所在位置:
运行Ildasm.exe程序
- 终端输入:ildasm
- 复制文件位置,cmd 命令打开文件路径
将需要反编译成IL的dll 文件拖入运行的ildasm.exe 程序中;即可看到dll 生成的IL中间语言。
应用程序保护
Dotfuscator Community 为开发人员、架构师和测试人员提供了一系列的软件保护和强化服务。 Dotfuscator Community 中包含的 .NET 模糊处理和其他应用程序保护功能的示例有:
- 重命名 标识符,增加对已编译程序集实施反向工程的难度。
- 防篡改:检测已遭篡改的应用程序的执行,并终止或响应已遭篡改的会话。
- 防调试:检测向正在运行的应用程序附加的调试器,并终止或响应已遭调试的会话。
- 防取得 root 权限的设备:检测应用程序是否在取得 root 权限的 Android 设备上运行,并终止或响应这些设备上的会话。
- 应用程序到期行为:对生命周期结束日期进行编码,并终止已到期的应用程序会话。
文章引用来源:Dotfuscator Community - Visual Studio (Windows) | Microsoft Docs
命令行解析 CommandLineParser
文章引用来源:Home · commandlineparser/commandline Wiki · GitHub
本文引用来源:htttp://www.xcode.me
标签:反编译,exe,变量,C#,应用程序,IL,类型,引用 来源: https://www.cnblogs.com/panth/p/16102269.html