View Single Post
  #1  
Old 06-26-2015, 18:09
zhgong007 zhgong007 is offline
Family
 
Join Date: May 2011
Posts: 239
Rept. Given: 17
Rept. Rcvd 300 Times in 46 Posts
Thanks Given: 26
Thanks Rcvd at 371 Times in 101 Posts
zhgong007 Reputation: 300-399 zhgong007 Reputation: 300-399 zhgong007 Reputation: 300-399 zhgong007 Reputation: 300-399
StringT functions interpretion

anybody can explain the code where I have marked, many thanks! especially I don't understand what typer of operator is using by the string operation MFC function; thanks for your help


Code:
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);                   //what does it mean?
  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);   //what mean?
  ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::_CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>(&a3);  //what mean?
  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);    ////what mean?
  }
  return a1;
}
Reply With Quote