首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序员级别鉴定书(.NET面试问答集锦)

一个文件名吗? 有何不同? 这里问的是强名称概念。Assembly.Load("foo.dll")加载程序集的方法是否正确? 强签名的程序集与非强签名的程序集有何不同?...通过签发具有强签名的程序集合,可以确保名称的全局唯一性!因为强名称是依赖于唯一的密钥对来确保名称的唯一性,其他人不会生成与你相同的程序集名称(不同的私钥产生的名称不同)。...强名称保护程序集的版本沿袭,因为强名称的唯一性能够确保没有其他人能够生成你的程序集的后续版本。...强名称提供可靠的完整性检查,通过.NET Framework安全检查后,可以确保程序集内容在生成后未被更改过! DateTime 可以为null吗? DateTime 不能为null。...此提前编译模式使用本机映像生成器 (Ngen.exe) 将 MSIL 程序集转换为本机代码,其作用与 JIT 编译器极为相似。

1.8K70

.NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)

UWP 程序有 .NET Native 可以将程序集编译为本机代码,逆向的难度会大很多;而基于 .NET Framework 和 .NET Core 的程序却没有 .NET Native 的支持。...虽然有 Ngen.exe 可以编译为本机代码,但那只是在用户计算机上编译完后放入了缓存中,而不是在开发者端编译。 于是有很多款混淆工具来帮助混淆基于 .NET 的程序集,使其稍微难以逆向。...目前我使用的版本是 6,它提供了对 .NET Framework 程序的多种保护方式: 强签名 Strong Name Signing 强签名可以确保程序之间的依赖关系是严格确定的,如果对其中的一个依赖进行篡改...,将导致无法加载正确的程序集。...生成调试信息 Generate Debugging Information 可以生成混淆后的 pdb 文件 以上所有 SmartAssembly 对程序集的修改中,我标为 粗体 的是真的在做混淆,而标为

2.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

    什么是程序集 用csc.exe进行编译 .NET程序执行原理 JIT编译 AOT编译 程序集的规则 程序集的加载方式 强名称程序集 程序集搜索规则 项目的依赖顺序 为什么Newtonsoft.Json版本不一致...需要值得注意的一点是:当你试图在已生成好的强名称程序集中引用弱名称程序集,那么你必须对弱名称程序集进行签名并在强名称程序集中重新注册。...之所以这样是因为一个程序集是否被篡改还要考虑到该程序集所引用的那些程序集,根据CLR搜索程序集的规则(下文会介绍),没有被签名的程序集可以被随意替换,所以考虑到安全性,强名称程序集必须引用强名称程序集,...举个例子: 我有一个控制台程序,其路径为D:\Demo\Debug\demo.exe,通过该程序的元数据得知,其引用了一个程序集名称为aa的普通程序集,引用了一个名为bb的强名称程序集,该bb.dll的强名称标识为...既然是共享存放的位置,那不可避免的会遇到文件名重复的情况,那么为了杜绝该类情况,规定在GAC中只能存在强名称程序集,每当CLR要加载强名称程序集时,会先通过标识去GAC中查找,而考虑到程序集文件名称一致但版本文化等复杂的情况

    2.8K63

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

    强名称程序集是具有唯一标识性的程序集,并且可以通过对比哈希值来比较程序集是否被篡改,不过仍然有很多手段和软件可以去掉程序集的签名。...需要值得注意的一点是:当你试图在已生成好的强名称程序集中引用弱名称程序集,那么你必须对弱名称程序集进行签名并在强名称程序集中重新注册。...之所以这样是因为一个程序集是否被篡改还要考虑到该程序集所引用的那些程序集,根据CLR搜索程序集的规则(下文会介绍),没有被签名的程序集可以被随意替换,所以考虑到安全性,强名称程序集必须引用强名称程序集,...故而每当我们通过VS编译器对项目右键重新生成项目(重新编译)时,VS都会将引用的程序集给复制一份到项目bin\输出目录Debug文件夹下,我们可以通过VS中对引用的程序集右键属性-复制本地 True/Flase...既然是共享存放的位置,那不可避免的会遇到文件名重复的情况,那么为了杜绝该类情况,规定在GAC中只能存在强名称程序集,每当CLR要加载强名称程序集时,会先通过标识去GAC中查找,而考虑到程序集文件名称一致但版本文化等复杂的情况

    4.6K30

    当InternalsVisibleToAttribute特性遭遇强签名

    举个例子,如右图所示,我将某个组件定义在Lib项目中,而Test是与之对应的单元测试项目。...从上面的出错消息中我们不难看出,编译错误的原因是:当自身具有强签名的情况下,通过InternalsVisibleToAttribute指定的程序集也需要具有强签名。...那么,如果我们将单元测试项目Test也加上强签名,并将InternalsVisibleToAttribute特性指定成程序集的强名称,是否可以解决这个问题呢?...在对Test项目按照上面的步骤进行强签名后,并重新修改了应用在Lib程序集上的InternalsVisibleToAttribute特性设置,即设置成包含4个部分(名称、版本、语言文化和公钥令牌)的程序集强名称...我们可以通过强名称(SN.exe)命令行工具直接将公钥从密钥文件中提取出来。

    660110

    如何使用EvtMute对Windows事件日志进行筛选过滤

    也买你来下载最新的EvtMute已编译版本。...工具使用 EvtMuteHook.dll中包含的是该工具的核心功能,成功注入之后,它将会应用一个临时过滤器,允许报告所有事件,这个过滤器可以动态更新,而不必重新注入。...而SharpEvtMute.exe则是一个C#程序集,它可以通过在shad0w中执行或在Cobalt Strike中轻松运行程序集。为了更好地与shad0w集成,我还打算用C编写原生版本。...复杂型过滤器 EvtMute的过滤器是可以动态变更的,而且无需重新注入钩子,这样可以方便广大研究人员随时轻松更新原有的过滤器以及过滤规则。...因此,我建议大家手动将EvtMuteHook.dll注入到事件日志服务之中。 它的进程PID可以通过运行下列命令来查看,你还可以通过C2框架来将钩子手动注入至shellcode中。

    90210

    .NET面试题系列 - .NET框架基础知识(2)

    CLR是和程序集一起工作的,而不是和托管模块一起。...一个程序集可以包括多个命名空间,反之则不行 Using引用的对象是命名空间,而不能是程序集。你不能using mscorlib.dll。...在全局程序集缓存中部署的程序集必须具有强名称。将一个程序集添加到全局程序集缓存时,必须对构成该程序集的所有文件执行完整性检查。 4 综合问题 题目:hello world程序。...问:为什么我从来没见过mscorlib.dll? 答:因为它在GAC里,每次自动引用。 问:如果我用VS编程,运行程序(非调试模式),会发生什么? 答:VS会先用C#编译器将源代码编译为一个程序集。...将IL转换为机器码。机器运行机器码,打印出hello, world!,然后退出程序。 问:你刚刚提到了程序集,那是作什么用的? 答:程序集是部署和重用应用程序的最小单元。

    1.3K20

    Spark系列 - (3) Spark SQL

    Hive的出现解决了MapReduce的使用难度较大的问题,Hive的运行原理是将HQL语句经过语法解析、逻辑计划、物理计划转化成MapReduce程序执行。...而右侧的DataFrame却提供了详细的结构信息,使得Spark SQL 可以清楚地知道该数据集中包含哪些列,每列的名称和类型各是什么。 DataFrame是为数据提供了Schema的视图。...Dataframe 是 Dataset 的特列,DataFrame=Dataset[Row] ,所以可以通过 as 方法将 Dataframe 转换为 Dataset。...Row 是一个类型,跟Car、Person 这些的类型一样,所有的表结构信息我都用 Row 来表示。DataSet 是强类型的。比如可以有 Dataset[Car],Dataset[Person]。...DataFrame只是知道字段,但是不知道字段的类型,所以在执行这些操作的时候是没办法在编译的时候检查是否类型失败的,比如你可以对一个String进行减法操作,在执行的时候才报错,而DataSet不仅仅知道字段

    43110

    在PyTorch中构建高效的自定义数据集

    此外,DataLoader还会为对数据进行重新排列,因此在发送(feed)数据时无需重新排列矩阵或跟踪索引。...如果您没有结构良好的数据集,这将很有用;例如,如果Argonians拥有一个与性别无关的名称,我们将拥有一个名为“Unknown”的文件,并将其放入性别集合中,而不管其他种族是否存在“Unknown”性别...to_one_hot使用数据集的内部编码器将数值列表转换为整数列表,然后再调用看似不适当的torch.eye函数。实际上,这是一种巧妙的技巧,可以将整数列表快速转换为一个向量。...John'转换为大小4xC的二维张量,'Steven'转换为大小6xC二维张量,其中C是字符集的长度。DataLoader尝试将这些名称堆叠为大小2x?...首先,我在构造函数引入一个新的参数,该参数将所有传入名称字符固定为length值。我还将\0字符添加到字符集中,用于填充短的名称。接下来,数据集初始化逻辑已更新。

    3.6K20

    C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService(二)

    强名称(Strong Name):共享程序集通常需要具有强名称,这是为了确保程序集的唯一性和安全性。强名称是一个由公钥加密的哈希值,它包含程序集的名称、版本号、文化信息等。...强名称使得两个不同的程序集即使版本号相同也可以被区分开来,同时还可以提供一定的防篡改保护。总结区别:私有程序集是应用程序特定的,通常位于应用程序安装目录中,不与其他应用程序共享。...共享程序集是可以供多个应用程序共享使用的,通常位于全局程序集缓存(GAC)中,需要具有强名称。共享程序集适用于需要代码重用和版本控制的情况,而私有程序集适用于独立部署的应用程序。56....3、强命名(Strong Naming)GAC 要求程序集是强命名的,即具有唯一的名称、版本号、文化信息,并经过数字签名。强命名确保程序集的唯一性,防止误用、篡改或冒充。...4、提高性能GAC 中的程序集在第一次加载后通常会被缓存,这有助于提高性能,因为其他应用程序可以重用已加载的程序集而无需重新加载。

    28610

    使用 ETW 对 .NET 应用程序进行性能诊断

    将这个原理扩展一下,您可利用 PerfMonitor 快速审核托管程序的多个方面的性能,而不仅仅是内存。...高的分配速率出现在 CPU 时间下面,多数情况下这表示将获得 CPU 增益 – 这与您发现的情况一样。但修复后的分配速率仍比较高,这表示进行了大量分配(您能纠正此问题吗?)。...如果花费的时间很长(例如,启动应用程序所需的大部分时间都由 JIT 编译所占用),则应用程序可以从本机映像生成 (NGen) 中受益,它可通过对程序集进行预编译并将其保存到磁盘上来消除 JIT 编译时间...也就是说,对程序集进行 JIT 编译并将其保存到磁盘上,这样便无需对后续执行进行 JIT 编译。...Security ETW Events 捕获有关强名称和 Authenticode 验证的信息。 Stack ETW Event 捕获可用于其他事件以在引发事件后生成堆栈跟踪的信息。

    1.5K60

    Attacking SQL Server CLR Assemblies

    为SQL Server制作自定义CLR DLL 将CLR DLL导入SQL Server 将CLR DLL转换为十六进制字符串并在没有文件的情况下导入它 列出现有的CLR存储过程 将现有CLR程序集导出到...我创建了一个名为"Create-SQLFileCLRDll"的PowerUpSQL函数来动态创建类似的DLL和TSQL脚本,它还支持用于设置自定义程序集名称、类名称、方法名称和存储过程名称的选项,如果没有指定...[object_id] 通过此查询我们可以看到文件名、程序集名称、程序集类名称、程序集方法以及该方法映射到的存储过程 您应该在结果中看到"my_assembly",如果您运行我之前提供的"Create-SQLFileCLRDll...-ExportFolder c:temp | Format-Table -AutoSize DLL可以在输出文件夹中找到,该脚本将根据每个服务器名称、实例和数据库名称动态构建文件夹结构 现在您可以使用您喜欢的反编译器查看源代码...我可以使用自定义CLR在SQL Server中提升权限吗?

    1.7K20

    通俗易懂的ArcGis开发快速入门

    但我们要注意的是,要素表(FeatureClass)存储图像的字段是表test2的SHAPE,而不是在test2_SHAPE_Index表中;要素表(FeatureClass)默认第一个字段是主键,名称为...要素集(IFeatureDataset): 要素集,顾名思义就是要素表的集合,创建要素集的时候要提供空间参考(SpatialReference),常规使用时,可以直接将地图的空间参考提供给要素集,创建代码如下...因为是使用VS2017,所以在工具箱中我们看不到ArcGis的工具;需要我们手动引入ArcGis工具,工具箱—选择项—.NET Framework组件,找到ESRI程序集下的工具,引入即可。...+ dataset_item.Type); IGeoDataset geoDataset = dataset_item as IGeoDataset; //也可以这样强转...转换为IGeoFeatureLayer,然后取他的Renderer,而Renderer里的Symbol就已经有值了。

    1.2K20

    汇编寄存器的规则

    这很重要,因此可以将一个编译器编译的代码与另一个编译器编译的代码一起使用。...必须在函数调用开始时停止以查看或修改参数,而不必实际进入程序集。 # Objective-C 和寄存器 如上一节所述,寄存器使用特定的调用规则。 您也可以将该知识其应用于其他语言。...注意:关于 LLDB,我一直没有告诉您的是,LLDB 可以以argX形式来引用寄存器,其中X是参数号。还记得RDI是第一个参数,而RSI是第二个参数吗?...在LLDB中,可以通过arg{X}形式来引用寄存器,其中X是参数号。还记得RDI是第一个参数,而RSI是第二个参数吗?在LLDB中,可以通过argX形式来引用寄存器,其中X是参数号。...我对右上方按钮的名称和接收者感到好奇,该按钮可以直接定位用户的具体位置。

    2.6K50

    fstream 中文路径_gradle files have changed

    目录 中文路径 编译器 统一字符集 修正方法 改全局的Locale 使用wstring 字符集改为宽字符集 升级编译器 一劳永逸 将fstream再包装 总结 ---- 在C++的标准库中,std::fstream...我当时的修改方法是调用重载的open(wstring),即将string的路径,转为wstring,然后fstream就可以打开有中文路径文件了,缺点是在string转wstring时需要调用windows...统一字符集 程序运行的操作系统环境有字符集、程序源码文件有字符集、程序运行后处理字符也有字符集,改字符集是个繁琐的事情,源码文件、软件环境、都需要改。...定义一个string转wstring的函数,使用fstream的open函数时,先调用转换为wstring,然后调用open函数。...3.一劳永逸 几种方法中都有缺点,转wstring的方式引入了操作系统的依赖,在我的产品代码中想尽量少依赖,可以用升级编译器的方式,但有几个库是vs2008的,都升级有些繁琐。

    1.3K10

    新版 PyTorch 1.2 已发布:功能更多、兼容更全、操作更快!

    TorchScript 编译器将 PyTorch 模型转换为静态类型的图形表示,为 Python 不可用受限环境中的优化和执行提供了机会。...用户可以将模型逐步转换为 TorchScript,然后将编译后的代码与 Python 无缝混合即可。...例如,模块中的 nn.TransformerEncoder 组件可以在无需 nn.Transformer 的情况下单独使用。...对于大小的名称,我们用前缀 n_(例如「大小(n_freq,n_mel)的张量」)命名,而维度名称则不具有该前缀(例如「维度张量(通道,时间)」);并且所有变换和函数的输入我们现在首先要假定通道。...因此,我们去掉了需要事先重新编码视频的步骤,因为它会涉及到: 一个预处理步骤,该步骤将复制数据集并且重新编码它。 时间和空间的成本,因为这种重新编码操作非常耗时。

    1.9K40

    汇编程序,编译器和解释器的简短介绍【Programming】

    AC程序员将读为“ X被分配了1加2的结果”。 请注意,程序员无需说出将x放在内存中的位置,因为编译器会处理该问题。...一旦有了编译器,就可以在不做任何修改的情况下为新计算机重新编译高级语言程序。 高级语言的编译确实具有革命性。 image.png 1983年发布的IBM PC XT是降低硬件成本的早期例子。...解释器 随着时间的流逝,出现了一种新的编程模型,其中一种称为“解释器”的特殊程序可以读取程序,并将其转换为可立即执行的计算机指令。解释器将程序作为输入,并将其解释为中间形式,就像编译器一样。...解释器和虚拟机之间的主要区别在于,虚拟机实现了通过其虚拟指令集访问的理想化CPU。 这种抽象使编写前端语言工具成为可能,这些工具可以编译用不同语言编写的程序并以虚拟机为目标。...结语 我希望您喜欢这篇关于软件中一些不太显眼的部分的入门文章。还有什么话题是你想让我接着深入研究的吗? 请在评论中告诉我。 本文最初发表在PyBites上 ,经许可后转载。

    1.3K00

    IL编织器 --- Fody

    这种技术非常强大,例如,可以将简单属性转换为完整的 INotifyPropertyChanged 实现,添加对空参数的检查,添加方法计时,甚至使所有字符串比较都不区分大小写。...「Fody」 处理的底层任务包括: 将 MSBuild 任务注入到构建流程中。 解析程序集和 pdb 文件的位置。 抽象了与 MSBuild 日志记录的复杂性。...将程序集和 pdb 文件读入 Mono.Cecil 对象模型中。 根据需要重新应用强名称。 保存程序集和 pdb 文件。...「Fody」 使用 Mono.Cecil 和基于插件的方法在编译时修改 .NET 程序集的中间语言(IL)。 它不需要额外的安装步骤来构建。 属性是可选的,具体取决于所使用的编织器。...InlineIL.Fody 该插件允许在编译时将任意IL注入到程序集中。

    61310

    IL DASM反编译工具使用c# https:www.cnblogs.comcaokai520p4921706.html

    我最早接触到这工具是公司同事使用他反编译exe程序,进行研读和修改。感觉他还是很强大。   ...ildasm.exe反编译工具将IL汇编成可跨平台可执行的(pe)文件。可供我们了解别人代码和修改。有了他我们看待问题可以不用停留在编辑器层面,可深入中间层。...已上信息填写完成后,在“工具”选择卡中能找到我们刚增加的外部工具名称(IL_DASM)。增加完成后可以小试一把。 国际惯例来段"Hello World"。...MANIFEST:是一个附加信息列表,主要包含程序集的一些属性,如程序集名称、版本号、哈希算法等; Democode:项目名称 Democodeing.Common:命名空间 Democodeing.ICar...当我们不需要把值存入变量时使用; 使用IL DASM 修改EXE程序代码 1.打开IL工具,选择所要修改的EXE程序。 ? 2.文件-->转储。

    2.4K31
    领券