首页
学习
活动
专区
工具
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.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    通俗易懂,什么是.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.7K63

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

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

    4.4K30

    当InternalsVisibleToAttribute特性遭遇签名

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

    639110

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

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

    86810

    .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不仅仅知道字段

    37310

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

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

    21010

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

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

    3.5K20

    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

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

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

    1.4K60

    通俗易懂的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.1K20

    fstream 中文路径_gradle files have changed

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

    1.2K10

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

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

    1.9K40

    汇编寄存器的规则

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

    2.5K50

    汇编程序编译器和解释器的简短介绍【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注入到程序集中。

    53810

    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.文件-->储。

    1.7K31
    领券