ZenHAX
https://zenhax.com/

Max Payne 1/2 (*.RAS) Snippet of code (Decryption)
https://zenhax.com/viewtopic.php?f=17&t=2717
Page 1 of 1

Author:  Ekey [ Mon Jul 04, 2016 5:28 pm ]
Post subject:  Max Payne 1/2 (*.RAS) Snippet of code (Decryption)

Part of code for decrypt RAS archives from game Max Payne 1/2 (Android / PC). Maybe usefull for someone :)

Code:
struct RASHeader
{
   DWORD dwID;
   DWORD dwSeed;
};


Code:
void DecryptWithSeed(unsigned char *pBuffer, int dwSize, int dwSeed)
{
   if (!dwSeed)
      dwSeed = 1;

   if (dwSize > 0)
   {
      char wSeed = 18;
      char pTemp;
      for (int i = 0; i < dwSize; ++i)
      {
         dwSeed = -2 * (dwSeed / 177) + 171 * (dwSeed % 177);
         pTemp = ((pBuffer[i] << i % 5) | ((signed int)pBuffer[i] >> (8 - i % 5))) ^ wSeed;
         wSeed += 6;
         pBuffer[i] = pTemp + dwSeed;
      }
   }
}

Author:  aluigi [ Tue Jul 05, 2016 3:12 pm ]
Post subject:  Re: Max Payne 1/2 (*.RAS) Snippet of code (Decryption)

Well done:
http://aluigi.org/bms/max_payne_ras.bms

The header is visible but now the last step will be to undertand that decrypted data that probably has a second pass of encryption or it's encrypted using a different seed.

Author:  Ekey [ Tue Jul 05, 2016 6:30 pm ]
Post subject:  Re: Max Payne 1/2 (*.RAS) Snippet of code (Decryption)

Here my test tool for decrypt header and file table + sample of archive inside. In the fact header must be 0x2C bytes and encrypted only 0x24 bytes from 0x8 position.

Edited: Attached variant 2 :)

Attachments:
MPRASDecrypt-v2-src.rar [1.11 KiB]
Downloaded 521 times
MPRASDecrypt-src-bin.rar [129.79 KiB]
Downloaded 290 times

Author:  aluigi [ Tue Jul 05, 2016 10:37 pm ]
Post subject:  Re: Max Payne 1/2 (*.RAS) Snippet of code (Decryption)

Script 0.2, complete extraction :D

Author:  Ekey [ Tue Jul 05, 2016 11:30 pm ]
Post subject:  Re: Max Payne 1/2 (*.RAS) Snippet of code (Decryption)

Cool :D

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/