View Single Post
  #4  
Old 10-01-2021, 11:16
Razor12911's Avatar
Razor12911 Razor12911 is offline
Noob
 
Join Date: Jul 2012
Location: South Africa
Posts: 3,749
Thanks: 2,170
Thanked 11,206 Times in 2,307 Posts
Razor12911 is on a distinguished road
FIFA is a special case like Far Cry Primal, Watch Dogs 2/Legion, they encrypted the game and used two algorithms, kraken/leviathan + zstd, the zstd used has dictionary. So even before we begin. You have to use FIFA 19 Cas Decryption Tool and then use xtool (I think for FIFA 19 and FIFA 20). As for the method "zstd.dict:l19", it's more or less the same as libdunia situation where I added a temporary codec internally and then remove it, however the xtool with the temporary codec can still be found here

I added these methods because of the scene, I thought they have made a breakthrough in bypassing the latest iteration of Denuvo so I added several methods quickly but as you can see right now, these games are still uncracked so I remove the methods and then slowly put them back via plugin support now that I have made xtool accept them.

Quote:
Originally Posted by Cesar82 View Post
@Razor12911I tried to do some tests here, but it seems that XTool has an AI. Even with a lack of plugin libraries, XTool compresses too (no errors were shown), and the extraction was done normally. (It seems that for lack of DLL files, XTool changes the method to avoid errors).
You're the guy, congratulations on the great job.
Of course checks are made to see if a library can be initialized or not. I'm not sure if you checked the source code included in Unreal Engine plugin

Capture2.PNG

Here the plugin checks if a user has given a key and necessary parameters and if nothing is given then using -mue4 then the plugin will be unavailable.

If for example you are just trying to use frostbite3.ini, it has 5 different streams to be detected, if you have liblz4.dll, xtool will search for all 5 different streams but when it tries to add the streams that were found and finds that some libraries are missing, these streams are discarded so that xtool continues working and not raise an error.

Edit:

Code:
[Stream1]
// DAInquisition
Name=zlib
Codec=zlib:l98
BigEndian=1
Signature=0x0270
Structure=Dict(1),DSize(3),Signature(2),CSize(2),ZLibHdr(2),Stream
StreamOffset=0
CompressedSize=CSize - 6
DecompressedSize=DSize
Condition1=DSize > CSize
Condition2=CSize > 64
Condition3=CSize <= 262144
Condition4=Dict=0
Condition5=ZLibHdr = 0x78DA

[Stream2]
// BF4-BFV, NFS2015-NFSHeat, MECatalyst
Name=lz4
Codec=lz4
BigEndian=1
Signature=0x0970
Structure=Dict(1),DSize(3),Signature(2),CSize(2),Stream
StreamOffset=0
CompressedSize=CSize
DecompressedSize=DSize
Condition1=DSize > CSize
Condition2=CSize > 64
Condition3=CSize <= 262144
Condition4=Dict = 0

[Stream3]
// MEAndromeda 
Name=zstd
Codec=zstd:l19
BigEndian=1
Signature=0x0F70
Structure=Dict(1),DSize(3),Signature(2),CSize(2),ZStdHdr(4),Stream
StreamOffset=-4
CompressedSize=CSize
DecompressedSize=DSize
Condition1=DSize > CSize
Condition2=CSize > 64
Condition3=CSize <= 262144
Condition4=Dict = 0
Condition5=ZStdHdr = 0x28B52FFD

[Stream4]
// FIFA 18-20
Name=kraken
Codec=kraken:l8:t128
BigEndian=1
Signature=0x1970
Structure=Dict(1),DSize(3),Signature(2),CSize(2),OodleHdr(2),Stream
StreamOffset=-2
CompressedSize=CSize
DecompressedSize=DSize
Condition1=DSize > CSize
Condition2=CSize > 64
Condition3=CSize <= 262144
Condition4=Dict = 0
Condition5=OodleHdr = 0x8C06

[Stream5]
// FIFA 21
Name=leviathan
Codec=leviathan:l8:t128
BigEndian=1
Signature=0x1970
Structure=Dict(1),DSize(3),Signature(2),CSize(2),OodleHdr(2),Stream
StreamOffset=-2
CompressedSize=CSize
DecompressedSize=DSize
Condition1=DSize > CSize
Condition2=CSize > 64
Condition3=CSize <= 262144
Condition4=Dict = 0
Condition5=OodleHdr = 0x8C0C
Alternatively, when using -mfrostbite3 method, you can use it this way -mfrostbite3:zstd, xtool will check what Streams are called "zstd" as they have names, Stream3 is the one that is called zstd, so it will only search using information from Stream3. Same as -mfrostbite3:zstd:zlib, where Stream1 and Stream3 are the ones that are searched. However if no parameter is given, -mfrostbite3, all 5 streams are searched.

Last edited by Razor12911; 10-01-2021 at 11:34.
Reply With Quote
The Following 2 Users Say Thank You to Razor12911 For This Useful Post:
Cesar82 (10-01-2021), KaktoR (10-01-2021)