This guide will not use re-package.
You must know how to use hex editor.
MPQ Helper (Important)
Hex Edit Macro (I made it) (Important. If you don't want work manually)
WINMPQ (Important. It will use to compact(or optimize) MPQ)
Ladik's MPQ Editor (Optional. Only need to check completely deprotected)
listfile (Optional. If you want recovery listfile)
Windows Calculator
Select Hash/Block Table.
Calculating Steps is here.
and copy to Block Table, save it too.
Code: Select all
MPQ_HASH_FILE_KEY
(hash table) = 7037AFC3
(block table) = A3B383EC
We must decryption Hash/Block Table.
type 'dec', and input MPQ_HASH_FILE_KEY. (Must use correct key)
then, program will create decrypted file.
You must modify 2steps.
Code: Select all
-- Step 1 --
Start = 8
Overwrite Value = 00 00 00 00
-- Step 2 --
Start = F
Overwrite Value = 00
Open the Replace(Ctrl+R), and follow the this 2steps. (must replace all!)
Code: Select all
Datatype: Hex-values
Search direction: All
-- Step 1 --
Search for: FF FF FF FF FF FF FF FF 00 00 00 00 FE FF FF 00
Replace with: FF FF FF FF FF FF FF FF FF FF FF FF FE FF FF FF
-- Step 2 --
Search for: EE EE EE EE EE EE EE EE 00 00 00 00 EE EE EE 00
Replace with: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
You must modify only one step.
Code: Select all
Start = 2F
Overwrite Value = 80
Fill 0x00~0x20 to 00.
Code: Select all
MPQ_HASH_FILE_KEY
(hash table) = 7037AFC3
(block table) = A3B383EC
We must re-encryption Hash/Block Table.
type 'enc', and input MPQ_HASH_FILE_KEY. (Must use correct key)
then, program will create re-encrypted file.
Copy to all hex in re-encrypted hash table.
Go to End of map file, and Remember or record somewhere to offset. (1A7EB92)
(I will it call this offset named 'Alter Hash Pos')
Copy to all hex in re-encrypted block table.
Go to End of map file you modified, and remember again to offset. (1A82B92)
(I will it call this offset named 'Alter Block Pos')
Paste it.
Remark the header like this.
Execute compact(Ctrl+P), you should it.
After compact, you can see 'ladik's mpq editor' no longer display [Read-only].
(i will write same things in spoiler.)
Ps. Images are same by SProtect. i apoloze for about that.
Ps. Position of '4D 50 51 1A' is different to map by map(case by case).
Select Hash/Block Table.
Ps. SSProtect recorded hash table size + 0x10000000 (like, XX XX XX 10)
please ignore that value. (if, value is 00 08 00 10, then read it to 00 08 00 00)
Calculating Steps is here.
and copy to Block Table, save it too.
Code: Select all
MPQ_HASH_FILE_KEY
(hash table) = 7037AFC3
(block table) = A3B383EC
We must decryption Hash Table.
type 'dec', and input MPQ_HASH_FILE_KEY. (Must use correct key)
then, program will create decrypted file.
Ps. SSProtect didn't modified Block Table. So, we don't touch Block Table.
You must modify 2steps.
Code: Select all
-- Step 1 --
Start = 8
Overwrite Value = 00 00 00 00
-- Step 2 --
Start = F
Overwrite Value = 00
Open the Replace(Ctrl+R), and follow the this 2steps. (must replace all!)
Code: Select all
Datatype: Hex-values
Search direction: All
-- Step 1 --
Search for: EE EE EE EE EE EE EE EE 00 00 00 00 FE FF FF 00
Replace with: FF FF FF FF FF FF FF FF FF FF FF FF FE FF FF FF
-- Step 2 --
Search for: EE EE EE EE EE EE EE EE 00 00 00 00 EE EE EE 00
Replace with: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
Code: Select all
MPQ_HASH_FILE_KEY
(hash table) = 7037AFC3
(block table) = A3B383EC
We must re-encryption Hash Table.
type 'enc', and input MPQ_HASH_FILE_KEY. (Must use correct key)
then, program will create re-encrypted file.
Select 0x00000200 ~ Behind Map Header
Copy to all hex in re-encrypted hash table.
Go to End of map file, and Remember or record somewhere to offset. (1FC420F)
(I will it call this offset named 'Alter Hash Pos')
Copy to all hex in block table.
Go to End of map file you modified, and remember again to offset. (1FCC20F)
(I will it call this offset named 'Alter Block Pos')
Paste it.
Remark the header like this.
Execute compact(Ctrl+P), you should it.
After compact, you can see 'ladik's mpq editor' no longer display [Read-only].
If have any question, then reply me.