- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用以下代码:
AppDomain.CurrentDomain.AssemblyLoad += (sender, args) =>
{
var token = args.LoadedAssembly.GetName().GetPublicKeyToken();
if (!IsValidToken(token))
{
Process.GetCurrentProcess().Kill();
}
};
其中 IsValidToken()
将正在加载的程序集的公钥 token 与在我的应用程序中硬编码为字节数组的授权公钥 token 列表进行比较。
这是防止代码注入(inject)攻击的良好安全措施吗?另外,考虑到我稍后会使用 NetReactor 混淆我的应用程序,这是否有必要?我正试图阻止对我的应用程序的任何“窥探”,不仅来自窥探工具,还来自任何外部不需要的来源。
最佳答案
乍一看,我会说“不,这还不够”。
原因:
CreateRemoteThread
攻击是直接的 win32 调用,没有像这样会触发检测器的托管代码跟踪
我认为可以在注入(inject)的 dll 中创建另一个 AppDomain
,从而完全绕过此检查。然后可以从该 AppDomain
执行代码,可能(我必须仔细考虑)通过 AppDomain.DoCallback< 回调“主”
AppDomain
/
Process.Kill
是一种可怕的删除应用程序的方式,尽管它是一种不可捕获的方式 - 也就是说,任何附加的人都无法阻止它(它在底层使用 Win32 TerminateProcess
)
我必须拿出我的“注入(inject)器”工具来测试这些语句,如果我能记得我把代码放在哪里...
不管这些 - 你绝对想混淆这个程序集的 hell ,特别是如果你计划在里面存储敏感位(事实上,我反对存储任何敏感程序集内的信息(如果可以的话)——你的预防方法绝对不会阻止任何反汇编程序,如 Reflector、ILSpy、dotPeek 等。
关于c# - 通过 PublicKeyToken 防止外部程序集注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13372057/
每个签名的 .NET 都有一个公钥 token (8 个字节)和一个公钥(128 个字节)。 两者有什么区别,为什么我们需要两个公共(public)“ key ”? 最佳答案 公钥 token 只是
如何从 snk 文件中获取 PublicKeyToken?使用命令行工具。我想过使用sn.exe,但是,找不到合适的参数。 最佳答案 如果您想使用 sn.exe工具: sn -p yourkey.sn
如果我从我的项目 C# 文件夹中打开 Resources.resx,我会看到类似这样的内容: ..\Resources\picture.png;System.Drawing.Bitmap,
Could not load file or assembly 'NCrawler.GeckoProcessor, Version=3.0.0.0, Culture=neutral, PublicKe
我需要在我的 web.config 文件中重新创建一个如下所示的提供程序: 但是,我收到一个运行时错误,提示无法加载此程序集,我认为这是因为我的 PublicKey
我在一个遗留项目上工作,必须支持同一个 dll 的 8 个不同版本。我可以访问库源代码,因此我可以自己构建这些 dll。 dll 是强签名的,每个都有自己的版本号 3.6.0.0、3.7.0.1 等。
我在编译托管 DLL 项目时遇到问题。该解决方案由两个项目组成,第一个是用 C# 编写的 .NET DLL,另一个是直接引用 C# 项目的托管 C++ DLL。 这两个项目/DLL 都使用磁盘上的 s
我正在使用以下代码: AppDomain.CurrentDomain.AssemblyLoad += (sender, args) => { var token = args.LoadedAs
我正在尝试使用这篇博文中的建议获取针对 Asp.Net Identity 的瑞典语本地化错误消息:How to localize ASP.NET Identity UserName and Passw
我的 app.config 中有以下内容。 ... Fusion 日志记录告诉我它没有在 bin2 中查
希望我什至能正确地问我的问题。我在尝试序列化特定对象时遇到以下异常(我熟悉使用标准 [Serializable] 属性) A first chance exception of type 'Syste
我正在按照 2006 年 Microsoft .Net 类(class)工作簿中的说明进行其中一项练习。 (具体来说,这门类(class)是 MS2349B,我正在做模块 4 练习 2。)。这些练习似
{"Could not load file or assembly 'AssemblyName, PublicKeyToken=null' or one of its dependencies. Th
我们有一个 asp.net 4.0 项目,它使用几个依赖于 log4net 版本 1.2.10.0 的框架。今天我尝试包含一个依赖于 log4net 版本 1.2.11.0 的新框架,从那时起我就陷入
我正在使用 PRISM 和我在 CodePlex 中找到的新控件:WPF 属性网格 http://wpg.codeplex.com/ 当我测试 DEMO 时,一切进展顺利。 我还没有开始使用 PRIS
我向我的应用程序添加了一条 UPDATE 语句,该语句运行良好。它正确更新数据库,除了四个错误消息之外,我没有看到任何问题。这是什么意思? Error 1 Type Microsoft.Dat
是否可以从 GAC 中卸载所有具有特定 PublicKeyToken 的程序集? 我接受命令行(gacutil.exe 等)或通过 C# 的解决方案。 编辑: 仅供引用,我可以通过 Windows 资
我必须在我的项目中使用一些引用程序集 XXXXX 的 dll 文件。我现在在我的项目中有这个程序集的更新版本,但是当我运行我的项目时我得到错误:Could not load file or assem
使用来自 Docusign、Twilio 和 Auth0 的 API。所有 3 个都将 RestSharp.dll 作为依赖项。 如果我使用 Docusign 包中包含的 RestSharp.dll,
我有一个在开发环境中引用此程序集的应用程序: name="Microsoft.Data.SqlXml" culture="neutral" publicKeyToken="89845dcd8080cc
我是一名优秀的程序员,十分优秀!