探索Visual Studio密钥的秘密(待续)

探索Visual Studio密钥的秘密

每当有人问我,逆向过什么大型软件的时候,我就感觉到困惑。

逆向破解就像点穴,用的是巧劲。并在于眼前的是大象还是小老鼠。

调试过Windows系统?好吧。
我最早想的大型软件程序就是Visual Studio。因为它需要密钥。它是微软的杰作,我的谋生工具之一。

探索VS密钥的原理

方案1-寻找谁操纵了密钥

  1. 在密钥输入框中输入有特征的密钥。
    12345-67890-ABCDE-FGHIJ-KLMNQ
  2. 尝试暂停线程来确定哪些是工作线程。
    减少不必要线程造成的影响。
  3. 记录执行流程。
    使用代码执行记录功能来记录执行流程。

方案2-谁在每次打开VS解开了密钥

HKEY_CLASSES_ROOT\Licenses\77550D6B-6352-4E77-9DA3-537419DF564B
调试VS监控注册表的打开以上路径的逻辑。

调用流程图

最终了解到其使用了:
CRYPT32.dll:CryptUnprotectData()
来做验证操作。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa380882(v=vs.85).aspx

我们来看看对应的函数来自于哪里?
CRYPT32.dll:CryptProtectData()

SystemFunction040

从导入表发现,这个SystemFunction040来自:
cryptbase.dll

内核交互

内核交互

上图展示了 CryptProtectData对内核设备的控制。
如果想了解它在内核中的代码部分就需要了解SymLink:\\Device\\KsecDD所指向的内核代码。

接下来就是了解上面函数的原理和算法。

原理便于Patch,算法便于破解。

。。。。。。
待续

猜你喜欢

转载自blog.csdn.net/dalerkd/article/details/79344228
今日推荐