WEB开发网
开发学院网络安全黑客技术 ASProtect的加密算法初步分析 阅读

ASProtect的加密算法初步分析

 2007-01-12 20:12:21 来源:WEB开发网   
核心提示: 初始化部分有以下常数设置:0040C4AE mov dword ptr [ebx+48h], 67452301h0040C4B5 mov dword ptr [ebx+4Ch], 0EFCDAB89h0040C4BC mov dword ptr [ebx+50h], 98BADCFEh00

初始化部分有以下常数设置:

0040C4AE mov dword ptr [ebx+48h], 67452301h
0040C4B5 mov dword ptr [ebx+4Ch], 0EFCDAB89h
0040C4BC mov dword ptr [ebx+50h], 98BADCFEh
0040C4C3 mov dword ptr [ebx+54h], 10325476h
0040C4CA mov dword ptr [ebx+58h], 0C3D2E1F0h
0040C4D1 mov dword ptr [ebx+5Ch], 76543210h
0040C4D8 mov dword ptr [ebx+60h], 0FEDCBA98h
0040C4DF mov dword ptr [ebx+64h], 89ABCDEFh
0040C4E6 mov dword ptr [ebx+68h], 1234567h
0040C4ED mov dword ptr [ebx+6Ch], 3C2D1E0Fh

而运算部分有大量类似MD5算法的运算。由于代码太长,不列举了。

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 函数的入口参数看有四个:

Tags:ASProtect 加密 算法

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接