-
-
[求助]IDA逆向的C++的容器代码,请大侠给点注释,有点看不懂
-
发表于: 2013-3-6 16:08 3406
-
int __cdecl funDealGuid(int a1)
{
signed int v1; // edi@1
int v2; // esi@5
int v3; // eax@5
int v4; // ecx@5
int v6; // [sp+14h] [bp-ACh]@2
int v7; // [sp+18h] [bp-A8h]@3
int v8; // [sp+1Ch] [bp-A4h]@3
int v9; // [sp+20h] [bp-A0h]@3
char v10; // [sp+24h] [bp-9Ch]@5
char v11; // [sp+2Ch] [bp-94h]@4
int v12; // [sp+BCh] [bp-4h]@1
v1 = 0;
v12 = 0;
if ( !funGetGuid || !(unsigned __int8)funGetGuid(&v6) )
{
v6 = 0;
v7 = 0;
v8 = 0;
v9 = 0;
}
std::basic_ostringstream<char_std::char_traits<char>_std::allocator<char>>::basic_ostringstream<char_std::char_traits<char>_std::allocator<char>>(
&v11,
2,
1);
v12 = 1;
do
{
v2 = std::basic_ostream<char_std::char_traits<char>>::operator<<(&v11, sub_1001C540);
*(_BYTE *)(v2 + *(_DWORD *)(*(_DWORD *)v2 + 4) + '0') = '0';
v3 = std::setw(&v10, 2);
(*(void (__cdecl **)(int, _DWORD))v3)(v2 + *(_DWORD *)(*(_DWORD *)v2 + 4), *(_DWORD *)(v3 + 4));
LOWORD(v4) = *((_BYTE *)&v6 + v1);
std::basic_ostream<char_std::char_traits<char>>::operator<<(v2, v4);
++v1;
}
while ( v1 < 16 );
std::basic_ostringstream<char_std::char_traits<char>_std::allocator<char>>::str(&v11, a1);
LOBYTE(v12) = 0;
std::basic_ostringstream<char_std::char_traits<char>_std::allocator<char>>::_vbase_destructor(&v11);
return a1;
}
{
signed int v1; // edi@1
int v2; // esi@5
int v3; // eax@5
int v4; // ecx@5
int v6; // [sp+14h] [bp-ACh]@2
int v7; // [sp+18h] [bp-A8h]@3
int v8; // [sp+1Ch] [bp-A4h]@3
int v9; // [sp+20h] [bp-A0h]@3
char v10; // [sp+24h] [bp-9Ch]@5
char v11; // [sp+2Ch] [bp-94h]@4
int v12; // [sp+BCh] [bp-4h]@1
v1 = 0;
v12 = 0;
if ( !funGetGuid || !(unsigned __int8)funGetGuid(&v6) )
{
v6 = 0;
v7 = 0;
v8 = 0;
v9 = 0;
}
std::basic_ostringstream<char_std::char_traits<char>_std::allocator<char>>::basic_ostringstream<char_std::char_traits<char>_std::allocator<char>>(
&v11,
2,
1);
v12 = 1;
do
{
v2 = std::basic_ostream<char_std::char_traits<char>>::operator<<(&v11, sub_1001C540);
*(_BYTE *)(v2 + *(_DWORD *)(*(_DWORD *)v2 + 4) + '0') = '0';
v3 = std::setw(&v10, 2);
(*(void (__cdecl **)(int, _DWORD))v3)(v2 + *(_DWORD *)(*(_DWORD *)v2 + 4), *(_DWORD *)(v3 + 4));
LOWORD(v4) = *((_BYTE *)&v6 + v1);
std::basic_ostream<char_std::char_traits<char>>::operator<<(v2, v4);
++v1;
}
while ( v1 < 16 );
std::basic_ostringstream<char_std::char_traits<char>_std::allocator<char>>::str(&v11, a1);
LOBYTE(v12) = 0;
std::basic_ostringstream<char_std::char_traits<char>_std::allocator<char>>::_vbase_destructor(&v11);
return a1;
}
赞赏
他的文章
看原图
赞赏
雪币:
留言: