Gildor's Forums

Pages: [1] 2 3 ... 10
 1 
 on: Today at 10:45 
Started by 1212aaa - Last post by mutsa
For deobfuscation of filenames, you simply reverse the shift, undo the escaping (by checking every pair of characters, seeing if they are in the table and the position % 4 matches the expected substitution, and then replacing the pair with the original character), and possibly split by ! if the original input was padded.

Here's an implementation in Rust capable of replicating both obfuscation and deobfuscation, matching 1-to-1 with the values produced by the game: https://gist.github.com/molenzwiebel/284318d9e963672b239f9fca901be89a. The result after renaming is pretty good!

Oh, Thanks to you, I can deobfuscation everything and watch it neatly. That's cool

 2 
 on: December 02, 2023, 22:56 
Started by spiritovod - Last post by spiritovod
Game: Suicide Squad: Kill the Justice League (steam page)
UE4 version: 4.25

Use specific build from this topic with game specific override and any key with valid format. Animations are not supported, they're using custom format for them. A lot of things are customized, thus they may not look or export properly - for example, object names for meshes are not parsed properly, and batch export doesn't make much sense for them, as you'll get something like "mesh1", "mesh2" and so on.

Further research probably will be done after full game is released next year. You can report crashes, but not from batch export.

 3 
 on: December 02, 2023, 19:45 
Started by 1212aaa - Last post by molenzwiebel
Spent some time diving into the code to figure out the name obfuscation algorithm. The description from @sylvester334 helped a ton with this, but also cheers to smilegate for leaving the appropriately named FFileManagerWindows::ObfuscateFilename symbol in the EFGame DLL Wink

In short, the names are shifted around by a fixed amount based on the length of the string. Certain characters are first escaped before they are obfuscated, using a pair of characters based on the position % 4 inside the input string. The following table is used for that purpose:

Code:
TABLE = {
    "Q": ["QP", "QD", "QW", "Q4"],
    "-": ["QL", "QB", "QO", "Q5"],
    "_": ["QC", "QN", "QT", "Q9"],
    "X": ["XU", "XN", "XH", "X3"],
    "!": ["XW", "XS", "XZ", "X0"],
}

If Q, -, _, X or ! appear in the input string, they will be replaced by one of these based on the position in the string, % 4. In other words, if the 3rd character (idx = 2) is a _, it will be replaced by QT (since 2 % 4 == 2, TABLE['_'][2] == "QT").

Some examples:

Code:
LV_LUT_Commander_Valtan_Extreme becomes LVQTLUTQ9COMMANDERQTVALTANQTEXNTREME
LV_ELG_Kayangel_ED_01_H         becomes LVQTELGQ9KAYANGELQNEDQN01QNH
SGintro_Warning                 becomes SGINTROQ9WARNING

Afterwards, the ascii values will be rotated according to a simple caesar cipher, where rotation is offset by the length of the escaped string. This works for all strings longer than 20 characters.

For inputs shorter than 20 characters, the input will be padded by adding a `!` and several `.`s until 20 characters are reached. This string is then escaped. The obfuscation loop then overwrites the period characters with earlier emitted characters, roughly according to the following pseudocode:

Code:
if input[i + unpadded_length] == '.' {
  input[i + unpadded_length] = output[i]
}

For deobfuscation of filenames, you simply reverse the shift, undo the escaping (by checking every pair of characters, seeing if they are in the table and the position % 4 matches the expected substitution, and then replacing the pair with the original character), and possibly split by ! if the original input was padded.

Here's an implementation in Rust capable of replicating both obfuscation and deobfuscation, matching 1-to-1 with the values produced by the game: https://gist.github.com/molenzwiebel/284318d9e963672b239f9fca901be89a. The result after renaming is pretty good!


 4 
 on: December 02, 2023, 17:46 
Started by JimCollin - Last post by JimCollin
Game: Die by the Blade Demo
UE4 version: 4.27
AES key: No need


 5 
 on: December 01, 2023, 19:24 
Started by 1212aaa - Last post by Xanathar
Thank you for your hard work!
I have managed to extract database files by using Quickbms script only.

However, some files are corrupted (not working) and don't open with SQL db viewers.
I get this error: An error occurred: file is not a database.
95% of files unpacked correctly, Except some large ones.

Code:
EFTable_Item.db - size: 80M
EFTable_SkillEffect.db - size: 42M
EFTable_ItemGradeOptionStatic.db
EFTable_TownNpcDress.db
EFTable_ItemAssemblyNpc.db

if anyone is interested I found Eshter weapon upgrade models in this table: EFTable_ItemEvolutionAppearance.db

1100000   10123   EFDLItem_WP_WWHK_TF01_01.WP_WWHK_TF01_01   HK_Item
1100001   10123   EFDLItem_WP_WWHK_TF01_01.WP_WWHK_TF01_01   HK_Item
1100002   10123   EFDLItem_WP_WWHK_TF01_03.WP_WWHK_TF01_03   HK_Item
1100003   10123   EFDLItem_WP_WWHK_TF01_03.WP_WWHK_TF01_03   HK_Item
1100004   10123   EFDLItem_WP_WWHK_TF01_04.WP_WWHK_TF01_04   HK_Item
1100005   10123   EFDLItem_WP_WWHK_TF01_04.WP_WWHK_TF01_04   HK_Item
1100006   10123   EFDLItem_WP_WWHK_TF01_06.WP_WWHK_TF01_06   HK_Item
1100007   10123   EFDLItem_WP_WWHK_TF01_06.WP_WWHK_TF01_06   HK_Item
1100008   10123   EFDLItem_WP_WWHK_TF01_09.WP_WWHK_TF01_09   HK_Item

 6 
 on: December 01, 2023, 14:55 
Started by spiritovod - Last post by AllEx
OK, then I will keep reporting about crashes. I know, that you are busy, so I will not expect fixes Smiley
"shaders are out of scope of the program in general" Oh, sad to hear that. Meshes without materials are not that attractive. Though, its better than nothing Smiley
"it's probably better to use graphic debuggers (like Nvidia Nsight or Intel GPA)" Thanks for the hint! I will dig into that direction.
"But that's also out of scope of this forum." Sure. I will not spoil it with offtopic. Just wanted to know direction, where to investigate. Thanks again!

 7 
 on: December 01, 2023, 10:44 
Started by zorgpro - Last post by Teoma
То есть это был просто какой то костыль анрила. Что и запутало, ибо не бывает такого что в игре было что-то чего нет в файлах игры. А оно просто построено очень хитро, спасибо всем за помощь.
Да не зачто =)
Просто игра контролирует все, и движения костей в том числе , чему тут удивляться то ? grin laugh

 8 
 on: December 01, 2023, 05:19 
Started by 1212aaa - Last post by Xanathar
@mutsa: Korean and chinese versions are region locked and hardly accessible from outside. Unless someone will provide dumped binary from that updated version (here or via PM), I can't do anything.

d07riv: Yes, quickbms script is doing the same thing now. Anyway, both original scheme and this update were submitted by other people, I've only created implementation for it.

@spiritovod
@d07riv

I'm having trouble unpacking the content of the lpk(db files) is the script working with latest Steam version? what I'm doing wrong?

Steps:
1- run: LAUTool_steam.exe -d data2.lpk data2.lpk.dec
command output the message: Done!
so I guess this work

2- run: quickbms.exe lpk_extract_v6.bms data2.lpk.dec folderName
this one fails with the error:

https://imgur.com/a/kRRrOAQ


 9 
 on: December 01, 2023, 00:04 
Started by 1212aaa - Last post by Icos
@spiritovod after recent updates to KR client special build of umodel crashes on some packages with LZ4 error. Probably format of the data was changed. Could you please update the tool?

 10 
 on: November 30, 2023, 23:15 
Started by legsofduck - Last post by legsofduck
Я хочу распаковать файл .upk Batman Arkham Knight шрифты en и упаковать его обратно

Pages: [1] 2 3 ... 10
Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Leviathan design by Bloc | XHTML | CSS