游戏脚本接品逆向

void *__thiscall sub_DB1A40(szFunctionName)
{
  if (szFunctionName!=NULL&& strlen(szFunctionName)>0 )
  {
 if ( *this.UseFlag>1)
 {
  
  (*this.UseFlag)--;
       pStringMem = AllocateMemoryAndSetHeader(nstrlen);
        strcpy(pStringMem, szFunctionName, nstrlen);
       this = pStringMem;
        return this;
  
    }
 else
 {
  if(nstrlen<=*this.SpaceSize)
  {
  strcpy(*this.string, szFunctionName,nstrlen);
  this.StringLen=nstrlen;
  return this;
  }
  else
  {
   if(*this.UseFlag==1)
    delete(*this);
   else
   *this.UseFlag=*this.UseFlag-1;
   *this= ConstructStringObject(szFunctionName, nstrlen);
                        return this;
  }

 }
          
  else
  {

    if (*this.UseFlag)
    {
      if(*this.UseFlag!= 1)
 {
  *this.UseFlag=*this.UseFlag-1;
         *this = off_12D60B4;
         return this;
       }
 delete(*this);
    }
   *this = off_12D60B4;
    return this
  }
}

int __cdecl sub_DB11C0(int pStringObject, int szString, int nSize)
{
  int result; // eax@1
  int v4; // ebx@1
  int v5; // ecx@1
  int v6; // ecx@4
  int v7; // esi@5

  result = nSize / 4;
  v4 = 0;
  v5 = szString;
  if ( nSize / 4 > 0 )
  {
    do
    {
      *(_DWORD *)(pStringObject - szString + v5) = *(_DWORD *)v5;
      v5 += 4;
      --result;
    }
    while ( result );
    v4 = nSize / 4;
  }
  v6 = 4 * v4;
  if ( 4 * v4 < nSize )
  {
    v7 = nSize - v6;
    result = v6 + pStringObject;
    v6 = nSize;
    do
    {
      *(_BYTE *)result = *(_BYTE *)(szString - pStringObject + result);
      ++result;
      --v7;
    }
    while ( v7 );
  }
  *(_BYTE *)(v6 + pStringObject) = 0;
  return result;
}

原文地址:https://www.cnblogs.com/RbtreeLinux/p/3185171.html