• XSS.stack #1 – первый литературный журнал от юзеров форума

Восстановление структур Golang

empty

CD-диск
Пользователь
Регистрация
06.02.2022
Сообщения
12
Реакции
0
Имеется описание такой структуры:
Код:
 RTYPE_some_struct RTYPE <60h, 50h, 0DA1D5294h, \
                        TFLAG_UNCOMMON or TFLAG_EXTRASTAR or TFLAG_NAMED, 8, 8, \
                          KIND_STRUCT, 0, offset unk_D982C0, \
                        offset byte_9D09DD - offset byte_9AB000, \
                        offset RTYPE__ptr_master_server_connect_Client - offset byte_9AB000>

И насколько я понял, описание этой структуры задается другой структурой:
Код:
type _type struct {
    size       uintptr
    ptrdata    uintptr // size of memory prefix holding all pointers
    hash       uint32
    tflag      tflag
    align      uint8
    fieldalign uint8
    kind       uint8
    alg        *typeAlg
    // gcdata stores the GC type data for the garbage collector.
    // If the KindGCProg bit is set in kind, gcdata is a GC program.
    // Otherwise it is a ptrmask bitmap. See mbitmap.go for details.
    gcdata    *byte
    str       nameOff
    ptrToThis typeOff
}
Где str nameOff - это имя структуры, соответственно
Код:
 offset byte_9D09DD - offset byte_9AB000
- смещение до имени относительно types секции модуля, указатель на которую можно получить из moduledata структуры модуля. Я нашел firstmoduledata и вроде как это то, что нужно. Т. е в теории я должен прибавить к адресу поля types из firstmoduledata
Код:
 offset byte_9D09DD - offset byte_9AB000
и тем самым выйти на имя структуры? Но у меня это не получилось и имени структуры я не обнаружил, может я неправильно понял механизм восстановления структур?
 
Имеется описание такой структуры:
Код:
 RTYPE_some_struct RTYPE <60h, 50h, 0DA1D5294h, \
                        TFLAG_UNCOMMON or TFLAG_EXTRASTAR or TFLAG_NAMED, 8, 8, \
                          KIND_STRUCT, 0, offset unk_D982C0, \
                        offset byte_9D09DD - offset byte_9AB000, \
                        offset RTYPE__ptr_master_server_connect_Client - offset byte_9AB000>

И насколько я понял, описание этой структуры задается другой структурой:
Код:
type _type struct {
    size       uintptr
    ptrdata    uintptr // size of memory prefix holding all pointers
    hash       uint32
    tflag      tflag
    align      uint8
    fieldalign uint8
    kind       uint8
    alg        *typeAlg
    // gcdata stores the GC type data for the garbage collector.
    // If the KindGCProg bit is set in kind, gcdata is a GC program.
    // Otherwise it is a ptrmask bitmap. See mbitmap.go for details.
    gcdata    *byte
    str       nameOff
    ptrToThis typeOff
}
Где str nameOff - это имя структуры, соответственно
Код:
 offset byte_9D09DD - offset byte_9AB000
- смещение до имени относительно types секции модуля, указатель на которую можно получить из moduledata структуры модуля. Я нашел firstmoduledata и вроде как это то, что нужно. Т. е в теории я должен прибавить к адресу поля types из firstmoduledata
Код:
 offset byte_9D09DD - offset byte_9AB000
и тем самым выйти на имя структуры? Но у меня это не получилось и имени структуры я не обнаружил, может я неправильно понял механизм восстановления структур?
только в отладчике твой голанг и реверсить в статике ничего не найдешь
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх