ZenHAX

Free Game Research Forum | Official QuickBMS support | twitter @zenhax | SSL HTTPS://zenhax.com
It is currently Fri Nov 24, 2017 12:13 am

All times are UTC




Post new topic  Reply to topic  [ 10 posts ] 
Author Message
 Post subject: Injustice 2 PC
PostPosted: Mon Nov 06, 2017 10:01 pm 

Joined: Fri Jul 28, 2017 11:03 pm
Posts: 5
Game's beta is out now.
Files has strange extensions like .xxx and .tfc
Umodel fails to see through encryption probably.
Uploaded some samples, 619 MB.
I'm not sure if i have to drop .exe too

https://mega.nz/#!moJFWALB!wESFpvtcSezM9XYbrnaQ1NCCpAWa8dCbn1ps68tPC9Q

I hope that we could push through it while beta is up, client must include all dlc characters, cus i saw their files.

Here's executable...
https://mega.nz/#!m5wQyLAI!NCy5NTpiSltFllfDT39qcgBSfiRQ5FVoAI7vXyj7yL8


Top
   
 Post subject: Re: Injustice 2 PC
PostPosted: Tue Nov 07, 2017 12:28 pm 
Site Admin
User avatar

Joined: Wed Jul 30, 2014 9:32 pm
Posts: 7145
That's stuff for Gildor's umodel


Top
   
 Post subject: Re: Injustice 2 PC
PostPosted: Tue Nov 07, 2017 1:06 pm 

Joined: Wed Aug 03, 2016 10:01 am
Posts: 19
It is, but we need to find someone to break through the denuvo encryption


Top
   
 Post subject: Re: Injustice 2 PC
PostPosted: Tue Nov 07, 2017 4:20 pm 

Joined: Sun Oct 04, 2015 2:27 am
Posts: 165
tyrannojones wrote:
It is, but we need to find someone to break through the denuvo encryption


use mobile version file it same !!!


Top
   
 Post subject: Re: Injustice 2 PC
PostPosted: Tue Nov 07, 2017 5:52 pm 

Joined: Sun Mar 20, 2016 10:25 pm
Posts: 26
It's oodle, relay this to Gildor: https://github.com/dtzxporter/Siren


Top
   
 Post subject: Re: Injustice 2 PC
PostPosted: Fri Nov 10, 2017 1:55 am 

Joined: Fri Dec 11, 2015 3:38 pm
Posts: 32
george_sears wrote:
Game's beta is out now.
Files has strange extensions like .xxx and .tfc
Umodel fails to see through encryption probably.
Uploaded some samples, 619 MB.
I'm not sure if i have to drop .exe too

https://mega.nz/#!moJFWALB!wESFpvtcSezM9XYbrnaQ1NCCpAWa8dCbn1ps68tPC9Q

I hope that we could push through it while beta is up, client must include all dlc characters, cus i saw their files.

Here's executable...
https://mega.nz/#!m5wQyLAI!NCy5NTpiSltFllfDT39qcgBSfiRQ5FVoAI7vXyj7yL8


Those are normal UE extensions. NRS uses xxx packaging for all their recent games, MK9, Injustice, MKX/L.

The xxx files will contain the Mesh, animations, tables, Textures Etc., and they're structured pretty much the same way a .upk/pak file is. .tfc are Texture File Checker files. And the MKscriptbinary files, which I think this game also uses, will have the Fight Scripts & tweakvars.

I'm not certain how much of a factor Denuvo is in the encryption of the xxx files. I can reasonably presume, based off of the previous games, that they're all compressed.


Top
   
 Post subject: Re: Injustice 2 PC
PostPosted: Sat Nov 11, 2017 1:36 am 

Joined: Sat Nov 11, 2017 12:58 am
Posts: 2
I think I figured this out. I'm not very good at explaining but...
The compressed parts of the archive are in chunks with sub-chunks in them. The amount of chunks is defined @0x64 and the true size of the header is @0x68 which is the start of a table for each chunk . The table is 0x18 long and contains the total file size until this chunk (QWord), the uncompressed size of a chunk (Word), the offset of the chunk (QWord) and the compressed size of the chunk (Word). The next 0x18 bytes are padding until the string count of what I assume is the true name of the package. Basically the real header is everything but the table.

For each chunk there is the familiar UnrealMagic (QWord), something (QWord), the size of the chunk (QWord) and the uncompressed size of the chunk (QWord). Where it gets dicey is there can be a couple of "sub-chunks" in there (math can figure out how many). Each sub-chunk has a size (QWord) and uncompressed size (QWord).

I wrote a (terrible) python script to extract these chunks and my first BMS script to un-compress them. I then reassembled HQ_MSTR.xxx manually (I don't know if I can share). I'm sure someone whos better than me can write a better BMS script to do this.

Code:
import operator
import array
import string
import sys
import os
import zlib
import struct

def Main():
    dir_path = os.path.dirname(os.path.realpath(__file__))
    print(dir_path+"\_EXT")
    File = "Init"
    f = open(File + ".xxx", "rb")
    Top = f.read(100)
    BlockCount1 = f.read(4)
    BlockCount = struct.unpack('I', BlockCount1)[0]
    BlockStuff = []

   
    for X in range(0, BlockCount):
        FileSizeBegin = struct.unpack('Q', f.read(8))[0]
        BlockRealSize = struct.unpack('I', f.read(4))[0]
        BlockStart = struct.unpack('Q', f.read(8))[0]
        BlockSize = struct.unpack('I', f.read(4))[0]
        BlockStuff.append([FileSizeBegin, BlockRealSize, BlockStart, BlockSize])
    print(BlockStuff, f.tell())
    Blank = f.read(24)
    PackageChar = f.read(4)
    PacChar = struct.unpack('I', PackageChar)[0]
    PackageName = f.read(PacChar)
    PackageName1 = PackageName.decode("ASCII").rstrip("\0")
    if not os.path.exists(dir_path+"\\_EXT\\"+str(PackageName1)):
        os.makedirs(dir_path+"\\_EXT\\"+str(PackageName1))

    p = open(dir_path+"\\_EXT\\"+str(PackageName1)+"\\"+File+"_Top", "wb")
    p.write(Top)
    p.write(BlockCount1)
    p.write(Blank)
    p.write(PackageChar)
    p.write(PackageName)
    p.close()
    for T in range(0, BlockCount):
        Q = BlockStuff[T]
        f.seek(Q[2], 0)
        Block = f.read(Q[3])
        w = open(dir_path+"\\_EXT\\"+str(PackageName1)+"\\"+File+"_%03i"%T+".encBlock", "wb")
        w.write(Block)
    print("Done")
    w.close()
   
Main()


Code:
comtype oodle

get EXT extension
if EXT == "encBlock"
   get NAME BASENAME
   get ZSIZE long
   get SIZE ASIZE
   math SIZE - 4
   set OFFSET 4
   clog NAME OFFSET SIZE ZSIZE


Top
   
 Post subject: Re: Injustice 2 PC
PostPosted: Sat Nov 11, 2017 9:10 am 
Site Admin
User avatar

Joined: Wed Jul 30, 2014 9:32 pm
Posts: 7145
Regarding the quickbms script I guess you mean something like the following:
Code:
comtype oodle
get EXT extension
if EXT == "encBlock"
   get NAME basename
   get SIZE long
   savepos OFFSET
   get ZSIZE asize
   math ZSIZE - OFFSET
   clog NAME OFFSET ZSIZE SIZE
endif
Hope it helps


Top
   
 Post subject: Re: Injustice 2 PC
PostPosted: Sun Nov 12, 2017 12:58 am 

Joined: Sat Nov 11, 2017 12:58 am
Posts: 2
Actually I needed something like this. I tested this a few times. It will spit out a fixed header and un-compressed data so you still need to mash the 2 together. I could probably rewrite it to spit out one complete file but... This won't make the files comparable with umodel but it should help someone else who knows unreal stuff to make their own extractor.

Code:
comtype oodle
get EXT extension
if EXT == "xxx"
   log MEMORY_FILE 0 0
   log MEMORY_FILE 0 0x64
   append
   getdstring TOP 0x64
   get NAME BASENAME
   string NAME + ".header"
   log MEMORY_FILE 0x64 0x04
   get COUNT long
   
   savepos RET
   set SKIP 24
   math SKIP * COUNT
   print %SKIP%
   goto SKIP 0 SEEK_CUR
   savepos TOPCUR
   log MEMORY_FILE TOPCUR 0x18
   getdstring TEMP 0x18
   savepos TOPCUR
   log MEMORY_FILE TOPCUR 0x04
   get CCOUNT long
   savepos TOPCUR
   log MEMORY_FILE TOPCUR CCOUNT
   getdstring PACKAGENAME CCOUNT
   set Temp 0x84
   math Temp + CCOUNT
   log NAME 0 Temp MEMORY_FILE
   set Temp 0x84
   
   goto RET
   append
   get NAME BASENAME
   string NAME + ".bin"
   for i = 0 < COUNT
      print %COUNT%
      print %i%
      goto RET
      get OGSIZE longlong
      get ADDSIZE long
      get OFFSET longlong
      get SIZE long
      savepos RET
      
      goto OFFSET
      getdstring TMP 0x10
      get BSIZE longlong
      get RSIZE longlong
      set TMP1 BSIZE
      set TMP2 SIZE
      math TMP2 - TMP1
      math TMP2 - 32
      savepos TMP3
      math TMP3 + TMP2
      math TMP2 / 16
      set COUNT2 TMP2
      append
      for t = 0 < COUNT2
         get ZSIZE2 longlong
         get SIZE2 longlong
         savepos ret3
         goto TMP3
         clog NAME TMP3 ZSIZE2 SIZE2
         math TMP3 + ZSIZE2
         goto ret3
         next t
      append
      
      next i
      


Top
   
 Post subject: Re: Injustice 2 PC
PostPosted: Tue Nov 14, 2017 6:37 pm 

Joined: Mon Sep 01, 2014 7:19 pm
Posts: 30
Damn, I wasted some time yesterday to get uncompressed data out. And here's your script! Thousand time I told myself check zenhax firts lol What a great forum we all have people. If anyone will make similiar script to get files out, smaller files for easier work, we are all saved:)


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 10 posts ] 

All times are UTC


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Limited