探索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监控注册表的打开以上路径的逻辑。

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

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

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

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

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

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

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

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

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

原理便于Patch,算法便于**。

。。。。。。
待续