MKX теперь 64 битный, так что многие переменные занимают 64 бита вместо привычных 32.
Из-за этого ошибся в смещениях в таблице импорта и долго не мог понять, что происходит.
Структура пакета:
magik32 - 0х9E2A83C1
pkVer16 - 0x02A5
LcVer16 - 0x9d
DATAoffset32 - начало данных
magik32 -"MK10"
unk32 - ?
unk32 - ?
hash128 - ?
Ssize32 - длинна строки
string - "None "
unkB8
unkB8
unkB8
compressFlag8 - флаг компрессии 0-decompressed 2-compressed
Ncount32 - количество элементов в таблице
NToffset64 - смещение таблицы имен
Ecount32 - количество элементов в таблице
EToffset64 - смещение таблицы экспорта
IMcount32 - количество элементов в таблице
IMToffset64 - смещение таблицы импорта
unk332
ENDoffset64 - конец таблиц?
EXToffset32 - смещение "внешних данных"
DATAoffset32 - почти соответствует DATAoffset.
unk64 - ? обычно ноль
unkcount32 - ?
unk64 - ?
hash128
unk32
Engine32 - ?
compressFlag32 - флаг компрессии ?
unk32
Inputs_count32 - количество внешних пакетов?
if Inputs_count32 > 0
for i < Imputs_count
get Nsize long
getdstring Iname Nsize
next
endif
crapsize32 - размер того, что идет дальше(crap)
unk32 - ? crapsize уменьшенный на порядок (например для 0x9754 0х0975)
crap - ? большой хэш. Похоже на зашифрованные данные
Дальше идет, как я думал, таблица имен классов. Но это не она.
[Ncount]
[size32][string][null32][size32][string][null32]...
Продолжается сразу таблицей имен (смещение в хэдере)
дальше остальные таблицы, пустота, данные...