我正在尝试理解这段代码(也许我可以移植它),但是我不知道它写的是哪种语言。如果有人能够给我一个很棒的想法。解释代码会更好,但知道我可以自己解决的语言。
Generate_Key_IV proc near
mov eax, [ecx]
movzx edx, ax
imul edx, 9069h
shr eax, 10h
add edx, eax
mov eax, [ecx+4]
push esi ; Here file size
movzx esi, ax
imul esi, 4650h
shr eax, 10h
add eax, esi
mov [ecx], edx
mov [ecx+4], eax
pop esi
test edx, edx
jnz short loc_495EA2
mov dword ptr [ecx], 1
loc_495EA2:
test eax, eax
jnz short loc_495EAD
mov dword ptr [ecx+4], 0FFFFFFFFh
loc_495EAD:
mov eax, [ecx]
shl eax, 10h
add eax, [ecx+4]
retn
Generate_Key_IV endp
这应该与它一起使用(即与它一起使用)但我不确定它是否使用相同的语言:
int __usercall sub_47AFA0<eax>(int a1<eax>, int a2<ebp>, void *a3, size_t a4, __int64 a5)
{
unsigned int v5; // edi@1
unsigned int v6; // edi@3
char v8; // [sp-1A0h] [bp-1ACh]@2
int v9; // [sp-198h] [bp-1A4h]@1
void *v10; // [sp-194h] [bp-1A0h]@1
char v11; // [sp-190h] [bp-19Ch]@5
char v12; // [sp-140h] [bp-14Ch]@5
int v13; // [sp-40h] [bp-4Ch]@6
void *v14; // [sp-3Ch] [bp-48h]@5
char v15; // [sp-34h] [bp-40h]@2
char v16; // [sp-24h] [bp-30h]@4
unsigned int v17; // [sp-14h] [bp-20h]@1
char *v18; // [sp-10h] [bp-1Ch]@1
int v19; // [sp-Ch] [bp-18h]@1
int (__cdecl *v20)(int, int); // [sp-8h] [bp-14h]@1
signed int v21; // [sp-4h] [bp-10h]@1
int v22; // [sp+0h] [bp-Ch]@1
void *v23; // [sp+4h] [bp-8h]@1
char v24; // [sp+8h] [bp-4h]@1
int v25; // [sp+Ch] [bp+0h]@1
v22 = a2;
v23 = (void *)v25;
v21 = -1;
v20 = sub_72CCC6;
v19 = a1;
v18 = &v24;
v17 = (unsigned int)&v22 ^ __security_cookie;
v10 = a3;
v9 = sub_5657C0(a4);
sub_495EC0(a4 * a5, (unsigned __int64)a4 * a5 >> 32);
v5 = 0;
do
*(&v15 + v5++) = Generate_Key_IV((int)&v8); ;Generating KEY
while ( v5 < 0x10 );
v6 = 0;
do
*(&v16 + v6++) = Generate_Key_IV((int)&v8); ;Generating IV
while ( v6 < 0x10 );
sub_47AC20(&v15, 16, &v16); ; AES Routine
v21 = 0;
sub_433E00(v9, v10, a4);
v21 = 1;
sub_4799F0(&v11);
if ( v14 == &v12 + (-(signed int)&v12 & 0xF) )
memset(v14, 0, 4 * v13);
return __security_check_cookie((unsigned int)&v22 ^ v17);
}
非常高兴知道,谢谢!