探索Visual Studio**的秘密(待续)
探索Visual Studio**的秘密
每当有人问我,逆向过什么大型软件的时候,我就感觉到困惑。
逆向**就像点穴,用的是巧劲。并在于眼前的是大象还是小老鼠。
调试过Windows系统?好吧。
我最早想的大型软件程序就是Visual Studio。因为它需要**。它是微软的杰作,我的谋生工具之一。
探索VS**的原理
方案1-寻找谁操纵了**
- 在**输入框中输入有特征的**。
12345-67890-ABCDE-FGHIJ-KLMNQ - 尝试暂停线程来确定哪些是工作线程。
减少不必要线程造成的影响。 - 记录执行流程。
使用代码执行记录功能来记录执行流程。
方案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来自: cryptbase.dll
上图展示了 CryptProtectData
对内核设备的控制。
如果想了解它在内核中的代码部分就需要了解SymLink:\\Device\\KsecDD
所指向的内核代码。
接下来就是了解上面函数的原理和算法。
原理便于Patch,算法便于**。
。。。。。。
待续