小编The*_*ent的帖子

签署.NET程序集:这是否真的可以防止我的程序集被篡改?

我正在我的应用程序中实现一个"锁定"系统,以保护我的应用程序免遭非法复制和使用.系统检查基于硬件的代码的签名,并期望使用仅由我公司拥有的私钥进行签名.(该应用程序已获得公钥来验证签名.)

我想确保没有人在应用程序中更改我的锁定机制,所以我想签署我的应用程序的程序集,我认为这是有道理的.

  1. 由于我还没有看到CLR曾经谈论过程序集的签名无效,我想确保这个系统真的有效.可以?我该怎么做才能让它发挥作用?
  2. 攻击者是否可以将注意力集中在CLR上,使其不关心我的签名?也就是说,如果他因为签名而无法篡改我的代码,他可以篡改CLR吗?
  3. 一般来说,我想了解您对此类安全防护和保护技术的经验.任何人都可以提出其他建议吗?

clr piracy-prevention

14
推荐指数
3
解决办法
5882
查看次数

ListView的DragEnter,DragOver,DragDrop事件未引发(AllowDrop = True)

这个很奇怪:

我的应用程序工作正常,但突然该死的ListView控件的事件不再被引发.它只是来来去去,没有任何明确的理由.(显然)我已将AllowDrop属性设置为True并处理DragEnter,DragOver和DragDrop事件,如下所示:

Private Sub lstApplications_DragDrop(ByVal sender As Object, ByVal e As    System.Windows.Forms.DragEventArgs) Handles lstApplications.DragDrop, Me.DragDrop
    m_fileNames = CType(e.Data.GetData(DataFormats.FileDrop), String())
    mnuType.Show(Cursor.Position, ToolStripDropDownDirection.BelowLeft)
End Sub

Private Sub lstApplications_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles lstApplications.DragEnter, Me.DragEnter, lstApplications.DragOver, Me.DragOver
    If chkMode.Checked OrElse Not e.Data.GetDataPresent(DataFormats.FileDrop, True) Then
        e.Effect = DragDropEffects.None
    Else
        e.Effect = DragDropEffects.Copy
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

我在这两个方法中编写的代码无关紧要,因为没有引发任何事件.这里有什么我想念的吗?


我在另一台机器上运行相同的应用程序,它工作正常.然后我重新启动了自己的机器,一切都开始了.我不确定,但似乎Windows出了问题.

.net events listview drag-and-drop winforms

11
推荐指数
2
解决办法
1万
查看次数

在Vista Ultimate 64位上获取HDD(和非卷)序列号

我曾经在寻找获取硬盘序列号而不使用WMI,我找到了它.我在StackOverFlow.com上找到并发布的代码在32位Windows(XP和Vista)上运行良好.只有当我尝试在64位操作系统(特别是Vista Ultimate 64)上获取序列号时才会出现问题.代码一直返回String.Empty或Space.

任何人都知道如何解决这个问题?

编辑:

我使用了Dave Cluderay建议的工具,结果很有趣:

这是来自DiskId32的输出,在Windows XP SP2 32位上:

To get all details use "diskid32 /d"
Trying to read the drive IDs using physical access with admin rights
Drive 0 - Primary Controller -  - Master drive
Drive Model Number________________: [MAXTOR STM3160215AS]
Drive Serial Number_______________: [            6RA26XK3]
Drive Controller Revision Number__: [3.AAD]
Controller Buffer Size on Drive___: 2097152 bytes
Drive Type________________________: Fixed
Drive Size________________________: 160041885696 bytes

Trying to read the drive IDs using the SCSI back …
Run Code Online (Sandbox Code Playgroud)

hdd serial-number windows-vista

10
推荐指数
2
解决办法
2万
查看次数

如何使Management Studio Express使用代理设置连接到联机SQL服务

在尝试连接到SQL Server 2005时,似乎SQL Management Studio Express 2005不考虑为LAN定义的Internet选项代理设置.

有没有办法让它使用代理设置?

proxy ssms internet-options

8
推荐指数
1
解决办法
8136
查看次数

EF Core 和 DDD:将 ValueObjects 存储在与实体相同的表中,还使用参数化构造函数在实体上设置属性值

考虑这些简单的类。它们属于具有领域驱动设计 (DDD) 原则的简单应用程序,因此每个 Entity 和 ValueObject 通过构造函数接收其属性值,同时隐藏默认的无参数构造函数。属性也将是只读的。

    public class MyClass
    {
       public Guid Id {get;}
       public ValueObject ValueObject1 {get;}
       public ValueObject ValueObject2 {get;}
       public MyClass(ValueObject valueObject1, ValueObject valueObject2) 
       {
          ValueObject1 = valueObject1;
          ValueObject2 = valueObject2;
       }
       private MyClass(){}
    }

    public class ValueObject
    {
       public string Value {get;}
       public ValueObject(string value) 
       {
          Value = value;
       }
       private ValueObject(){}
    }
Run Code Online (Sandbox Code Playgroud)

我希望能够使用 EntityFramework Core 2.2.6 基于此模型创建数据库。

显然,EF Core 2.2.6 可以通过它们的参数化构造函数自动为这些类提供属性值,只要构造函数参数和类属性具有相同的名称(不区分大小写)。伟大的。

现在我希望 ValueObjects 与 MyClass 存储在同一个表中。要做到这一点,有人告诉我,我应该用modelBuilder.OwnsOne<>OnModelCreating对的DbContext的,而不是modelBuilder.Property<>

中的 DBContext 配置 …

c# entity domain-driven-design value-objects entity-framework-core

5
推荐指数
1
解决办法
1982
查看次数

Windows DLL是否由Microsoft签名?我可以检测出他们是否被第三方篡改了吗?

我正在为我的软件实现锁定和复制保护系统.我已经关闭了每一个允许有人打破锁定的洞(嗯,这有点过于乐观,我知道!)但最后一件事就是这样:

我听说破解者可以像我使用的API一样改变像Kernel32.dll这样的Windows DLL,返回一个由破解者指定的值.我需要阻止这一点.

起初我以为我可以为我使用的每个DLL创建一个哈希值,并根据客户端DLL的计算哈希检查该哈希,以查看该文件是否已更改.这不起作用,因为对于不同版本的Windows有许多不同版本的DLL,并且Microsoft提供的每个修补程序和Service Pack都可以更改该文件.

然后我意识到我可以检查文件的签名,以确保它具有有效的Microsoft签名.现在有两个问题:

  1. Microsoft是否签署了Windows DLL?我怎样才能找到关于此签名的一些信息?
  2. 是否提供公钥来验证签名?如何使用此密钥验证文件?

任何演练都非常感谢.我的应用程序是使用Visual Basic.NET编写的.

多谢你们.

validation dll key signature

4
推荐指数
2
解决办法
4540
查看次数

如何通过.NET代码压缩和修复ACCESS 2007数据库?

我需要压缩和修复Access 2007 .accdb数据库文件.我知道JRO.JetEngine可以使用.mdb文件执行此操作,但我需要通过代码修复较新的版本2007格式.

有什么建议?

编辑:

事情就是这样:我发现我可以使用COM对象库"Microsoft Office 12 Access数据库引擎对象库"并使用DBEngine类并调用其CompactDatabse方法.但似乎没有地方可以提供数据库密码; 好像Office 12数据库引擎在任何地方都没有任何文档.我找到了旧版本的CompactDatabase方法的一些文档,但这些文档根本没有帮助我.

这真让我抓狂.

database repair ms-access-2007

4
推荐指数
2
解决办法
1万
查看次数

CPU在客户PC上坚持100%,有任何调试建议吗?

我和其中一个客户使用我的软件时遇到了死胡同.在我们销售的产品的约40份(使用VB.NET 2005在.NET 2.0中编程的应用程序)中,大约2份没有响应,1核心的双核CPU停留在100%(程序仅使用1核心)

最合乎逻辑的猜测是导致这种行为的无限循环,但是数千行代码具有许多循环.这就是我得到的所有信息; 现在,您如何建议我调试此问题?

编辑:基本上,该软件负责计算使用其他设备(如PC等)所花费的信用额度.它是一个Cyber​​cafe管理程序,并且间歇性地失败,即它在失败时减去信用.它还在后台执行其他操作,例如检查是否是创建数据库备份的时间等.

编辑:解决了.这是最不可能的问题.我用作DBMS的Access数据库引擎实际上是我的应用程序中存在问题的部分.在其中一个表中使用一排JUST ONE FRIGGIN ROW很困难.我无法删除它,或以其他方式在任何其他表中添加与该行相关的记录; 当我尝试使用该行时,即使MS Access 2007也会导致CPU达到100%!

一个简单的"紧凑和修复"命令修复了一切.我想每次我的应用程序启动时都会发出该命令.这样可以防止再次发生这种情况.

感谢WinDbg,我可以找到问题所在.我建议大家学习如何使用它,因为它可以节省时间.

.net debugging cpu ms-access-2007 jet

3
推荐指数
1
解决办法
1284
查看次数

如何在Excel工作表中获取当前视口的坐标?

我需要将图表放在Excel工作表的中心,就在用户当前正在查看的位置。显然,0是图纸坐标系统X轴的起点,随着我们向右移动,X会增加。例如,用户可能正在查看列J到Z,并且我需要用户在工作表中查看位置的坐标,因此我可以将图表放在他的前面。

如何获得工作表“视口”相对于工作表坐标系的坐标?还有其他更简单的方法可以将图表放置在那里吗?

谢谢。

excel charts vba viewport excel-vba

1
推荐指数
1
解决办法
1596
查看次数

计算文件HASH返回不同的值

有谁知道,为什么以下代码在某些机器上返回不同的结果?

Private Shared Function ComputeHashValue(ByVal Data As String) As String
    Dim HashAlgorithm As SHA512 = SHA512.Create
    Dim HashValue() As Byte = HashAlgorithm.ComputeHash(Encoding.ASCII.GetBytes(Data))
    ' Looping over the array and ANDing each byte with 0111111
    For i As Integer = 0 To HashValue.Length - 1
        HashValue(i) = HashValue(i) And Convert.ToByte(127)
    Next
    Return Encoding.ASCII.GetString(HashValue)
End Function

Private Shared Function AreByteArraysEqual(ByVal array1 As Byte(), ByVal array2 As Byte()) As Boolean
    If array1.Length <> array2.Length Then Return False
    For i As Integer = 0 To …
Run Code Online (Sandbox Code Playgroud)

.net hash sha512

0
推荐指数
1
解决办法
568
查看次数

如何告诉Entity Framework允许SQL Server为字段提供已定义的默认值?

将新行添加到表时,我使用以下SQL脚本启用字段中的当前时间设置:

ALTER TABLE [Items] ADD CONSTRAINT DF_Items DEFAULT GETDATE() FOR [CreationDate]
Run Code Online (Sandbox Code Playgroud)

现在我使用Entity Framework来处理这个表,并向其中添加新行.我想要做的是允许特定列从SQL Server本身接收其值,而不必自己提供值.Nothing在Visual Basic中将该特定列的值设置为填充字段DateTime.MinValue,这不是我想要的(顺便说一句,SQL Server不支持).

我需要做些什么改变才能做到这一点?

sql-server entity-framework default-value

0
推荐指数
1
解决办法
1917
查看次数