Code: Select all
https://www.mediafire.com/?clrtv29a43y3fni
Code: Select all
https://www.mediafire.com/?clrtv29a43y3fni
odrin wrote:they'll do the same stupid shit they always do. rip models and textures, rip sounds, translate to another language.
what "modding" comes down to these days
Metal Gear Solid Ground Zeros PC
-------------------------------------
Exe: MgsGroundZeroes.exe
Protection: VMProtect
Data Archives
data_00.g0s
data_01.g0s
data_02.g0s
Texture Extension
.ftex
Assets/tpp/mecha/sbh/Pictures/sbh0_intr2_def_srm.ftex
Assets/tpp/chara/dds/Pictures/dds0_body0_def_srm.ftex
Assets/tpp/chara/dds/Pictures/dds0_body0_def_nrm.ftex
you need to dump the exe to load it in IDA
They may be using blowfish
And theres something wrong with that?odrin wrote:they'll do the same stupid shit they always do. rip models and textures, rip sounds, translate to another language.
what "modding" comes down to these days
You can make temporary script for dump encrypted data's? I'll look what I can do with this.chrrox wrote:The archive format is easy the file table is at the end and its very easy format.
The file names are hashes.
And the files are encrypted like every other metal gear game so someone will have to reverse it to make a proper extractor.
Also someone will need to dump the file names to match the file name hashes.
Code: Select all
# Metal Gear Solid 5 Ground Zeroes
#Partaial quickbms script by chrrox
get TSIZE asize
math TSIZE - 36
goto TSIZE
print "%TSIZE%"
get arcsize long
getdstring null 0xC
get files long
set tblstart files
math tblstart * 16
math tblstart + 36
get TSIZE asize
math TSIZE - tblstart
goto TSIZE
for i = 0 < files
get CHKSUM long
get HASH long
get offset long
get size long
math offset * 16
string NAME p= "%08X.dat" HASH
log NAME offset size
next i
I don't know the name of the algorythm (and it probably doesn't have one) but here's the code I have reversed from MGS 3 a long time ago. Same code was used for MGS 2 and MGS 4 as well.Ekey wrote:What a hash algorithm they used for previous game versions? I see CRC64 in this game with ecma tab.
Code: Select all
int CHashMGS::GetIDFromString(char *str)
{
int hash = 0;
for (; *str; str++)
{
int v1 = hash >> 19;
int v0 = hash << 5;
hash = ((v0 | v1) + *str) & 0xFFFFFF;
}
if (hash) return hash;
return 1;
}
Nice, I was trying to figure this out for MGS4 for quite a while.Sergeanur wrote: I don't know the name of the algorythm (and it probably doesn't have one) but here's the code I have reversed from MGS 3 a long time ago. Same code was used for MGS 2 and MGS 4 as well.Code: Select all
int CHashMGS::GetIDFromString(char *str) { int hash = 0; for (; *str; str++) { int v1 = hash >> 19; int v0 = hash << 5; hash = ((v0 | v1) + *str) & 0xFFFFFF; } if (hash) return hash; return 1; }