1
1
mirror of https://github.com/wader/fq.git synced 2024-08-17 07:50:29 +03:00
This commit is contained in:
Mattias Wadman 2023-10-31 17:47:11 +01:00
parent d4169b9a5b
commit ff6238bfc7

View File

@ -9,7 +9,6 @@ import (
"time" "time"
"github.com/wader/fq/format" "github.com/wader/fq/format"
"github.com/wader/fq/pkg/bitio"
"github.com/wader/fq/pkg/decode" "github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp" "github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar" "github.com/wader/fq/pkg/scalar"
@ -465,7 +464,7 @@ func machoDecode(d *decode.D) any {
} }
offset := d.FieldU32("offset", scalar.UintHex) offset := d.FieldU32("offset", scalar.UintHex)
d.FieldU32("align") d.FieldU32("align")
d.FieldU32("reloff") d.FieldU32("reloff", scalar.UintHex)
d.FieldU32("nreloc") d.FieldU32("nreloc")
// get section type // get section type
d.FieldStruct("flags", parseSectionFlags) d.FieldStruct("flags", parseSectionFlags)
@ -579,13 +578,9 @@ func machoDecode(d *decode.D) any {
d.FieldUTF8NullFixedLen("name", int(cmdSize)-int(offset)) d.FieldUTF8NullFixedLen("name", int(cmdSize)-int(offset))
case LC_PREBOUND_DYLIB: case LC_PREBOUND_DYLIB:
// https://github.com/aidansteele/osx-abi-macho-file-format-reference#prebound_dylib_command // https://github.com/aidansteele/osx-abi-macho-file-format-reference#prebound_dylib_command
d.U32() // name_offset d.FieldU32("name_offset")
nmodules := d.FieldU32("nmodules") nmodules := d.FieldU32("nmodules")
d.U32() // linked_modules_offset d.FieldRawLen("linked_modules", int64((nmodules/8)+(nmodules%8))*8)
d.FieldUTF8Null("name")
d.FieldBitBufFn("linked_modules", func(d *decode.D) bitio.ReaderAtSeeker {
return d.RawLen(int64((nmodules / 8) + (nmodules % 8)))
})
case LC_THREAD, case LC_THREAD,
LC_UNIXTHREAD: LC_UNIXTHREAD:
d.FieldU32("flavor") d.FieldU32("flavor")
@ -709,8 +704,11 @@ func machoDecode(d *decode.D) any {
LC_DYLIB_CODE_SIGN_DRS, LC_DYLIB_CODE_SIGN_DRS,
LC_LINKER_OPTIMIZATION_HINT: LC_LINKER_OPTIMIZATION_HINT:
d.FieldStruct("linkedit_data", func(d *decode.D) { d.FieldStruct("linkedit_data", func(d *decode.D) {
d.FieldU32("off") off := d.FieldU32("off", scalar.UintHex)
d.FieldU32("size") size := d.FieldU32("size")
d.RangeFn(int64(off)*8, int64(size)*8, func(d *decode.D) {
d.FieldRawLen("data", d.BitsLeft())
})
}) })
case LC_VERSION_MIN_IPHONEOS, case LC_VERSION_MIN_IPHONEOS,
LC_VERSION_MIN_MACOSX, LC_VERSION_MIN_MACOSX,
@ -769,6 +767,9 @@ func machoDecode(d *decode.D) any {
d.FieldUTF8NullFixedLen("name", int(cmdSize)-int(offset)) d.FieldUTF8NullFixedLen("name", int(cmdSize)-int(offset))
}) })
default: default:
log.Printf("cmdSize: %#+v\n", cmdSize)
d.FieldRawLen("data", (int64(cmdSize-8))*8)
// ignore // ignore
} }
}) })