Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
hhrhhr
Posts: 36 Joined: Sun Jan 18, 2015 11:22 pm
Post
by hhrhhr » Wed May 20, 2015 8:36 pm
using the fact that part of the localization is not encrypted, I compare some lines. took as a basis the Spanish localization, here are a couple of lines from it:
the English version of these lines are encrypted and look like this (hex):
Code: Select all
0DEF D7DE 09BD B27A CFF5 13EB 95D6 99AD CE5B 9EB7 D76F 1FDF 9BBE AD7D 0DEF D7DE 09BD B27A CFF5 13EB 95D6 99AD CE5B 9DB7 CA6F 1DDF 80BE AC7DI assumed that in the translation it should look like "Temerian armor" and "Temerian boots". hex view of UTF-16LE:
Code: Select all
0DEF D7DE 09BD B27A CFF5 13EB 95D6 99AD CE5B 9EB7 D76F 1FDF 9BBE AD7D 5400 6500 6D00 6500 7200 6900 6100 6E00 2000 6100 7200 6D00 6F00 7200 T e m e r i a n " " a r m o r 0DEF D7DE 09BD B27A CFF5 13EB 95D6 99AD CE5B 9DB7 CA6F 1DDF 80BE AC7D 5400 6500 6D00 6500 7200 6900 6100 6E00 2000 6200 6F00 6F00 7400 7300 T e m e r i a n " " b o o t sis clearly not a direct replacement character by (xor) or (shift), as the same characters in one string are represented by different codes. have any ideas?
aluigi
Site Admin
Posts: 12984 Joined: Wed Jul 30, 2014 9:32 pm
Post
by aluigi » Sat May 23, 2015 3:55 am
It looks like a XOR with a long sequence of bytes but I don't know if it's a fixed "key" or is continuously generated byte-per-byte (like increment key + byte ^ key).
SLaYeR983
Posts: 13 Joined: Tue May 19, 2015 8:20 pm
Post
by SLaYeR983 » Sat May 23, 2015 8:46 am
I waiting open tool editor tool and replace tool, for this files... Because this game have very hard language and We need it translate for game...
Nobody
Posts: 47 Joined: Sat May 16, 2015 11:58 pm
Post
by Nobody » Sat May 23, 2015 10:52 am
I absolutely agree with the SLaYeR983. And I want to translate this game...
aluigi
Site Admin
Posts: 12984 Joined: Wed Jul 30, 2014 9:32 pm
Post
by aluigi » Sat May 23, 2015 11:44 am
Just for curiosity, can you upload the english and spanish w3string?
hhrhhr
Posts: 36 Joined: Sun Jan 18, 2015 11:22 pm
Post
by hhrhhr » Sat May 23, 2015 5:03 pm
SLaYeR983
Posts: 13 Joined: Tue May 19, 2015 8:20 pm
Post
by SLaYeR983 » Mon May 25, 2015 7:28 am
Is there any improvement?
hhrhhr
Posts: 36 Joined: Sun Jan 18, 2015 11:22 pm
Post
by hhrhhr » Mon May 25, 2015 12:10 pm
so, decoding strings were similar as in the Witcher 2.
Code: Select all
string_key = magic >> 8 & 0xffff for (i = 0; i < strings_count; i += 2) { char_key = ((string_len + 1) * string_key) & 0xffff string_buffer[i+0] ^= ((char_key >> 0) & 0xff) string_buffer[i+1] ^= ((char_key >> 8) & 0xff) string_key = ((string_key << 1 ) | (string_key >> 15)) && 0xffff }Lua implementation
is here . test output:
Code: Select all
>lua inspect_w3strings.lua DLC1\content\en.w3strings . debug magic: 0x43975139 -> 0x79321793 block 1, count = 11 132 bytes block 2, count = 11 88 bytes block 3, count = 331 662 bytes -- block 2 content ---------------- 1: 0x13C88E93 0x00109992 <-- second column — some id/crc/hash 2: 0x1F2AC3DE 0x001083f6 <-- third column — string id, unique for the entire localization 3: 0x474BF324 0x001083ef 4: 0x4C4FF12E 0x00109994 5: 0x519C8F13 0x00109996 6: 0x59FEAB16 0x00109991 7: 0x692198D8 0x0010999f 8: 0x736E017E 0x00109390 9: 0xB1BB516D 0x00109997 10: 0xC0EB3DE0 0x00109993 11: 0xFC5E14AB 0x001083f7 ----------------------------------- sorting... sorted. done!I do not know what to do with the second data block. also I do not know how to get linking between
"item_category_light_armor_description" and "0x00109390" :(
ready strings from english part of dlc1:
Code: Select all
0x001083ef ## Saddlebags allow you to carry more weight. 0x001083f6 ## A horse equipped with blinders won't panic as easily. 0x001083f7 ## A horse equipped with a saddle won't tire as easily. 0x00109390 ## Light gear. Increases Armor and Stamina regeneration. 0x00109991 ## Temerian Armor 0x00109992 ## Temerian Boots 0x00109993 ## Temerian Gauntlets 0x00109994 ## Temerian Trousers 0x00109996 ## Temerian Horse Blinders 0x00109997 ## Temerian Saddle 0x0010999f ## Temerian Saddlebags
Nobody
Posts: 47 Joined: Sat May 16, 2015 11:58 pm
Post
by Nobody » Tue May 26, 2015 10:52 pm
hhrhhr wrote: so, decoding strings were similar as in the Witcher 2.
Code: Select all
string_key = magic >> 8 & 0xffff for (i = 0; i < strings_count; i += 2) { char_key = ((string_len + 1) * string_key) & 0xffff string_buffer[i+0] ^= ((char_key >> 0) & 0xff) string_buffer[i+1] ^= ((char_key >> 8) & 0xff) string_key = ((string_key << 1 ) | (string_key >> 15)) && 0xffff }Lua implementation
is here . test output:
Code: Select all
>lua inspect_w3strings.lua DLC1\content\en.w3strings . debug magic: 0x43975139 -> 0x79321793 block 1, count = 11 132 bytes block 2, count = 11 88 bytes block 3, count = 331 662 bytes -- block 2 content ---------------- 1: 0x13C88E93 0x00109992 <-- second column — some id/crc/hash 2: 0x1F2AC3DE 0x001083f6 <-- third column — string id, unique for the entire localization 3: 0x474BF324 0x001083ef 4: 0x4C4FF12E 0x00109994 5: 0x519C8F13 0x00109996 6: 0x59FEAB16 0x00109991 7: 0x692198D8 0x0010999f 8: 0x736E017E 0x00109390 9: 0xB1BB516D 0x00109997 10: 0xC0EB3DE0 0x00109993 11: 0xFC5E14AB 0x001083f7 ----------------------------------- sorting... sorted. done!I do not know what to do with the second data block. also I do not know how to get linking between
"item_category_light_armor_description" and "0x00109390"
ready strings from english part of dlc1:
Code: Select all
0x001083ef ## Saddlebags allow you to carry more weight. 0x001083f6 ## A horse equipped with blinders won't panic as easily. 0x001083f7 ## A horse equipped with a saddle won't tire as easily. 0x00109390 ## Light gear. Increases Armor and Stamina regeneration. 0x00109991 ## Temerian Armor 0x00109992 ## Temerian Boots 0x00109993 ## Temerian Gauntlets 0x00109994 ## Temerian Trousers 0x00109996 ## Temerian Horse Blinders 0x00109997 ## Temerian Saddle 0x0010999f ## Temerian SaddlebagsWow, you are awesome!
you can give directly tools? Unp/Repack?
hhrhhr
Posts: 36 Joined: Sun Jan 18, 2015 11:22 pm
Post
by hhrhhr » Wed May 27, 2015 1:16 am
Nobody wrote: you can give directly tools?
hhrhhr wrote: Lua implementation
is here .
Nobody wrote: Repack?
hhrhhr wrote: I do not know what to do with the second data block. also I do not know how to get linking between "item_category_light_armor_description" and "0x00109390"
SLaYeR983
Posts: 13 Joined: Tue May 19, 2015 8:20 pm
Post
by SLaYeR983 » Wed May 27, 2015 3:22 pm
This is good news...But, How to use this tool. This format foreign to me. preferably .exe format, as unpack.exe
There is a Gibbed red tool, for witcher 2. I guess, it will be help to you.
The Witcher 2 Gibbed Red Tool
SLaYeR983
Posts: 13 Joined: Tue May 19, 2015 8:20 pm
Post
by SLaYeR983 » Sun Sep 06, 2015 9:05 pm
Is there any news? Translate projects still wait, because of .w3strings file system...