Вопрос Возможно ли скомпилировать идовский псевдокод?

Тема в разделе "C, C++", создана пользователем monobogdan, 2 янв 2017.

Статус темы:
Закрыта.
  1. monobogdan

    monobogdan Известный пользователь

    Регистрация:
    26.12.2016
    Сообщения:
    66
    Симпатии:
    1
    Репутация:
    1
    Возможно ли скомпилировать идовский псевдокод? Или вообще перекомпилировать gta-vc.exe с идовскими сырками :D
     
  2. FYP

    FYP админ какой-то

    Регистрация:
    09.03.2013
    Сообщения:
    1.154
    Симпатии:
    2.039
    Репутация:
    749
    целое приложение - нет.
     
  3. monobogdan

    monobogdan Известный пользователь

    Регистрация:
    26.12.2016
    Сообщения:
    66
    Симпатии:
    1
    Репутация:
    1
    да и фиг с ним, скомпилировать псевдокод возможно?
    
    signed int __cdecl loadScm()
    {
      CScriptThread *v9; // ebx@3
      int v10; // ebp@3
      signed int v11; // esi@3
      char v12; // zf@4
      int v13; // eax@7
      int v14; // ecx@8
      int v15; // eax@9
      int v16; // edx@9
      _UNKNOWN *v17; // ebp@9
      int v18; // edi@9
      int v19; // ebx@10
      int v20; // edx@11
      signed int v21; // ecx@11
      FILE *v22; // esi@11
      signed int v23; // eax@12
      int v27; // ebx@13
      int v31; // eax@17
      signed int v32; // edi@17
      int v33; // ebx@19
      int v34; // ebp@19
      signed int v35; // esi@19
      signed int v37; // edi@20
      BYTE v38; // al@20
      BYTE v39; // dl@20
      BYTE v40; // al@20
      BYTE v41; // al@20
      BYTE v42; // dl@20
      BYTE v43; // al@20
      int v45; // ebx@23
      signed int v46; // ebp@23
      BYTE v47; // al@24
      BYTE v48; // dl@24
      BYTE v49; // al@24
      CTexture *v50; // edi@25
      int v51; // esi@25
      DWORD v52; // eax@27
      char *v53; // ebx@29
      signed int v54; // eax@33
      int v55; // ebp@33
      int v56; // edx@34
      int v57; // edi@34
      int v58; // ebx@34
      int v59; // esi@34
      signed int result; // eax@35
      RwRGBA v61; // [sp+4h] [bp-1Ch]@20
      RwRGBA v62; // [sp+8h] [bp-18h]@20
      RwRGBA v63; // [sp+Ch] [bp-14h]@24
    
      _EAX = 0;
      __asm { pxor    mm0, mm0 }
      do
      {
        __asm { movq    qword ptr ds:_scmBlock[eax], mm0 }
        _EBP = _EAX + 8;
        __asm { movq    qword ptr ss:_scmBlock[ebp], mm0 }
        _EDX = _EAX + 16;
        __asm { movq    qword ptr ds:_scmBlock[edx], mm0 }
        _ESI = _EAX + 24;
        __asm { movq    qword ptr ds:_scmBlock[esi], mm0 }
        _EBX = _EAX + 32;
        __asm { movq    qword ptr ds:_scmBlock[ebx], mm0 }
        _EBP = _EAX + 40;
        __asm { movq    qword ptr ss:_scmBlock[ebp], mm0 }
        _ECX = _EAX + 48;
        __asm { movq    qword ptr ds:_scmBlock[ecx], mm0 }
        _EDX = _EAX + 56;
        _EAX += 64;
        __asm { movq    qword ptr ds:_scmBlock[edx], mm0 }
      }
      while ( _EAX < 260448 );
      scmBlock[_EAX] = 0;
      InactiveThreadQueue = 0;
      scmBlock[_EAX + 1] = 0;
      scmBlock[_EAX + 2] = 0;
      scmBlock[_EAX + 3] = 0;
      scmBlock[_EAX + 4] = 0;
      scmBlock[_EAX + 5] = 0;
      scmBlock[_EAX + 6] = 0;
      scmBlock[_EAX + 7] = 0;
      scmBlock[_EAX + 8] = 0;
      scmBlock[_EAX + 9] = 0;
      scmBlock[_EAX + 10] = 0;
      scmBlock[_EAX + 11] = 0;
      scmBlock[_EAX + 12] = 0;
      scmBlock[_EAX + 13] = 0;
      scmBlock[_EAX + 14] = 0;
      scmBlock[_EAX + 15] = 0;
      scmBlock[_EAX + 16] = 0;
      scmBlock[_EAX + 17] = 0;
      scmBlock[_EAX + 18] = 0;
      scmBlock[_EAX + 19] = 0;
      scmBlock[_EAX + 20] = 0;
      scmBlock[_EAX + 21] = 0;
      scmBlock[_EAX + 22] = 0;
      scmBlock[_EAX + 23] = 0;
      scmBlock[_EAX + 24] = 0;
      scmBlock[_EAX + 25] = 0;
      scmBlock[_EAX + 26] = 0;
      scmBlock[_EAX + 27] = 0;
      scmBlock[_EAX + 28] = 0;
      scmBlock[_EAX + 29] = 0;
      scmBlock[_EAX + 30] = 0;
      scmBlock[_EAX + 31] = 0;
      v9 = &ScriptThreads;
      ActiveThreadQueue = InactiveThreadQueue;
      v11 = 0;
      v10 = 0;
      do
      {
        __asm { emms }
        CScriptThread__init(v9);
        v12 = InactiveThreadQueue == 0;
        *(CScriptThread **)((char *)&ScriptThreads.next + v10) = InactiveThreadQueue;
        *(CScriptThread **)((char *)&ScriptThreads.prev + v10) = 0;
        if ( !v12 )
          InactiveThreadQueue->prev = v9;
        ++v11;
        InactiveThreadQueue = v9;
        v10 += 136;
        ++v9;
      }
      while ( v11 < 128 );
      v13 = 0;
      missionCleanipList.count = 0;
      do
      {
        v14 = (unsigned __int16)v13;
        v13 += 8;
        missionCleanipList.missionCleanup[v14].type = 0;
        missionCleanipList.missionCleanup[v14].handle = 0;
        missionCleanipList.missionCleanup[v14 + 1].type = 0;
        missionCleanipList.missionCleanup[v14 + 1].handle = 0;
        missionCleanipList.missionCleanup[v14 + 2].type = 0;
        missionCleanipList.missionCleanup[v14 + 2].handle = 0;
        missionCleanipList.missionCleanup[v14 + 3].type = 0;
        missionCleanipList.missionCleanup[v14 + 3].handle = 0;
        missionCleanipList.missionCleanup[v14 + 4].type = 0;
        missionCleanipList.missionCleanup[v14 + 4].handle = 0;
        missionCleanipList.missionCleanup[v14 + 5].type = 0;
        missionCleanipList.missionCleanup[v14 + 5].handle = 0;
        missionCleanipList.missionCleanup[v14 + 6].type = 0;
        missionCleanipList.missionCleanup[v14 + 6].handle = 0;
        missionCleanipList.missionCleanup[v14 + 7].type = 0;
        missionCleanipList.missionCleanup[v14 + 7].handle = 0;
      }
      while ( (_WORD)v13 < 0x2Au );
      v16 = (unsigned __int16)v13;
      v15 = 0;
      flippedCheck.hVehicle = -1;
      flippedCheck.time = 0;
      unk_7D96E0 = -1;
      unk_7D96E4 = 0;
      unk_7D96E8 = -1;
      unk_7D96EC = 0;
      unk_7D96F0 = -1;
      unk_7D96F4 = 0;
      unk_7D96F8 = -1;
      unk_7D96FC = 0;
      unk_7D9700 = -1;
      v18 = 0;
      missionCleanipList.missionCleanup[v16].type = 0;
      v17 = &stuckCheck;
      missionCleanipList.missionCleanup[v16].handle = 0;
      unk_7D9704 = 0;
      missionCleanipList.missionCleanup[v16 + 1].type = 0;
      missionCleanipList.missionCleanup[v16 + 1].handle = 0;
      do
      {
        ++v15;
        *(_DWORD *)((char *)&stuckCheck + v18) = -1;
        v19 = (int)((char *)v17 + 4);
        v17 = (char *)v17 + 32;
        *(_DWORD *)v19 = -979615744;
        *(_DWORD *)(v19 + 4) = -979615744;
        *(_DWORD *)(v19 + 8) = -979615744;
        *(_DWORD *)((char *)&stuckCheck + v18 + 16) = -1;
        *(_DWORD *)((char *)&stuckCheck + v18 + 20) = 0;
        *(_DWORD *)((char *)&stuckCheck + v18 + 24) = 0;
        *((_BYTE *)&stuckCheck + v18 + 28) = 0;
        v18 += 32;
      }
      while ( (_WORD)v15 < 0x10u );
      CFileMgr__ChDir_RootDir("data");
      v22 = CFileMgr__Open("main.scm", "rb");
      CFileMgr__Read(v22, scmBlock, 0x370E8u);
      CFileMgr__CloseFile(v22);
      CFileMgr__ChDir_RootDir((char *)&unk_6886B8);
      playerCarHandle = -1;
      v21 = 0;
      byte_A10B89 = 1;
      dword_9787D4 = -1;
      OnMissionFlagVarOffset = 0;
      dword_9785E4 = -1;
      v20 = 0;
      do
      {
        v23 = 0;
        __asm { pxor    mm1, mm1 }
        do
        {
          _EBX = v23 + v20;
          __asm { movq    ds:qword_7D1DC8[ebx], mm1 }
          _ESI = v23 + 8 + v20;
          __asm { movq    ds:qword_7D1DC8[esi], mm1 }
          v27 = v23 + 16;
          v23 += 24;
          _EBP = v27 + v20;
          __asm { movq    ss:qword_7D1DC8[ebp], mm1 }
        }
        while ( v23 < 24 );
        ++v21;
        *(int *)((char *)ScriptModelIndices + v20) = 0;
        v20 += 28;
      }
      while ( v21 < 220 );
      __asm { emms }
      word_A10A30 = 0;
      sub_45E910(v21, v20);
      CScriptEngine__UpdateObjectIndices();
      _EAX = 0;
      MissionLoaded = 0;
      __asm { pxor    mm2, mm2 }
      byte_A10AEF = 1;
      do
      {
        __asm
        {
          movq    qword ptr ds:_missionOffsets[eax*4], mm2
          movq    qword ptr ds:_missionOffsets+8[eax*4], mm2
          movq    qword ptr ds:_missionOffsets+10h[eax*4], mm2
          movq    qword ptr ds:_missionOffsets+18h[eax*4], mm2
          movq    qword ptr ds:_missionOffsets+20h[eax*4], mm2
          movq    qword ptr ds:_missionOffsets+28h[eax*4], mm2
          movq    qword ptr ds:_missionOffsets+30h[eax*4], mm2
          movq    qword ptr ds:_missionOffsets+38h[eax*4], mm2
        }
        _EAX += 16;
      }
      while ( _EAX < 104 );
      __asm { emms }
      missionCountH = 0;
      *(&missionOffsets + _EAX) = 0;
      word_A10A5C = 0;
      *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 1) = 0;
      dword_A0D950 = 0;
      *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 2) = 0;
      dword_A0D06C = 0;
      *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 3) = 0;
      *(&missionOffsets + _EAX + 1) = 0;
      *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 5) = 0;
      *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 6) = 0;
      *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 7) = 0;
      sub_45E530();
      v32 = 0;
      abortMission = 0;
      v31 = 0;
      dword_9B6AB4 = 0;
      debugModeOn = 0;
      byte_A10B7F = 0;
      word_A1096E = 0;
      byte_A10B3E = 0;
      _drawRadar = 0;
      do
      {
        ++v32;
        *(&scriptSpheres[0].inUse + v31) = 0;
        *(__int16 *)((char *)&scriptSpheres[0].handle + v31) = 1;
        *(int *)((char *)&scriptSpheres[0].uniqueID + v31) = 0;
        *(_DWORD *)((char *)&scriptSpheres[0].sphere.center.x + v31) = 0;
        *(_DWORD *)((char *)&scriptSpheres[0].sphere.center.y + v31) = 0;
        *(_DWORD *)((char *)&scriptSpheres[0].sphere.center.z + v31) = 0;
        *(DWORD *)((char *)&scriptSpheres[0].sphere.radius + v31) = 0;
        v31 += 24;
      }
      while ( v32 < 16 );
      v33 = 0;
      v35 = 0;
      v34 = 0;
      do
      {
        __asm { emms }
        *(DWORD *)((char *)&textDrawers[0].LetterWidth + v33) = 1056293519;
        *(DWORD *)((char *)&textDrawers[0].LetterHeight + v33) = 1066359849;
        RwRGBA__constructor(&v61, 0xE1u, 0xE1u, 0xE1u, 0xFFu);
        v38 = v61.green;
        v39 = v61.blue;
        *(&textDrawers[0].color.red + v33) = v61.red;
        *(&textDrawers[0].color.green + v33) = v38;
        v40 = v61.alpha;
        *(&textDrawers[0].color.blue + v33) = v39;
        *(&textDrawers[0].color.alpha + v33) = v40;
        *(&textDrawers[0].widthAdjustment + v33) = 0;
        *(&textDrawers[0].alignment + v33) = 0;
        *(&textDrawers[0].centered + v33) = 0;
        *(&textDrawers[0].drawBox + v33) = 0;
        *(&textDrawers[0].withBackground + v33) = 0;
        *(DWORD *)((char *)&textDrawers[0].lineWidth + v33) = 1127612416;
        *(DWORD *)((char *)&textDrawers[0].lineHeight + v33) = 1142947840;
        RwRGBA__constructor(&v62, 0x80u, 0x80u, 0x80u, 0x80u);
        v41 = v62.green;
        v37 = 0;
        *(&textDrawers[0].backgroundBoxColor.red + v33) = v62.red;
        v42 = v62.blue;
        *(&textDrawers[0].backgroundBoxColor.green + v33) = v41;
        v43 = v62.alpha;
        *(&textDrawers[0].backgroundBoxColor.blue + v33) = v42;
        __asm { pxor    mm0, mm0 }
        *(&textDrawers[0].backgroundBoxColor.alpha + v33) = v43;
        _EAX = v34;
        *(&textDrawers[0].proportional + v33) = 1;
        *(&textDrawers[0].field_1D + v33) = 0;
        *(_DWORD *)((char *)&textDrawers[0].fontStyle + v33) = 1;
        *(DWORD *)((char *)&textDrawers[0].x + v33) = 0;
        *(DWORD *)((char *)&textDrawers[0].y + v33) = 0;
        do
        {
          v37 += 20;
          __asm
          {
            movq    qword ptr ds:_textDrawers.text[eax*2], mm0
            movq    qword ptr ds:_textDrawers.text+8[eax*2], mm0
            movq    qword ptr ds:_textDrawers.text+10h[eax*2], mm0
            movq    qword ptr ds:_textDrawers.text+18h[eax*2], mm0
            movq    qword ptr ds:_textDrawers.text+20h[eax*2], mm0
          }
          _EAX += 20;
        }
        while ( v37 < 100 );
        ++v35;
        v33 += 244;
        v34 += 122;
      }
      while ( v35 < 48 );
      v46 = 0;
      currentTextDrawer = 0;
      v45 = 0;
      TextDrawFlag = 0;
      do
      {
        __asm { emms }
        *(&textSprites[0].active + v45) = 0;
        *(&textSprites[0].antialiased + v45) = 0;
        *(WORD *)((char *)&textSprites[0].textureID + v45) = -1;
        *(DWORD *)((char *)&textSprites[0].pos.x + v45) = 0;
        *(DWORD *)((char *)&textSprites[0].pos.y + v45) = 0;
        *(DWORD *)((char *)&textSprites[0].pos.w + v45) = 0;
        *(DWORD *)((char *)&textSprites[0].pos.h + v45) = 0;
        RwRGBA__constructor(&v63, 0xFFu, 0xFFu, 0xFFu, 0xFFu);
        v47 = v63.green;
        ++v46;
        *(&textSprites[0].transparentColor.red + v45) = v63.red;
        v48 = v63.blue;
        *(&textSprites[0].transparentColor.green + v45) = v47;
        v49 = v63.alpha;
        *(&textSprites[0].transparentColor.blue + v45) = v48;
        *(&textSprites[0].transparentColor.alpha + v45) = v49;
        v45 += 24;
      }
      while ( v46 < 16 );
      v51 = 0;
      currentTextSprite = 0;
      v50 = &scriptTextures;
      do
      {
        CTexture__destroy(v50);
        ++v51;
        ++v50;
      }
      while ( (_WORD)v51 < 0x10u );
      v52 = txdIndexByName("script");
      if ( v52 != -1 )
      {
        if ( TexDictionaryPool->flags[v52] & 0x80 )
          v53 = 0;
        else
          v53 = (char *)TexDictionaryPool->objects + 28 * v52;
        if ( *(_DWORD *)v53 )
          ReleaseTxd(v52);
      }
      v54 = 0;
      v55 = 0;
      do
      {
        *(int *)((char *)&dword_94DBE8 + v55) = 0;
        *(int *)((char *)&dword_94DBEC + v55) = -1;
        *(int *)((char *)&dword_94DBF0 + v55) = -1;
        v56 = 12 * (v54 + 1);
        v55 += 60;
        *(int *)((char *)&dword_94DBE8 + v56) = 0;
        *(int *)((char *)&dword_94DBEC + v56) = -1;
        *(int *)((char *)&dword_94DBF0 + v56) = -1;
        v57 = 12 * (v54 + 2);
        *(int *)((char *)&dword_94DBE8 + v57) = 0;
        *(int *)((char *)&dword_94DBEC + v57) = -1;
        *(int *)((char *)&dword_94DBF0 + v57) = -1;
        v58 = 12 * (v54 + 3);
        *(int *)((char *)&dword_94DBE8 + v58) = 0;
        *(int *)((char *)&dword_94DBEC + v58) = -1;
        *(int *)((char *)&dword_94DBF0 + v58) = -1;
        v59 = 4 * (v54 + 4);
        v54 += 5;
        v59 *= 3;
        *(int *)((char *)&dword_94DBE8 + v59) = 0;
        *(int *)((char *)&dword_94DBEC + v59) = -1;
        *(int *)((char *)&dword_94DBF0 + v59) = -1;
      }
      while ( v54 < 25 );
      result = 0;
      do
      {
        dword_938208[result] = 0;
        dword_93820C[result] = 0;
        dword_938210[result] = 0;
        dword_938214[result] = 0;
        dword_938218[result] = 0;
        result += 5;
      }
      while ( result < 20 );
      return result;
    }
    
    
     
  4. FYP

    FYP админ какой-то

    Регистрация:
    09.03.2013
    Сообщения:
    1.154
    Симпатии:
    2.039
    Репутация:
    749
    этот? а ты почитай его и попробуй сам ответить.
     
  5. monobogdan

    monobogdan Известный пользователь

    Регистрация:
    26.12.2016
    Сообщения:
    66
    Симпатии:
    1
    Репутация:
    1
    Ещё вопрос:
    Как хукнуть d3d?
    Вроде интерфейсы надо подменить

    если указатели на все поставить то вроде должен.
     
    #5 monobogdan, 2 янв 2017
    Последнее редактирование модератором: 8 мар 2017
  6. deropleat

    deropleat Пользователь

    Регистрация:
    08.03.2017
    Сообщения:
    16
    Симпатии:
    14
    Репутация:
    -2
    Нет. Попробуй чисто логически подумать почему.
    Ищи тебе нужные параметры в хуке d3d9, их и меняй.
     
Статус темы:
Закрыта.