commit | db23a25ad41e56ebfbeab3a1e1deb31477663cde | [log] [tgz] |
---|---|---|
author | Alexander Potapenko <glider@google.com> | Mon Nov 27 17:46:34 2023 +0100 |
committer | Alexander Potapenko <glider@google.com> | Tue Jan 16 18:23:03 2024 +0100 |
tree | e491e17ea77a46e1016eb44e9ee1e2a3e45485e5 | |
parent | 75626e6dbd01be349da09766c768ec121927b3cd [diff] |
pkg/cover/backend: adjust module base address by .text offset Modules' .text sections are not necessarily loaded at the address shown in /proc/modules. If there are other non-init code sections preceding them in the ELF binary, .text is loaded at non-zero address. For example, for a module with the following sections: Idx Name Size VMA LMA File off Algn ... 5 .plt 00000001 0000000000000000 0000000000000000 00000500 2**4 CONTENTS, ALLOC, LOAD, READONLY, CODE 6 .init.ddplt 00000001 0000000000000000 0000000000000000 00000501 2**0 CONTENTS, ALLOC, LOAD, READONLY, CODE 7 .text.ftrace_trampoline 00000001 0000000000000000 0000000000000000 00000502 2**0 CONTENTS, ALLOC, LOAD, READONLY, CODE 8 .hyp.text 00002000 0000000000000000 0000000000000000 00001000 2**12 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE ... 13 .text 00001aac 0000000000000000 0000000000000000 00005048 2**2 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE the base address displayed in /proc/modules points to the beginning of .plt, and other sections have the following offsets: .init.plt - ignored .text.ftrace_trampoline - 0x1 .hyp.text - 0x1000 .text - 0x3000 This patch calculates the offset of the .text section and uses it to adjust the address obtained from /proc/modules.
syzkaller
([siːzˈkɔːlə]
) is an unsupervised coverage-guided kernel fuzzer.
Supported OSes: Akaros
, FreeBSD
, Fuchsia
, gVisor
, Linux
, NetBSD
, OpenBSD
, Windows
.
Mailing list: syzkaller@googlegroups.com (join on web or by email).
Found bugs: Akaros, Darwin/XNU, FreeBSD, Linux, NetBSD, OpenBSD, Windows.
Initially, syzkaller was developed with Linux kernel fuzzing in mind, but now it's being extended to support other OS kernels as well. Most of the documentation at this moment is related to the Linux kernel. For other OS kernels check: Akaros, Darwin/XNU, FreeBSD, Fuchsia, NetBSD, OpenBSD, Starnix, Windows, gVisor.
This is not an official Google product.