|
| |
精品推荐 |
 |
|
| |
|
|
|
|
ASProtect的加密算法初步分析(2)
|
日期:2007年6月2日 作者: 查看:[大字体
中字体 小字体]
|
3)在ASProtect中我们看到其提供了Registration_Keys加密方式。ASProtect可以对你提供的"Registration_Information"进行加密,形成"Registeration_Key",(按照帮助中介绍的你还可以使用自己的"加解密算法",但是RegKey必须至少173个字符,才有安全性)。这个"RegKey"将以注册表文件(.reg)文件方式保存。在加壳后的外壳代码运行时将解密"RegKey"从而得到"RegInfo",当然这分为两种方式:一种方式,程序编程时使用了其提供的回调函数SetRegistrationKey(...),那么外壳代码运行时将调用该函数从而得到"RegKey"来解密出"RegInfo",如果程序没有使用这个函数,外壳代码将从注册表中相应键名处提取键值作为"RegKey"来解密出"RegInfo"。初步分析其可能使用了RSA算法。
其解密部分的代码: 0040B4D4 loc_40B4D4: ; CODE XREF: license+156j 0040B4D4 ; license+15Fj 0040B4D4 lea edi, [ebp+lpInterBlock] 0040B4DA inc edi 0040B4DB mov esi, edi 0040B4DD push esi 0040B4DE lea eax, [ebp+lpInterStruct+8] 0040B4E4 push eax 0040B4E5 lea eax, [ebp+lpInterStruct+88h] 0040B4EB push eax 0040B4EC push esi 0040B4ED call decrypt_engine ; Criper Text to Plain Text...
从 decrypt_engine 函数的入口参数看有四个: 1)加密数据地址指针....(函数按每一块进行解密).....即 m 2)可能是RSA.N 3)可能是RSA.E 4)用于输出解密数据地址指针....
目前还有几个问题还没有来得及分析: 1)还没有见到TEA算法,不过在CASPR中介绍中至少提到这个算法,不知道这个算法在哪里,用于作什么?
2)在我了解了ASProtect会利用宏定义定义出"代码块"以后,我想象ASProtect中其会把"代码块"挖出来",与"RegInfo"一起加密形式成"RegKey"。不过实际发现这些"代码块"并没有被"挖"出来,而是使用一种算法(可能是TWOFISH)解密,不知道这个KEY到底保存在哪里?不知道是否保存在"RegKey"中。我想大概如此。^_^
我想我们可以把ASProtect看成一个"软锁"。"锁"中的数据包括用于解密的代码块的KEY和用于解密"RegInfo"的KEY,即我们所见到的字符串形式的"RegKey"。在外壳代码运行时ASProtect将提取"锁"中的数据用于解密。
如果某程序分为"注册版本"和"试用版本",其使用ASProtect外壳+内部函数组合方式加密。其注册版本将提供.reg注册表文件形式的"RegKey"作为开锁的"钥匙",那么我们能否在没有"钥匙"的情况下破门而入呢?
由于RegKey中包含了用于解密程序中提取出来的"代码块"的KEY,那么在没有RegKey的情况下自然我们也就缺少了这个KEY,因此程序中的被提取出来的"代码块"就无法正确解密。如果在此情况下脱壳,那么那些加密了的代码块中的数据依然是无用的数据,因此脱壳的软件就成了破碎的脱壳版本了。因此在没有钥匙的情况下看来破门而入的想法不太乐观。 (出处:清风网络学院)
上一篇:破解圣经之------滚瓜烂熟篇(2)
下一篇:压缩与脱壳-脱壳高级篇 中
|
| ASProtect的加密算法初步分析(2) 相关文章: |
|
|
|
| ASProtect的加密算法初步分析(2) 相关软件: |
|
|
|
|