-
-
[旧帖]
字符串函数的IDA翻译, 部分代码看不懂, 求高手解释
0.00雪花
-
发表于:
2013-12-31 03:19
4116
-
[旧帖] 字符串函数的IDA翻译, 部分代码看不懂, 求高手解释
0.00雪花
下面是一个典型的字符串处理函数, IDA 翻译的伪代码如下. 看不懂的地方我标了一下,高手能解释一下或者用相应c++代码翻译下吗?
int __cdecl sub_47D97D(int a1, int a2, int a3)
{
int v3; // eax@1
int v4; // eax@2
int v5; // eax@5
int v6; // eax@5
int v7; // eax@6
((void (__thiscall *)(int, _DWORD))ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>)(
a1,
//这句什么意思
0);
v3 = 0;
while ( a3 > 0 )
{
--a3;
v4 = ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::Find(45, v3);
if ( v4 == -1 )
return a1;
v3 = v4 + 1;
}
v5 = ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::Mid(a2, &a3, v3);
ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::operator_(a1, v5);
////这句什么意思?
ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::_CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>(&a3);
////这句什么意思
v6 = ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::Find(45, 0);
if ( v6 >= 0 )
{
v7 = ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::Left(a1, &a3, v6);
ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::operator_(a1, v7);
//what mean?
ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::_CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>(&a3); /
/这句什么意思
}
return a1;
}
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!