加密数据包--加解密部分逆向跟踪
?逆向跟蹤了下某雷P2SP?Content Distribution的協(xié)議中解密函數(shù)
char __stdcall sub_21343310(int a1, int a2)
{
 unsigned int v2; // ebx@1
 char result; // al@2
 int v4; // edi@5
 signed int v5; // esi@5
 int v6; // ecx@7
 int v7; // edx@7
 int v8; // eax@7
 int v9; // ecx@7
 char v10; // al@8
 char v11; // bl@10
 int v12; // [sp+0h] [bp-1D8h]@1
 char v13; // [sp+Ch] [bp-1CCh]@5
 char v14; // [sp+13Ch] [bp-9Ch]@5
 char v15; // [sp+194h] [bp-44h]@5
 int v16; // [sp+1A4h] [bp-34h]@5
 int v17; // [sp+1A8h] [bp-30h]@5
 int v18; // [sp+1ACh] [bp-2Ch]@5
 int v19; // [sp+1B0h] [bp-28h]@5
 int v20; // [sp+1B4h] [bp-24h]@5
 int v21; // [sp+1B8h] [bp-20h]@5
 int v22; // [sp+1BCh] [bp-1Ch]@5
 int v23; // [sp+1C0h] [bp-18h]@5
 void *Memory; // [sp+1C4h] [bp-14h]@5
 int *v25; // [sp+1C8h] [bp-10h]@1
 int v26; // [sp+1D4h] [bp-4h]@5
 v2 = 0;
 v25 = &v12;
 if ( a1 )
 {
 if ( (*(_BYTE *)a2 + 4) & 0xF )
 {
 result = 0;
 }
 else
 {
 v4 = operator new();
 Memory = (void *)v4;
 v26 = 0;
 md5_init(&v14);
 md5_update(&v14, (const void *)a1, 8u);
 md5_finish(&v14, (int)&v15);
 aes_init(&v13, 0x10u, &v15);
 v16 = 0;
 v20 = 0;
 v17 = 0;
 v21 = 0;
 v18 = 0;
 v22 = 0;
 LOBYTE(v26) = 1;
 v5 = 12;
 v19 = 0;
 v23 = 0;
 while ( *(_DWORD *)a2 != v5 )
 {
 v16 = *(_DWORD *)(v5 + a1);
 v17 = *(_DWORD *)(v5 + a1 + 4);
 v18 = *(_DWORD *)(v5 + a1 + 8);
 v19 = *(_DWORD *)(v5 + a1 + 12);
 aes_decrypt(&v13, (int)&v16, (int)&v20);
 v6 = v21;
 v7 = v2 + v4;
 v5 += 16;
 v2 += 16;
 *(_DWORD *)v7 = v20;
 v8 = v22;
 *(_DWORD *)(v7 + 4) = v6;
 v9 = v23;
 *(_DWORD *)(v7 + 8) = v8;
 *(_DWORD *)(v7 + 12) = v9;
 }
 memcpy((void *)(a1 + 12), (const void *)v4, v2);
 v10 = *((_BYTE *)Memory + v2 - 1);
 if ( v10 <= 0 || v10 > 16 )
 {
 v11 = 0;
 LOBYTE(v26) = 0;
 sub_214B2210(&v13);
 }
 else
 {
 LOBYTE(v26) = 0;
 *(_DWORD *)a2 = v2 - v10 + 12;
 v11 = 1;
 sub_214B2210(&v13);
 }
 sub_21572560(Memory);
 result = v11;
 }
 }
 else
 {
 result = 0;
 }
 return result;
}
?
參考:
http://hi.baidu.com/vessial/item/75b3f03a18b5a1fe97f88d7c
轉(zhuǎn)載于:https://www.cnblogs.com/moonflow/archive/2012/09/29/2708627.html
總結(jié)
以上是生活随笔為你收集整理的加密数据包--加解密部分逆向跟踪的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        