A hub for everything related to NBA 2K17 modding. Releases, previews, requests, and other modding discussion belongs here.
Wed Nov 30, 2016 8:26 am
I did actually hex edit an offline roster

Actually I did put "UNIFORM" block from one offline roster into another....then you just have to update the header at the start of the file (EOF position will change becouse roster size will change becouse uniform BLOCK size is different)...but game won't crash!
This mean:
a) They checksum every block not the whole file
b) They don't use strange encryption algorithm
The potential is actually huge.....this
could (i just want to test more in the coming days...)mean we can edit roster that 2K ship with every update and use them as base for our rosters...
I will do some research now...as always stay tuned....
Wed Nov 30, 2016 8:54 am
OMG !!!amazing job
Wed Nov 30, 2016 8:58 am

And every block just differs for some bytes at the beginning of the block itself...which means decoding how they checksum every block actually means we can hex edit any OFFLINE roster freely...
Wed Nov 30, 2016 9:17 am
Crossing my fingers
Wed Nov 30, 2016 12:09 pm
Maumau, that's indeed a huge find! Having a specific checksum for each block is something I wasn't expecting at all. So now I think it's close. I will try to help now that I got some spare time, but anyway, that was a huge step towards being able to edit RDAT files
Wed Nov 30, 2016 12:31 pm
I'm just going to pretend that I am not exciting. That way, I don't get my hopes up.
Wed Nov 30, 2016 5:42 pm
CarolusXCI wrote:Maumau, that's indeed a huge find! Having a specific checksum for each block is something I wasn't expecting at all. So now I think it's close. I will try to help now that I got some spare time, but anyway, that was a huge step towards being able to edit RDAT files

Two Stuff:
1) Always remember to edit the 2 -> 4bytes at the beginning of the ROSTER.RDAT...they must point to offset at the end of the file. If you insert a "UNIFORM" or "PLAYER" block that is bigger or smaller than original one you must update those bytes or game will CTD
2) I suppose that bytes after "BNDL" string should be something like block lenght or similar....I have to investigate and play with those bytes...
Wed Nov 30, 2016 8:25 pm
maumau78 wrote:CarolusXCI wrote:Maumau, that's indeed a huge find! Having a specific checksum for each block is something I wasn't expecting at all. So now I think it's close. I will try to help now that I got some spare time, but anyway, that was a huge step towards being able to edit RDAT files

Two Stuff:
1) Always remember to edit the 2 -> 4bytes at the beginning of the ROSTER.RDAT...they must point to offset at the end of the file. If you insert a "UNIFORM" or "PLAYER" block that is bigger or smaller than original one you must update those bytes or game will CTD
2) I suppose that bytes after "BNDL" string should be something like block lenght or similar....I have to investigate and play with those bytes...
Mauro, what you are doing for this community is impressive my man!
Wed Nov 30, 2016 8:29 pm
Holy shit.
Wed Nov 30, 2016 10:47 pm
Wait so can you get a custom roster loaded in now or just stop the game from crashing when it's modified?
Wed Nov 30, 2016 10:58 pm
PeacemanNOT wrote:Wait so can you get a custom roster loaded in now or just stop the game from crashing when it's modified?
"....I did actually hex edit an offline roster 
Actually I did put "UNIFORM" block from one offline roster into another....then you just have to update the header at the start of the file (EOF position will change becouse roster size will change becouse uniform BLOCK size is different)...but game won't crash!..."Translated: we now know how ROSTER.RDAT is structured and we know they hash/checksum per block...which can lead us/me into the right direction for having offline roster edited...
Thu Dec 01, 2016 1:13 am
So basically we can't edit specific stuff in a sector until we find the checksum type of that sector right?
Thu Dec 01, 2016 1:18 am
seanbarkley wrote:So basically we can't edit specific stuff in a sector until we find the checksum type of that sector right?
I'll be home in 3 hours....I'll do some test...
But I think yes the hash/checksum must be here at the beginning of the block....
Thu Dec 01, 2016 2:01 am
CRC32 is my bet
Thu Dec 01, 2016 2:30 am
seanbarkley wrote:CRC32 is my bet

IDK...looking at those 4-byte differences....they are really similar in terms of values...which is uncommon for CRC...I'll dig on this
2373341796 (first file)
3715606738 (second file)
3553460106 (first file)
4096904079 (second file)
Thu Dec 01, 2016 4:34 am

I found two roster with minimal uniform change...and the header only diff for this....this IMHO is the key
Thu Dec 01, 2016 5:05 am
It could be CRC32 as it used to be in previous years... The thing is knowing exactly where the checksumed part ends...
Thu Dec 01, 2016 5:13 am
seanbarkley wrote:It could be CRC32 as it used to be in previous years... The thing is knowing exactly where the checksumed part ends...
It start from the "01" of the previous picture and it goes till here:

until here....I already checked...If i change just one byte it crash becouse CRC/Checksum is not re-computed
Thu Dec 01, 2016 7:35 am
Hope I could help man, but I'm not at home these days. Have you tried Checksuming from the end of those 4 bytes till what you consider the end? You have us intrigued!
Thu Dec 01, 2016 11:15 am
Maumau, after 42 4E 44 4C (that BNDL part), which bytes can be changed without crashing the game?
Thu Dec 01, 2016 6:40 pm
CarolusXCI wrote:Maumau, after 42 4E 44 4C (that BNDL part), which bytes can be changed without crashing the game?
even some bytes before the "01" and the game will work....while If i change "01" to "02" it CTD...so I guess CRC starts here....
Fri Dec 02, 2016 6:40 am
CarolusXCI wrote:Maumau, after 42 4E 44 4C (that BNDL part), which bytes can be changed without crashing the game?

I've edited many bytes in the blue area changing them 00->01 no CTD at all....while starting from "01" game crash.....
while for end of block:

if I edit last four bytes from 00->01 no CTD.....while changing 98->any value result into CTD
Fri Dec 02, 2016 6:53 am

the one in red are all offsets in the block....dunno what they point to...
Fri Dec 02, 2016 2:46 pm

The first four bytes seem to be the length of the section selected here, which ends at the last non-zero byte before the next BNDL. After the last non-zero byte at the end, there are four 00 bytes, so if you count that, you shift the beginning of that selected block four bytes to the right.
Last edited by
CarolusXCI on Fri Dec 02, 2016 3:03 pm, edited 1 time in total.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.