.data:0040401C aAbcdefghijklmn db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
int __stdcall sub_4011DB(char a1)
{
char *i; // ebx
for ( i = aAbcdefghijklmn; *i; ++i )
{
if ( *i == a1 )
return i - aAbcdefghijklmn;
}
return -1;
}
int __stdcall sub_4012E8(_BYTE *a1, _BYTE *a2)
{
_BYTE *v2; // ebx
int v4; // eax
int v5; // ecx
int v6; // ecx
int v8; // ecx
int v9; // eax
int v10; // ecx
int v11; // ecx
int v12; // eax
int v13; // ecx
int v14; // [esp+Ch] [ebp-4h]
v14 = 0;
v2 = a2;
while ( *a1 && !v14 && (int)sub_4011DB(*a1) >= 0 )
{
v4 = sub_4011DB(a1[1]);
if ( v4 < 0 )
return -1;
v6 = v4 + v5;
v8 = v6 << 6;
if ( a1[2] == 61 )
{
v14 = 1;
}
else
{
v9 = sub_4011DB(a1[2]);
if ( v9 < 0 )
return -1;
v8 = v9 + v10;
}
v11 = v8 << 6;
if ( a1[3] == 61 )
{
++v14;
}
else
{
if ( v14 > 0 )
return -1;
v12 = sub_4011DB(a1[3]);
if ( v12 < 0 )
return -1;
v11 = v12 + v13;
}
if ( v14 < 3 )
*v2++ = (v11 & 0xFF0000u) >> 16;
if ( v14 < 2 )
*v2++ = (unsigned __int16)(v11 & 0xFF00) >> 8;
if ( v14 < 1 )
*v2++ = v11;
a1 += 4;
}
return v2 - a2;
}
Base64 IDA 代码
最新推荐文章于 2024-06-16 18:42:20 发布