SYMBOL INDEX (1168 symbols across 136 files) FILE: ch02/fmt_str.c function main (line 3) | int main(void){ FILE: ch02/hello.c function main (line 3) | int main(){ // required main function FILE: ch02/ifelse.c function main (line 3) | int main(void){ FILE: ch02/meet.c function greeting (line 4) | void greeting(char *temp1,char *temp2){ // greeting function to say hello function main (line 9) | int main(int argc, char * argv[]){ // note the format for arguments FILE: ch02/memory.c function funct1 (line 8) | void funct1(int c){ // bracket starts function1 block with argument (c) function main (line 14) | void main (){ // the required main function FILE: ch02/while_ex.c function main (line 3) | int main(void){ FILE: ch03/heapme_demo.c function main (line 9) | int main() { FILE: ch03/hello.c function main (line 4) | int main() { FILE: ch03/leak-bof.c function vuln (line 5) | void vuln() { function main (line 12) | int main(int argc, char **argv) { FILE: ch04/students-patched.c type Student (line 6) | typedef struct { function LoadStudents (line 16) | void LoadStudents() { function ListStudents (line 35) | void ListStudents() { function ViewStudentGrades (line 42) | int ViewStudentGrades() { function ChangeStudentGrades (line 55) | void ChangeStudentGrades() { function main (line 75) | void main(void) { FILE: ch04/students.c type Student (line 6) | typedef struct { function LoadStudents (line 16) | void LoadStudents() { function ListStudents (line 35) | void ListStudents() { function ViewStudentGrades (line 42) | int ViewStudentGrades() { function ChangeStudentGrades (line 57) | void ChangeStudentGrades() { function main (line 77) | void main(void) { FILE: ch05/myAtoi.c function myAtoi (line 4) | int myAtoi(char *str){ function main (line 11) | int main(){ FILE: ch05/myProg.c function func1 (line 5) | int func1(char* input) function main (line 15) | int main(int argc, char* argv[]) FILE: ch10/getenv.c function main (line 6) | int main() { FILE: ch10/meet.c function greeting (line 4) | void greeting(char *temp1,char *temp2){ // greeting function to say hello function main (line 9) | int main(int argc, char * argv[]){ // note the format for arguments FILE: ch10/overflow.c function main (line 3) | int main(){ FILE: ch10/shellcode.c function main (line 10) | int main() { //main function FILE: ch10/smallbuff.c function main (line 3) | int main(int argc, char * argv[]){ FILE: ch11/exploit2.py function exploit (line 8) | def exploit(payload, interactive=False): function leak_bytes (line 25) | def leak_bytes(payload, name): FILE: ch11/exploit3-v2.py function exploit (line 9) | def exploit(payload, interactive=False, leak=False): function leak_bytes (line 29) | def leak_bytes(payload, name): FILE: ch11/exploit3.py function exploit (line 9) | def exploit(payload, interactive=False, leak=False): function leak_bytes (line 29) | def leak_bytes(payload, name): FILE: ch11/exploit4.py function exploit (line 9) | def exploit(payload, interactive=False, leak=False): function leak_bytes (line 29) | def leak_bytes(payload, name): FILE: ch11/vuln.c function auth (line 18) | int auth(int connfd) { function main (line 29) | int main(void) { FILE: ch12/shared/exploit1/exploit.c function save_state (line 10) | void save_state(){ function shell (line 22) | void shell(void){ function escalate_privileges (line 34) | void escalate_privileges(void){ function main (line 52) | int main() { FILE: ch12/shared/exploit2/exploit.c function save_state (line 9) | void save_state(){ function shell (line 21) | void shell(void){ function escalate_privileges (line 33) | void escalate_privileges(void){ function main (line 51) | int main() { FILE: ch12/shared/exploit3/exploit.c function save_state (line 10) | void save_state(){ function shell (line 22) | void shell(void){ function main (line 34) | int main() { FILE: ch12/shared/exploit4/exploit.c function save_state (line 10) | void save_state(){ function shell (line 22) | void shell(void){ function main (line 34) | int main() { FILE: ch12/shared/exploit5/exploit.c function save_state (line 10) | void save_state(){ function shell (line 22) | void shell(void){ function main (line 34) | int main() { FILE: ch12/shared/leak.c function main (line 7) | int main() { FILE: ch14/dbutil_exploit.c type DbMemcpy (line 8) | struct DbMemcpy { function BOOL (line 16) | BOOL read(HANDLE hdev, ULONG_PTR ptr, DWORD size, LPVOID out) { function BOOL (line 38) | BOOL write(HANDLE hdev, ULONG_PTR ptr, BYTE* content, DWORD size) { function BOOL (line 58) | BOOL read_ptr(HANDLE hdev, ULONG_PTR src, ULONG_PTR* out) { function BOOL (line 62) | BOOL write_ptr(HANDLE hdev, ULONG_PTR dst, ULONG_PTR val) { function LPVOID (line 66) | LPVOID get_kernel_base() { function main (line 88) | int main(int argc, char** argv) { FILE: ch14/dbutil_exploit.py function errcheck_bool (line 21) | def errcheck_bool(res, func, args): function errcheck_drivername (line 27) | def errcheck_drivername(res, func, args): function errcheck_createfile (line 37) | def errcheck_createfile(res, func, args): function GetProcAddressAbsolute (line 100) | def GetProcAddressAbsolute(hmodule, realbase, symbol): class DbMemcpy (line 105) | class DbMemcpy(LittleEndianStructure): function _read (line 111) | def _read(hdev, ptr, size): function _write (line 123) | def _write(hdev, ptr, contents): function get_driver_bases (line 129) | def get_driver_bases(): FILE: ch14/dbutil_exploit/src/bin/exploit.rs constant PID_OFFSET (line 4) | const PID_OFFSET: usize = 0x440; constant APLINKS_OFFSET (line 5) | const APLINKS_OFFSET: usize = 0x448; constant TOKEN_OFFSET (line 6) | const TOKEN_OFFSET: usize = 0x4B8; function main (line 8) | fn main() { FILE: ch14/dbutil_exploit/src/bin/ioctlcall.rs function main (line 3) | fn main() { FILE: ch14/dbutil_exploit/src/lib.rs type DbMemmove (line 7) | struct DbMemmove { function open_dev (line 15) | pub unsafe fn open_dev() -> HANDLE { function ioctl (line 27) | pub unsafe fn ioctl(dev: HANDLE, num: u32, iobuf: PVOID, buflen: usize) ... function read_ptr (line 40) | pub fn read_ptr(hdev: HANDLE, ptr: usize) -> usize { function write_ptr (line 54) | pub fn write_ptr(hdev: HANDLE, ptr: usize, content: usize) { function get_kernel_base (line 67) | pub unsafe fn get_kernel_base() -> usize { FILE: ch14/ioctlcall.py function errcheck_bool (line 9) | def errcheck_bool(res, func, args): function errcheck_createfile (line 15) | def errcheck_createfile(res, func, args): function opendevice (line 48) | def opendevice(dev): function ioctl (line 56) | def ioctl(hdev, ioctl, input, outbuf_len): function _buf_or_stdin (line 69) | def _buf_or_stdin(arg): FILE: ch19/lab-19-2/facet-search.py function shodan_search (line 4) | def shodan_search(): FILE: ch19/lab-19-2/mqtt-search.py function shodan_search (line 3) | def shodan_search(): FILE: ch19/lab-19-3/mqtt-scan.py function on_connect (line 3) | def on_connect(client, userdata, flags, rc): function on_message (line 7) | def on_message(client, userdata, msg): FILE: ch22/Analyze/decode-inspectrum.py function decode (line 6) | def decode(pfx,thresh,symbols): FILE: ch24/labs/lab1/common.c function outb (line 9) | static void outb(uint16_t port, uint8_t val) { function inb (line 13) | static uint8_t inb(uint16_t port) { function setup_serial (line 19) | void setup_serial() { function write_serial (line 29) | void write_serial(const void *data, unsigned long len) { function read_serial (line 39) | void read_serial(void *data, unsigned long len) { FILE: ch24/labs/lab1/main.c function kmain (line 7) | void kmain() { FILE: ch24/labs/lab2/common.c function outb (line 12) | static void outb(uint16_t port, uint8_t val) { function inb (line 16) | static uint8_t inb(uint16_t port) { function setup_serial (line 22) | void setup_serial() { function write_serial (line 32) | void write_serial(const void *data, unsigned long len) { function read_serial (line 42) | void read_serial(void *data, unsigned long len) { function crc32 (line 53) | uint32_t crc32(const void *data, unsigned long len) { function reset (line 63) | void reset() { function __assert (line 77) | void __assert(const char *msg, const char *file, int line) { FILE: ch24/labs/lab2/common.h type __builtin_va_list (line 12) | typedef __builtin_va_list va_list; FILE: ch24/labs/lab2/main.c function kmain (line 8) | void kmain() { FILE: ch24/labs/lab2/protocol.c type msg_buffer (line 8) | struct msg_buffer { type msg_buffer (line 13) | struct msg_buffer type msg_buffer (line 14) | struct msg_buffer type msg_buffer (line 15) | struct msg_buffer function put_tp (line 32) | void put_tp(bool is_oob, TP prefix) { function TP (line 37) | TP get_tp() { function put_primitive (line 43) | void put_primitive(bool is_oob, TP prefix, const Primitive_t *value) { function get_primitive (line 78) | void get_primitive(TP prefix, Primitive_t *value) { function put_array (line 110) | void put_array(bool is_oob, const Array_t *array, const void *data) { function get_array (line 120) | void get_array(Array_t *array, void **dst_ptr) { function put_cstring (line 128) | void put_cstring(bool is_oob, const char *ptr) { function _put_va (line 134) | static void _put_va(bool is_oob, TP prefix, va_list args) { function _get_va (line 158) | static void _get_va(TP prefix, va_list args) { function put_va (line 179) | void put_va(bool is_oob, ...) { function get_va (line 187) | void get_va(TP prefix, ...) { function send_msg (line 194) | void send_msg(MT msg_type) { function msg_hdr_valid (line 208) | static bool msg_hdr_valid(const MsgHdr *hdr) { function recv_msg (line 213) | void recv_msg() { function _reset_oob_buffer (line 222) | void _reset_oob_buffer() { FILE: ch24/labs/lab2/protocol.h type MT (line 10) | typedef enum { type MsgHdr (line 20) | typedef struct { type TP (line 27) | typedef enum { type Primitive_t (line 45) | typedef union { type Array_t (line 56) | typedef struct { type OOBType (line 61) | typedef enum {OOBPrint = UINT32_C(0), OOBAssert} OOBType; type OpType (line 62) | typedef enum {OpWrite = UINT32_C(0), OpExec} OpType; FILE: ch24/labs/lab3/common.c function outb (line 12) | static void outb(uint16_t port, uint8_t val) { function inb (line 16) | static uint8_t inb(uint16_t port) { function setup_serial (line 22) | void setup_serial() { function write_serial (line 32) | void write_serial(const void *data, unsigned long len) { function read_serial (line 42) | void read_serial(void *data, unsigned long len) { function crc32 (line 53) | uint32_t crc32(const void *data, unsigned long len) { function reset (line 63) | void reset() { function __assert (line 77) | void __assert(const char *msg, const char *file, int line) { FILE: ch24/labs/lab3/common.h type __builtin_va_list (line 12) | typedef __builtin_va_list va_list; FILE: ch24/labs/lab3/guest.py class Guest (line 7) | class Guest: method __init__ (line 8) | def __init__(self): method __enter__ (line 11) | def __enter__(self): method __exit__ (line 18) | def __exit__(self, type, value, traceback): method messages (line 21) | def messages(self): FILE: ch24/labs/lab3/main.c function put_symbols (line 12) | static void put_symbols() { function put_mmap (line 20) | static void put_mmap(const struct multiboot_tag_mmap *mmap) { function put_mbi (line 35) | static void put_mbi(const void *mbi) { function op_write (line 56) | static void op_write() { function op_exec (line 67) | static void op_exec() { function kmain (line 73) | void kmain(const void *mbi) { FILE: ch24/labs/lab3/multiboot2.h type multiboot_uint8_t (line 91) | typedef unsigned char multiboot_uint8_t; type multiboot_uint16_t (line 92) | typedef unsigned short multiboot_uint16_t; type multiboot_uint32_t (line 93) | typedef unsigned int multiboot_uint32_t; type multiboot_uint64_t (line 94) | typedef unsigned long long multiboot_uint64_t; type multiboot_header (line 96) | struct multiboot_header type multiboot_header_tag (line 111) | struct multiboot_header_tag type multiboot_header_tag_information_request (line 118) | struct multiboot_header_tag_information_request type multiboot_header_tag_address (line 126) | struct multiboot_header_tag_address type multiboot_header_tag_entry_address (line 137) | struct multiboot_header_tag_entry_address type multiboot_header_tag_console_flags (line 145) | struct multiboot_header_tag_console_flags type multiboot_header_tag_framebuffer (line 153) | struct multiboot_header_tag_framebuffer type multiboot_header_tag_module_align (line 163) | struct multiboot_header_tag_module_align type multiboot_header_tag_relocatable (line 170) | struct multiboot_header_tag_relocatable type multiboot_color (line 181) | struct multiboot_color type multiboot_mmap_entry (line 188) | struct multiboot_mmap_entry type multiboot_memory_map_t (line 200) | typedef struct multiboot_mmap_entry multiboot_memory_map_t; type multiboot_tag (line 202) | struct multiboot_tag type multiboot_tag_string (line 208) | struct multiboot_tag_string type multiboot_tag_module (line 215) | struct multiboot_tag_module type multiboot_tag_basic_meminfo (line 224) | struct multiboot_tag_basic_meminfo type multiboot_tag_bootdev (line 232) | struct multiboot_tag_bootdev type multiboot_tag_mmap (line 241) | struct multiboot_tag_mmap type multiboot_vbe_info_block (line 250) | struct multiboot_vbe_info_block type multiboot_vbe_mode_info_block (line 255) | struct multiboot_vbe_mode_info_block type multiboot_tag_vbe (line 260) | struct multiboot_tag_vbe type multiboot_tag_framebuffer_common (line 274) | struct multiboot_tag_framebuffer_common type multiboot_tag_framebuffer (line 291) | struct multiboot_tag_framebuffer type multiboot_tag_elf_sections (line 314) | struct multiboot_tag_elf_sections type multiboot_tag_apm (line 324) | struct multiboot_tag_apm type multiboot_tag_efi32 (line 339) | struct multiboot_tag_efi32 type multiboot_tag_efi64 (line 346) | struct multiboot_tag_efi64 type multiboot_tag_smbios (line 353) | struct multiboot_tag_smbios type multiboot_tag_old_acpi (line 363) | struct multiboot_tag_old_acpi type multiboot_tag_new_acpi (line 370) | struct multiboot_tag_new_acpi type multiboot_tag_network (line 377) | struct multiboot_tag_network type multiboot_tag_efi_mmap (line 384) | struct multiboot_tag_efi_mmap type multiboot_tag_efi32_ih (line 393) | struct multiboot_tag_efi32_ih type multiboot_tag_efi64_ih (line 400) | struct multiboot_tag_efi64_ih type multiboot_tag_load_base_addr (line 407) | struct multiboot_tag_load_base_addr FILE: ch24/labs/lab3/protocol.c type msg_buffer (line 8) | struct msg_buffer { type msg_buffer (line 13) | struct msg_buffer type msg_buffer (line 14) | struct msg_buffer type msg_buffer (line 15) | struct msg_buffer function put_tp (line 32) | void put_tp(bool is_oob, TP prefix) { function TP (line 37) | TP get_tp() { function put_primitive (line 43) | void put_primitive(bool is_oob, TP prefix, const Primitive_t *value) { function get_primitive (line 78) | void get_primitive(TP prefix, Primitive_t *value) { function put_array (line 110) | void put_array(bool is_oob, const Array_t *array, const void *data) { function get_array (line 120) | void get_array(Array_t *array, void **dst_ptr) { function put_cstring (line 128) | void put_cstring(bool is_oob, const char *ptr) { function _put_va (line 134) | static void _put_va(bool is_oob, TP prefix, va_list args) { function _get_va (line 158) | static void _get_va(TP prefix, va_list args) { function put_va (line 179) | void put_va(bool is_oob, ...) { function get_va (line 187) | void get_va(TP prefix, ...) { function send_msg (line 194) | void send_msg(MT msg_type) { function msg_hdr_valid (line 208) | static bool msg_hdr_valid(const MsgHdr *hdr) { function recv_msg (line 213) | void recv_msg() { function _reset_oob_buffer (line 222) | void _reset_oob_buffer() { FILE: ch24/labs/lab3/protocol.h type MT (line 10) | typedef enum { type MsgHdr (line 20) | typedef struct { type TP (line 27) | typedef enum { type Primitive_t (line 45) | typedef union { type Array_t (line 56) | typedef struct { type OOBType (line 61) | typedef enum {OOBPrint = UINT32_C(0), OOBAssert} OOBType; type OpType (line 62) | typedef enum {OpWrite = UINT32_C(0), OpExec} OpType; FILE: ch24/labs/lab3/protocol.py function make_adapter (line 38) | def make_adapter(cInt, fInt): class ArrayAdapter (line 46) | class ArrayAdapter(c.Adapter): method _decode (line 47) | def _decode(self, obj, context, path): method _encode (line 51) | def _encode(self, obj, context, path): class ListAdapter (line 55) | class ListAdapter(c.Adapter): method _decode (line 56) | def _decode(self, obj, context, path): method _encode (line 65) | def _encode(self, obj, context, path): class BodyAdapter (line 92) | class BodyAdapter(c.Adapter): method _decode (line 93) | def _decode(self, obj, context, path): method _encode (line 96) | def _encode(self, obj, context, path): function recv (line 116) | def recv(reader): function send (line 122) | def send(writer, body): FILE: ch24/labs/lab4/code.py class Code (line 8) | class Code: method __init__ (line 9) | def __init__(self, code, sym): method build (line 14) | def build(self, base_address): FILE: ch24/labs/lab4/common.c function outb (line 12) | static void outb(uint16_t port, uint8_t val) { function inb (line 16) | static uint8_t inb(uint16_t port) { function setup_serial (line 22) | void setup_serial() { function write_serial (line 32) | void write_serial(const void *data, unsigned long len) { function read_serial (line 42) | void read_serial(void *data, unsigned long len) { function crc32 (line 53) | uint32_t crc32(const void *data, unsigned long len) { function reset (line 63) | void reset() { function __assert (line 77) | void __assert(const char *msg, const char *file, int line) { FILE: ch24/labs/lab4/common.h type __builtin_va_list (line 12) | typedef __builtin_va_list va_list; FILE: ch24/labs/lab4/guest.py class OpType (line 9) | class OpType(Enum): class Guest (line 13) | class Guest: method __init__ (line 14) | def __init__(self): method __enter__ (line 20) | def __enter__(self): method __exit__ (line 28) | def __exit__(self, type, value, traceback): method _init_boot_info (line 31) | def _init_boot_info(self, symbols, mmap): method messages (line 42) | def messages(self): method op_write (line 52) | def op_write(self, code, address=None): method op_exec (line 63) | def op_exec(self, address): method op_commit (line 69) | def op_commit(self): method execute (line 73) | def execute(self, code): FILE: ch24/labs/lab4/main.c function put_symbols (line 12) | static void put_symbols() { function put_mmap (line 20) | static void put_mmap(const struct multiboot_tag_mmap *mmap) { function put_mbi (line 35) | static void put_mbi(const void *mbi) { function op_write (line 56) | static void op_write() { function op_exec (line 67) | static void op_exec() { function kmain (line 73) | void kmain(const void *mbi) { FILE: ch24/labs/lab4/main.py class OOBType (line 9) | class OOBType(Enum): FILE: ch24/labs/lab4/multiboot2.h type multiboot_uint8_t (line 91) | typedef unsigned char multiboot_uint8_t; type multiboot_uint16_t (line 92) | typedef unsigned short multiboot_uint16_t; type multiboot_uint32_t (line 93) | typedef unsigned int multiboot_uint32_t; type multiboot_uint64_t (line 94) | typedef unsigned long long multiboot_uint64_t; type multiboot_header (line 96) | struct multiboot_header type multiboot_header_tag (line 111) | struct multiboot_header_tag type multiboot_header_tag_information_request (line 118) | struct multiboot_header_tag_information_request type multiboot_header_tag_address (line 126) | struct multiboot_header_tag_address type multiboot_header_tag_entry_address (line 137) | struct multiboot_header_tag_entry_address type multiboot_header_tag_console_flags (line 145) | struct multiboot_header_tag_console_flags type multiboot_header_tag_framebuffer (line 153) | struct multiboot_header_tag_framebuffer type multiboot_header_tag_module_align (line 163) | struct multiboot_header_tag_module_align type multiboot_header_tag_relocatable (line 170) | struct multiboot_header_tag_relocatable type multiboot_color (line 181) | struct multiboot_color type multiboot_mmap_entry (line 188) | struct multiboot_mmap_entry type multiboot_memory_map_t (line 200) | typedef struct multiboot_mmap_entry multiboot_memory_map_t; type multiboot_tag (line 202) | struct multiboot_tag type multiboot_tag_string (line 208) | struct multiboot_tag_string type multiboot_tag_module (line 215) | struct multiboot_tag_module type multiboot_tag_basic_meminfo (line 224) | struct multiboot_tag_basic_meminfo type multiboot_tag_bootdev (line 232) | struct multiboot_tag_bootdev type multiboot_tag_mmap (line 241) | struct multiboot_tag_mmap type multiboot_vbe_info_block (line 250) | struct multiboot_vbe_info_block type multiboot_vbe_mode_info_block (line 255) | struct multiboot_vbe_mode_info_block type multiboot_tag_vbe (line 260) | struct multiboot_tag_vbe type multiboot_tag_framebuffer_common (line 274) | struct multiboot_tag_framebuffer_common type multiboot_tag_framebuffer (line 291) | struct multiboot_tag_framebuffer type multiboot_tag_elf_sections (line 314) | struct multiboot_tag_elf_sections type multiboot_tag_apm (line 324) | struct multiboot_tag_apm type multiboot_tag_efi32 (line 339) | struct multiboot_tag_efi32 type multiboot_tag_efi64 (line 346) | struct multiboot_tag_efi64 type multiboot_tag_smbios (line 353) | struct multiboot_tag_smbios type multiboot_tag_old_acpi (line 363) | struct multiboot_tag_old_acpi type multiboot_tag_new_acpi (line 370) | struct multiboot_tag_new_acpi type multiboot_tag_network (line 377) | struct multiboot_tag_network type multiboot_tag_efi_mmap (line 384) | struct multiboot_tag_efi_mmap type multiboot_tag_efi32_ih (line 393) | struct multiboot_tag_efi32_ih type multiboot_tag_efi64_ih (line 400) | struct multiboot_tag_efi64_ih type multiboot_tag_load_base_addr (line 407) | struct multiboot_tag_load_base_addr FILE: ch24/labs/lab4/protocol.c type msg_buffer (line 8) | struct msg_buffer { type msg_buffer (line 13) | struct msg_buffer type msg_buffer (line 14) | struct msg_buffer type msg_buffer (line 15) | struct msg_buffer function put_tp (line 32) | void put_tp(bool is_oob, TP prefix) { function TP (line 37) | TP get_tp() { function put_primitive (line 43) | void put_primitive(bool is_oob, TP prefix, const Primitive_t *value) { function get_primitive (line 78) | void get_primitive(TP prefix, Primitive_t *value) { function put_array (line 110) | void put_array(bool is_oob, const Array_t *array, const void *data) { function get_array (line 120) | void get_array(Array_t *array, void **dst_ptr) { function put_cstring (line 128) | void put_cstring(bool is_oob, const char *ptr) { function _put_va (line 134) | static void _put_va(bool is_oob, TP prefix, va_list args) { function _get_va (line 158) | static void _get_va(TP prefix, va_list args) { function put_va (line 179) | void put_va(bool is_oob, ...) { function get_va (line 187) | void get_va(TP prefix, ...) { function send_msg (line 194) | void send_msg(MT msg_type) { function msg_hdr_valid (line 208) | static bool msg_hdr_valid(const MsgHdr *hdr) { function recv_msg (line 213) | void recv_msg() { function _reset_oob_buffer (line 222) | void _reset_oob_buffer() { FILE: ch24/labs/lab4/protocol.h type MT (line 10) | typedef enum { type MsgHdr (line 20) | typedef struct { type TP (line 27) | typedef enum { type Primitive_t (line 45) | typedef union { type Array_t (line 56) | typedef struct { type OOBType (line 61) | typedef enum {OOBPrint = UINT32_C(0), OOBAssert} OOBType; type OpType (line 62) | typedef enum {OpWrite = UINT32_C(0), OpExec} OpType; FILE: ch24/labs/lab4/protocol.py function make_adapter (line 38) | def make_adapter(cInt, fInt): class ArrayAdapter (line 46) | class ArrayAdapter(c.Adapter): method _decode (line 47) | def _decode(self, obj, context, path): method _encode (line 51) | def _encode(self, obj, context, path): class ListAdapter (line 55) | class ListAdapter(c.Adapter): method _decode (line 56) | def _decode(self, obj, context, path): method _encode (line 65) | def _encode(self, obj, context, path): class BodyAdapter (line 92) | class BodyAdapter(c.Adapter): method _decode (line 93) | def _decode(self, obj, context, path): method _encode (line 96) | def _encode(self, obj, context, path): function recv (line 116) | def recv(reader): function send (line 122) | def send(writer, body): FILE: ch24/labs/lab4/remotemem.py class RemoteMemoryError (line 6) | class RemoteMemoryError(Exception): class RemoteMemory (line 9) | class RemoteMemory: method __init__ (line 10) | def __init__(self): method add_region (line 14) | def add_region(self, base, size): method del_region (line 19) | def del_region(self, base, size): method alloc (line 24) | def alloc(self, size): method free (line 33) | def free(self, address): FILE: ch24/labs/lab5/code.py class Code (line 8) | class Code: method __init__ (line 9) | def __init__(self, code, sym): method build (line 14) | def build(self, base_address): FILE: ch24/labs/lab5/common.c function outb (line 12) | static void outb(uint16_t port, uint8_t val) { function inb (line 16) | static uint8_t inb(uint16_t port) { function setup_serial (line 22) | void setup_serial() { function write_serial (line 32) | void write_serial(const void *data, unsigned long len) { function read_serial (line 42) | void read_serial(void *data, unsigned long len) { function crc32 (line 53) | uint32_t crc32(const void *data, unsigned long len) { function reset (line 63) | void reset() { function __assert (line 77) | void __assert(const char *msg, const char *file, int line) { FILE: ch24/labs/lab5/common.h type __builtin_va_list (line 12) | typedef __builtin_va_list va_list; FILE: ch24/labs/lab5/fuzzer.py class OOBType (line 11) | class OOBType(Enum): class Fuzzer (line 15) | class Fuzzer: method __init__ (line 20) | def __init__(self, seed): method timeout_handler (line 25) | def timeout_handler(signum, frame): method context_save (line 28) | def context_save(self): method context_restore (line 33) | def context_restore(self): method code (line 38) | def code(self, code): method fuzz (line 41) | def fuzz(self, reply): method on_boot (line 44) | def on_boot(self, body): method handle_message (line 47) | def handle_message(self, msg_type, body): method run (line 65) | def run(self): FILE: ch24/labs/lab5/guest.py class OpType (line 9) | class OpType(Enum): class Guest (line 13) | class Guest: method __init__ (line 14) | def __init__(self): method __enter__ (line 20) | def __enter__(self): method __exit__ (line 27) | def __exit__(self, type, value, traceback): method _init_boot_info (line 30) | def _init_boot_info(self, symbols, mmap): method messages (line 41) | def messages(self): method op_write (line 51) | def op_write(self, code, address=None): method op_exec (line 62) | def op_exec(self, address): method op_commit (line 68) | def op_commit(self): method execute (line 72) | def execute(self, code): FILE: ch24/labs/lab5/main.c function put_symbols (line 12) | static void put_symbols() { function put_mmap (line 20) | static void put_mmap(const struct multiboot_tag_mmap *mmap) { function put_mbi (line 35) | static void put_mbi(const void *mbi) { function op_write (line 56) | static void op_write() { function op_exec (line 67) | static void op_exec() { function kmain (line 73) | void kmain(const void *mbi) { FILE: ch24/labs/lab5/multiboot2.h type multiboot_uint8_t (line 91) | typedef unsigned char multiboot_uint8_t; type multiboot_uint16_t (line 92) | typedef unsigned short multiboot_uint16_t; type multiboot_uint32_t (line 93) | typedef unsigned int multiboot_uint32_t; type multiboot_uint64_t (line 94) | typedef unsigned long long multiboot_uint64_t; type multiboot_header (line 96) | struct multiboot_header type multiboot_header_tag (line 111) | struct multiboot_header_tag type multiboot_header_tag_information_request (line 118) | struct multiboot_header_tag_information_request type multiboot_header_tag_address (line 126) | struct multiboot_header_tag_address type multiboot_header_tag_entry_address (line 137) | struct multiboot_header_tag_entry_address type multiboot_header_tag_console_flags (line 145) | struct multiboot_header_tag_console_flags type multiboot_header_tag_framebuffer (line 153) | struct multiboot_header_tag_framebuffer type multiboot_header_tag_module_align (line 163) | struct multiboot_header_tag_module_align type multiboot_header_tag_relocatable (line 170) | struct multiboot_header_tag_relocatable type multiboot_color (line 181) | struct multiboot_color type multiboot_mmap_entry (line 188) | struct multiboot_mmap_entry type multiboot_memory_map_t (line 200) | typedef struct multiboot_mmap_entry multiboot_memory_map_t; type multiboot_tag (line 202) | struct multiboot_tag type multiboot_tag_string (line 208) | struct multiboot_tag_string type multiboot_tag_module (line 215) | struct multiboot_tag_module type multiboot_tag_basic_meminfo (line 224) | struct multiboot_tag_basic_meminfo type multiboot_tag_bootdev (line 232) | struct multiboot_tag_bootdev type multiboot_tag_mmap (line 241) | struct multiboot_tag_mmap type multiboot_vbe_info_block (line 250) | struct multiboot_vbe_info_block type multiboot_vbe_mode_info_block (line 255) | struct multiboot_vbe_mode_info_block type multiboot_tag_vbe (line 260) | struct multiboot_tag_vbe type multiboot_tag_framebuffer_common (line 274) | struct multiboot_tag_framebuffer_common type multiboot_tag_framebuffer (line 291) | struct multiboot_tag_framebuffer type multiboot_tag_elf_sections (line 314) | struct multiboot_tag_elf_sections type multiboot_tag_apm (line 324) | struct multiboot_tag_apm type multiboot_tag_efi32 (line 339) | struct multiboot_tag_efi32 type multiboot_tag_efi64 (line 346) | struct multiboot_tag_efi64 type multiboot_tag_smbios (line 353) | struct multiboot_tag_smbios type multiboot_tag_old_acpi (line 363) | struct multiboot_tag_old_acpi type multiboot_tag_new_acpi (line 370) | struct multiboot_tag_new_acpi type multiboot_tag_network (line 377) | struct multiboot_tag_network type multiboot_tag_efi_mmap (line 384) | struct multiboot_tag_efi_mmap type multiboot_tag_efi32_ih (line 393) | struct multiboot_tag_efi32_ih type multiboot_tag_efi64_ih (line 400) | struct multiboot_tag_efi64_ih type multiboot_tag_load_base_addr (line 407) | struct multiboot_tag_load_base_addr FILE: ch24/labs/lab5/port_fuzzer.py class Fuzzer (line 8) | class Fuzzer(fuzzer.Fuzzer): method __init__ (line 9) | def __init__(self, seed): method fuzz (line 14) | def fuzz(self, reply): FILE: ch24/labs/lab5/protocol.c type msg_buffer (line 8) | struct msg_buffer { type msg_buffer (line 13) | struct msg_buffer type msg_buffer (line 14) | struct msg_buffer type msg_buffer (line 15) | struct msg_buffer function put_tp (line 32) | void put_tp(bool is_oob, TP prefix) { function TP (line 37) | TP get_tp() { function put_primitive (line 43) | void put_primitive(bool is_oob, TP prefix, const Primitive_t *value) { function get_primitive (line 78) | void get_primitive(TP prefix, Primitive_t *value) { function put_array (line 110) | void put_array(bool is_oob, const Array_t *array, const void *data) { function get_array (line 120) | void get_array(Array_t *array, void **dst_ptr) { function put_cstring (line 128) | void put_cstring(bool is_oob, const char *ptr) { function _put_va (line 134) | static void _put_va(bool is_oob, TP prefix, va_list args) { function _get_va (line 158) | static void _get_va(TP prefix, va_list args) { function put_va (line 179) | void put_va(bool is_oob, ...) { function get_va (line 187) | void get_va(TP prefix, ...) { function send_msg (line 194) | void send_msg(MT msg_type) { function msg_hdr_valid (line 208) | static bool msg_hdr_valid(const MsgHdr *hdr) { function recv_msg (line 213) | void recv_msg() { function _reset_oob_buffer (line 222) | void _reset_oob_buffer() { FILE: ch24/labs/lab5/protocol.h type MT (line 10) | typedef enum { type MsgHdr (line 20) | typedef struct { type TP (line 27) | typedef enum { type Primitive_t (line 45) | typedef union { type Array_t (line 56) | typedef struct { type OOBType (line 61) | typedef enum {OOBPrint = UINT32_C(0), OOBAssert} OOBType; type OpType (line 62) | typedef enum {OpWrite = UINT32_C(0), OpExec} OpType; FILE: ch24/labs/lab5/protocol.py function make_adapter (line 38) | def make_adapter(cInt, fInt): class ArrayAdapter (line 46) | class ArrayAdapter(c.Adapter): method _decode (line 47) | def _decode(self, obj, context, path): method _encode (line 51) | def _encode(self, obj, context, path): class ListAdapter (line 55) | class ListAdapter(c.Adapter): method _decode (line 56) | def _decode(self, obj, context, path): method _encode (line 65) | def _encode(self, obj, context, path): class BodyAdapter (line 92) | class BodyAdapter(c.Adapter): method _decode (line 93) | def _decode(self, obj, context, path): method _encode (line 96) | def _encode(self, obj, context, path): function recv (line 116) | def recv(reader): function send (line 122) | def send(writer, body): FILE: ch24/labs/lab5/remotemem.py class RemoteMemoryError (line 6) | class RemoteMemoryError(Exception): class RemoteMemory (line 9) | class RemoteMemory: method __init__ (line 10) | def __init__(self): method add_region (line 14) | def add_region(self, base, size): method del_region (line 19) | def del_region(self, base, size): method alloc (line 24) | def alloc(self, size): method free (line 33) | def free(self, address): FILE: ch24/labs/lab6/code.py class Code (line 8) | class Code: method __init__ (line 9) | def __init__(self, code, sym): method build (line 14) | def build(self, base_address): FILE: ch24/labs/lab6/common.c function outb (line 12) | static void outb(uint16_t port, uint8_t val) { function inb (line 16) | static uint8_t inb(uint16_t port) { function setup_serial (line 22) | void setup_serial() { function write_serial (line 32) | void write_serial(const void *data, unsigned long len) { function read_serial (line 42) | void read_serial(void *data, unsigned long len) { function crc32 (line 53) | uint32_t crc32(const void *data, unsigned long len) { function reset (line 63) | void reset() { function __assert (line 77) | void __assert(const char *msg, const char *file, int line) { FILE: ch24/labs/lab6/common.h type __builtin_va_list (line 12) | typedef __builtin_va_list va_list; FILE: ch24/labs/lab6/fuzzer.py class OOBType (line 11) | class OOBType(Enum): class Fuzzer (line 15) | class Fuzzer: method __init__ (line 20) | def __init__(self, seed): method timeout_handler (line 25) | def timeout_handler(signum, frame): method context_save (line 28) | def context_save(self): method context_restore (line 33) | def context_restore(self): method code (line 38) | def code(self, code): method fuzz (line 41) | def fuzz(self, reply): method on_boot (line 44) | def on_boot(self, body): method handle_message (line 47) | def handle_message(self, msg_type, body): method run (line 65) | def run(self): FILE: ch24/labs/lab6/guest.py class OpType (line 9) | class OpType(Enum): class Guest (line 13) | class Guest: method __init__ (line 14) | def __init__(self): method __enter__ (line 20) | def __enter__(self): method __exit__ (line 27) | def __exit__(self, type, value, traceback): method _init_boot_info (line 30) | def _init_boot_info(self, symbols, mmap): method messages (line 41) | def messages(self): method op_write (line 51) | def op_write(self, code, address=None): method op_exec (line 62) | def op_exec(self, address): method op_commit (line 68) | def op_commit(self): method execute (line 72) | def execute(self, code): FILE: ch24/labs/lab6/main.c function put_symbols (line 12) | static void put_symbols() { function put_mmap (line 20) | static void put_mmap(const struct multiboot_tag_mmap *mmap) { function put_mbi (line 35) | static void put_mbi(const void *mbi) { function op_write (line 56) | static void op_write() { function op_exec (line 67) | static void op_exec() { function kmain (line 73) | void kmain(const void *mbi) { FILE: ch24/labs/lab6/msr_fuzzer.py function ROR (line 57) | def ROR(x, n, bits): class Fuzzer (line 60) | class Fuzzer(fuzzer.Fuzzer): method __init__ (line 61) | def __init__(self, seed): method flip_bits (line 65) | def flip_bits(self, data, bits): method fuzz (line 70) | def fuzz(self, reply): FILE: ch24/labs/lab6/multiboot2.h type multiboot_uint8_t (line 91) | typedef unsigned char multiboot_uint8_t; type multiboot_uint16_t (line 92) | typedef unsigned short multiboot_uint16_t; type multiboot_uint32_t (line 93) | typedef unsigned int multiboot_uint32_t; type multiboot_uint64_t (line 94) | typedef unsigned long long multiboot_uint64_t; type multiboot_header (line 96) | struct multiboot_header type multiboot_header_tag (line 111) | struct multiboot_header_tag type multiboot_header_tag_information_request (line 118) | struct multiboot_header_tag_information_request type multiboot_header_tag_address (line 126) | struct multiboot_header_tag_address type multiboot_header_tag_entry_address (line 137) | struct multiboot_header_tag_entry_address type multiboot_header_tag_console_flags (line 145) | struct multiboot_header_tag_console_flags type multiboot_header_tag_framebuffer (line 153) | struct multiboot_header_tag_framebuffer type multiboot_header_tag_module_align (line 163) | struct multiboot_header_tag_module_align type multiboot_header_tag_relocatable (line 170) | struct multiboot_header_tag_relocatable type multiboot_color (line 181) | struct multiboot_color type multiboot_mmap_entry (line 188) | struct multiboot_mmap_entry type multiboot_memory_map_t (line 200) | typedef struct multiboot_mmap_entry multiboot_memory_map_t; type multiboot_tag (line 202) | struct multiboot_tag type multiboot_tag_string (line 208) | struct multiboot_tag_string type multiboot_tag_module (line 215) | struct multiboot_tag_module type multiboot_tag_basic_meminfo (line 224) | struct multiboot_tag_basic_meminfo type multiboot_tag_bootdev (line 232) | struct multiboot_tag_bootdev type multiboot_tag_mmap (line 241) | struct multiboot_tag_mmap type multiboot_vbe_info_block (line 250) | struct multiboot_vbe_info_block type multiboot_vbe_mode_info_block (line 255) | struct multiboot_vbe_mode_info_block type multiboot_tag_vbe (line 260) | struct multiboot_tag_vbe type multiboot_tag_framebuffer_common (line 274) | struct multiboot_tag_framebuffer_common type multiboot_tag_framebuffer (line 291) | struct multiboot_tag_framebuffer type multiboot_tag_elf_sections (line 314) | struct multiboot_tag_elf_sections type multiboot_tag_apm (line 324) | struct multiboot_tag_apm type multiboot_tag_efi32 (line 339) | struct multiboot_tag_efi32 type multiboot_tag_efi64 (line 346) | struct multiboot_tag_efi64 type multiboot_tag_smbios (line 353) | struct multiboot_tag_smbios type multiboot_tag_old_acpi (line 363) | struct multiboot_tag_old_acpi type multiboot_tag_new_acpi (line 370) | struct multiboot_tag_new_acpi type multiboot_tag_network (line 377) | struct multiboot_tag_network type multiboot_tag_efi_mmap (line 384) | struct multiboot_tag_efi_mmap type multiboot_tag_efi32_ih (line 393) | struct multiboot_tag_efi32_ih type multiboot_tag_efi64_ih (line 400) | struct multiboot_tag_efi64_ih type multiboot_tag_load_base_addr (line 407) | struct multiboot_tag_load_base_addr FILE: ch24/labs/lab6/protocol.c type msg_buffer (line 8) | struct msg_buffer { type msg_buffer (line 13) | struct msg_buffer type msg_buffer (line 14) | struct msg_buffer type msg_buffer (line 15) | struct msg_buffer function put_tp (line 32) | void put_tp(bool is_oob, TP prefix) { function TP (line 37) | TP get_tp() { function put_primitive (line 43) | void put_primitive(bool is_oob, TP prefix, const Primitive_t *value) { function get_primitive (line 78) | void get_primitive(TP prefix, Primitive_t *value) { function put_array (line 110) | void put_array(bool is_oob, const Array_t *array, const void *data) { function get_array (line 120) | void get_array(Array_t *array, void **dst_ptr) { function put_cstring (line 128) | void put_cstring(bool is_oob, const char *ptr) { function _put_va (line 134) | static void _put_va(bool is_oob, TP prefix, va_list args) { function _get_va (line 158) | static void _get_va(TP prefix, va_list args) { function put_va (line 179) | void put_va(bool is_oob, ...) { function get_va (line 187) | void get_va(TP prefix, ...) { function send_msg (line 194) | void send_msg(MT msg_type) { function msg_hdr_valid (line 208) | static bool msg_hdr_valid(const MsgHdr *hdr) { function recv_msg (line 213) | void recv_msg() { function _reset_oob_buffer (line 222) | void _reset_oob_buffer() { FILE: ch24/labs/lab6/protocol.h type MT (line 10) | typedef enum { type MsgHdr (line 20) | typedef struct { type TP (line 27) | typedef enum { type Primitive_t (line 45) | typedef union { type Array_t (line 56) | typedef struct { type OOBType (line 61) | typedef enum {OOBPrint = UINT32_C(0), OOBAssert} OOBType; type OpType (line 62) | typedef enum {OpWrite = UINT32_C(0), OpExec} OpType; FILE: ch24/labs/lab6/protocol.py function make_adapter (line 38) | def make_adapter(cInt, fInt): class ArrayAdapter (line 46) | class ArrayAdapter(c.Adapter): method _decode (line 47) | def _decode(self, obj, context, path): method _encode (line 51) | def _encode(self, obj, context, path): class ListAdapter (line 55) | class ListAdapter(c.Adapter): method _decode (line 56) | def _decode(self, obj, context, path): method _encode (line 65) | def _encode(self, obj, context, path): class BodyAdapter (line 92) | class BodyAdapter(c.Adapter): method _decode (line 93) | def _decode(self, obj, context, path): method _encode (line 96) | def _encode(self, obj, context, path): function recv (line 116) | def recv(reader): function send (line 122) | def send(writer, body): FILE: ch24/labs/lab6/remotemem.py class RemoteMemoryError (line 6) | class RemoteMemoryError(Exception): class RemoteMemory (line 9) | class RemoteMemory: method __init__ (line 10) | def __init__(self): method add_region (line 14) | def add_region(self, base, size): method del_region (line 19) | def del_region(self, base, size): method alloc (line 24) | def alloc(self, size): method free (line 33) | def free(self, address): FILE: ch24/labs/lab7/code.py class Code (line 8) | class Code: method __init__ (line 9) | def __init__(self, code, sym): method build (line 14) | def build(self, base_address): FILE: ch24/labs/lab7/common.c function outb (line 12) | static void outb(uint16_t port, uint8_t val) { function inb (line 16) | static uint8_t inb(uint16_t port) { function setup_serial (line 22) | void setup_serial() { function write_serial (line 32) | void write_serial(const void *data, unsigned long len) { function read_serial (line 42) | void read_serial(void *data, unsigned long len) { function crc32 (line 53) | uint32_t crc32(const void *data, unsigned long len) { function reset (line 63) | void reset() { function __assert (line 77) | void __assert(const char *msg, const char *file, int line) { FILE: ch24/labs/lab7/common.h type __builtin_va_list (line 12) | typedef __builtin_va_list va_list; FILE: ch24/labs/lab7/fuzzer.py class OOBType (line 11) | class OOBType(Enum): class Fuzzer (line 15) | class Fuzzer: method __init__ (line 20) | def __init__(self, seed): method timeout_handler (line 25) | def timeout_handler(signum, frame): method context_save (line 28) | def context_save(self): method context_restore (line 33) | def context_restore(self): method code (line 38) | def code(self, code): method fuzz (line 41) | def fuzz(self, reply): method on_boot (line 44) | def on_boot(self, body): method install_idt (line 48) | def install_idt(self, vectors=30): method make_vector_handler (line 64) | def make_vector_handler(self, vec): method handle_message (line 95) | def handle_message(self, msg_type, body): method run (line 113) | def run(self): FILE: ch24/labs/lab7/guest.py class OpType (line 9) | class OpType(Enum): class Guest (line 13) | class Guest: method __init__ (line 14) | def __init__(self): method __enter__ (line 20) | def __enter__(self): method __exit__ (line 27) | def __exit__(self, type, value, traceback): method _init_boot_info (line 30) | def _init_boot_info(self, symbols, mmap): method messages (line 41) | def messages(self): method op_write (line 51) | def op_write(self, code, address=None): method op_exec (line 62) | def op_exec(self, address): method op_commit (line 68) | def op_commit(self): method execute (line 72) | def execute(self, code): FILE: ch24/labs/lab7/main.c function put_symbols (line 12) | static void put_symbols() { function put_mmap (line 20) | static void put_mmap(const struct multiboot_tag_mmap *mmap) { function put_mbi (line 35) | static void put_mbi(const void *mbi) { function op_write (line 56) | static void op_write() { function op_exec (line 67) | static void op_exec() { function kmain (line 73) | void kmain(const void *mbi) { FILE: ch24/labs/lab7/msr_fuzzer.py function ROR (line 57) | def ROR(x, n, bits): class Fuzzer (line 60) | class Fuzzer(fuzzer.Fuzzer): method __init__ (line 61) | def __init__(self, seed): method flip_bits (line 65) | def flip_bits(self, data, bits): method fuzz (line 70) | def fuzz(self, reply): FILE: ch24/labs/lab7/multiboot2.h type multiboot_uint8_t (line 91) | typedef unsigned char multiboot_uint8_t; type multiboot_uint16_t (line 92) | typedef unsigned short multiboot_uint16_t; type multiboot_uint32_t (line 93) | typedef unsigned int multiboot_uint32_t; type multiboot_uint64_t (line 94) | typedef unsigned long long multiboot_uint64_t; type multiboot_header (line 96) | struct multiboot_header type multiboot_header_tag (line 111) | struct multiboot_header_tag type multiboot_header_tag_information_request (line 118) | struct multiboot_header_tag_information_request type multiboot_header_tag_address (line 126) | struct multiboot_header_tag_address type multiboot_header_tag_entry_address (line 137) | struct multiboot_header_tag_entry_address type multiboot_header_tag_console_flags (line 145) | struct multiboot_header_tag_console_flags type multiboot_header_tag_framebuffer (line 153) | struct multiboot_header_tag_framebuffer type multiboot_header_tag_module_align (line 163) | struct multiboot_header_tag_module_align type multiboot_header_tag_relocatable (line 170) | struct multiboot_header_tag_relocatable type multiboot_color (line 181) | struct multiboot_color type multiboot_mmap_entry (line 188) | struct multiboot_mmap_entry type multiboot_memory_map_t (line 200) | typedef struct multiboot_mmap_entry multiboot_memory_map_t; type multiboot_tag (line 202) | struct multiboot_tag type multiboot_tag_string (line 208) | struct multiboot_tag_string type multiboot_tag_module (line 215) | struct multiboot_tag_module type multiboot_tag_basic_meminfo (line 224) | struct multiboot_tag_basic_meminfo type multiboot_tag_bootdev (line 232) | struct multiboot_tag_bootdev type multiboot_tag_mmap (line 241) | struct multiboot_tag_mmap type multiboot_vbe_info_block (line 250) | struct multiboot_vbe_info_block type multiboot_vbe_mode_info_block (line 255) | struct multiboot_vbe_mode_info_block type multiboot_tag_vbe (line 260) | struct multiboot_tag_vbe type multiboot_tag_framebuffer_common (line 274) | struct multiboot_tag_framebuffer_common type multiboot_tag_framebuffer (line 291) | struct multiboot_tag_framebuffer type multiboot_tag_elf_sections (line 314) | struct multiboot_tag_elf_sections type multiboot_tag_apm (line 324) | struct multiboot_tag_apm type multiboot_tag_efi32 (line 339) | struct multiboot_tag_efi32 type multiboot_tag_efi64 (line 346) | struct multiboot_tag_efi64 type multiboot_tag_smbios (line 353) | struct multiboot_tag_smbios type multiboot_tag_old_acpi (line 363) | struct multiboot_tag_old_acpi type multiboot_tag_new_acpi (line 370) | struct multiboot_tag_new_acpi type multiboot_tag_network (line 377) | struct multiboot_tag_network type multiboot_tag_efi_mmap (line 384) | struct multiboot_tag_efi_mmap type multiboot_tag_efi32_ih (line 393) | struct multiboot_tag_efi32_ih type multiboot_tag_efi64_ih (line 400) | struct multiboot_tag_efi64_ih type multiboot_tag_load_base_addr (line 407) | struct multiboot_tag_load_base_addr FILE: ch24/labs/lab7/protocol.c type msg_buffer (line 8) | struct msg_buffer { type msg_buffer (line 13) | struct msg_buffer type msg_buffer (line 14) | struct msg_buffer type msg_buffer (line 15) | struct msg_buffer function put_tp (line 32) | void put_tp(bool is_oob, TP prefix) { function TP (line 37) | TP get_tp() { function put_primitive (line 43) | void put_primitive(bool is_oob, TP prefix, const Primitive_t *value) { function get_primitive (line 78) | void get_primitive(TP prefix, Primitive_t *value) { function put_array (line 110) | void put_array(bool is_oob, const Array_t *array, const void *data) { function get_array (line 120) | void get_array(Array_t *array, void **dst_ptr) { function put_cstring (line 128) | void put_cstring(bool is_oob, const char *ptr) { function _put_va (line 134) | static void _put_va(bool is_oob, TP prefix, va_list args) { function _get_va (line 158) | static void _get_va(TP prefix, va_list args) { function put_va (line 179) | void put_va(bool is_oob, ...) { function get_va (line 187) | void get_va(TP prefix, ...) { function send_msg (line 194) | void send_msg(MT msg_type) { function msg_hdr_valid (line 208) | static bool msg_hdr_valid(const MsgHdr *hdr) { function recv_msg (line 213) | void recv_msg() { function _reset_oob_buffer (line 222) | void _reset_oob_buffer() { FILE: ch24/labs/lab7/protocol.h type MT (line 10) | typedef enum { type MsgHdr (line 20) | typedef struct { type TP (line 27) | typedef enum { type Primitive_t (line 45) | typedef union { type Array_t (line 56) | typedef struct { type OOBType (line 61) | typedef enum {OOBPrint = UINT32_C(0), OOBAssert} OOBType; type OpType (line 62) | typedef enum {OpWrite = UINT32_C(0), OpExec} OpType; FILE: ch24/labs/lab7/protocol.py function make_adapter (line 38) | def make_adapter(cInt, fInt): class ArrayAdapter (line 46) | class ArrayAdapter(c.Adapter): method _decode (line 47) | def _decode(self, obj, context, path): method _encode (line 51) | def _encode(self, obj, context, path): class ListAdapter (line 55) | class ListAdapter(c.Adapter): method _decode (line 56) | def _decode(self, obj, context, path): method _encode (line 65) | def _encode(self, obj, context, path): class BodyAdapter (line 92) | class BodyAdapter(c.Adapter): method _decode (line 93) | def _decode(self, obj, context, path): method _encode (line 96) | def _encode(self, obj, context, path): function recv (line 116) | def recv(reader): function send (line 122) | def send(writer, body): FILE: ch24/labs/lab7/remotemem.py class RemoteMemoryError (line 6) | class RemoteMemoryError(Exception): class RemoteMemory (line 9) | class RemoteMemory: method __init__ (line 10) | def __init__(self): method add_region (line 14) | def add_region(self, base, size): method del_region (line 19) | def del_region(self, base, size): method alloc (line 24) | def alloc(self, size): method free (line 33) | def free(self, address): FILE: ch25/labs/code.py class Code (line 8) | class Code: method __init__ (line 9) | def __init__(self, code, sym): method build (line 14) | def build(self, base_address): FILE: ch25/labs/common.c function outb (line 12) | static void outb(uint16_t port, uint8_t val) { function inb (line 16) | static uint8_t inb(uint16_t port) { function setup_serial (line 22) | void setup_serial() { function write_serial (line 32) | void write_serial(const void *data, unsigned long len) { function read_serial (line 42) | void read_serial(void *data, unsigned long len) { function crc32 (line 53) | uint32_t crc32(const void *data, unsigned long len) { function reset (line 63) | void reset() { function __assert (line 77) | void __assert(const char *msg, const char *file, int line) { FILE: ch25/labs/common.h type __builtin_va_list (line 12) | typedef __builtin_va_list va_list; FILE: ch25/labs/guest.py class OpType (line 9) | class OpType(Enum): class Guest (line 13) | class Guest: method __init__ (line 16) | def __init__(self): method __enter__ (line 22) | def __enter__(self): method __exit__ (line 36) | def __exit__(self, type, value, traceback): method _init_boot_info (line 39) | def _init_boot_info(self, symbols, mmap): method messages (line 50) | def messages(self): method op_write_data (line 60) | def op_write_data(self, data, address=None): method op_write (line 71) | def op_write(self, code, address=None): method op_exec (line 77) | def op_exec(self, address): method op_commit (line 83) | def op_commit(self): method execute (line 87) | def execute(self, code): FILE: ch25/labs/hypercall.py class Session (line 40) | class Session(session.Session): method __init__ (line 45) | def __init__(self): method HvCallPostMessage (line 48) | def HvCallPostMessage(self, ConnectionId, MessageType, payload): method HvCallSignalEvent (line 70) | def HvCallSignalEvent(self, ConnectionId, FlagNumber): method dump_hc_page (line 91) | def dump_hc_page(self): method on_boot (line 112) | def on_boot(self, body): FILE: ch25/labs/hyperv_guest.py function wsclient (line 29) | def wsclient(): class PseudoProc (line 39) | class PseudoProc: method __init__ (line 40) | def __init__(self): method kill (line 46) | def kill(self): class Guest (line 50) | class Guest(guest.Guest): method __enter__ (line 54) | def __enter__(self): method __exit__ (line 94) | def __exit__(self, type, value, traceback): class GuestGen1 (line 108) | class GuestGen1(Guest): class GuestGen2 (line 111) | class GuestGen2(Guest): FILE: ch25/labs/main.c function put_symbols (line 12) | static void put_symbols() { function put_mmap (line 23) | static void put_mmap(const struct multiboot_tag_mmap *mmap) { function put_mbi (line 38) | static void put_mbi(const void *mbi) { function op_write (line 59) | static void op_write() { function op_exec (line 70) | static void op_exec() { function kmain (line 76) | void kmain(const void *mbi) { FILE: ch25/labs/multiboot2.h type multiboot_uint8_t (line 91) | typedef unsigned char multiboot_uint8_t; type multiboot_uint16_t (line 92) | typedef unsigned short multiboot_uint16_t; type multiboot_uint32_t (line 93) | typedef unsigned int multiboot_uint32_t; type multiboot_uint64_t (line 94) | typedef unsigned long long multiboot_uint64_t; type multiboot_header (line 96) | struct multiboot_header type multiboot_header_tag (line 111) | struct multiboot_header_tag type multiboot_header_tag_information_request (line 118) | struct multiboot_header_tag_information_request type multiboot_header_tag_address (line 126) | struct multiboot_header_tag_address type multiboot_header_tag_entry_address (line 137) | struct multiboot_header_tag_entry_address type multiboot_header_tag_console_flags (line 145) | struct multiboot_header_tag_console_flags type multiboot_header_tag_framebuffer (line 153) | struct multiboot_header_tag_framebuffer type multiboot_header_tag_module_align (line 163) | struct multiboot_header_tag_module_align type multiboot_header_tag_relocatable (line 170) | struct multiboot_header_tag_relocatable type multiboot_color (line 181) | struct multiboot_color type multiboot_mmap_entry (line 188) | struct multiboot_mmap_entry type multiboot_memory_map_t (line 200) | typedef struct multiboot_mmap_entry multiboot_memory_map_t; type multiboot_tag (line 202) | struct multiboot_tag type multiboot_tag_string (line 208) | struct multiboot_tag_string type multiboot_tag_module (line 215) | struct multiboot_tag_module type multiboot_tag_basic_meminfo (line 224) | struct multiboot_tag_basic_meminfo type multiboot_tag_bootdev (line 232) | struct multiboot_tag_bootdev type multiboot_tag_mmap (line 241) | struct multiboot_tag_mmap type multiboot_vbe_info_block (line 250) | struct multiboot_vbe_info_block type multiboot_vbe_mode_info_block (line 255) | struct multiboot_vbe_mode_info_block type multiboot_tag_vbe (line 260) | struct multiboot_tag_vbe type multiboot_tag_framebuffer_common (line 274) | struct multiboot_tag_framebuffer_common type multiboot_tag_framebuffer (line 291) | struct multiboot_tag_framebuffer type multiboot_tag_elf_sections (line 314) | struct multiboot_tag_elf_sections type multiboot_tag_apm (line 324) | struct multiboot_tag_apm type multiboot_tag_efi32 (line 339) | struct multiboot_tag_efi32 type multiboot_tag_efi64 (line 346) | struct multiboot_tag_efi64 type multiboot_tag_smbios (line 353) | struct multiboot_tag_smbios type multiboot_tag_old_acpi (line 363) | struct multiboot_tag_old_acpi type multiboot_tag_new_acpi (line 370) | struct multiboot_tag_new_acpi type multiboot_tag_network (line 377) | struct multiboot_tag_network type multiboot_tag_efi_mmap (line 384) | struct multiboot_tag_efi_mmap type multiboot_tag_efi32_ih (line 393) | struct multiboot_tag_efi32_ih type multiboot_tag_efi64_ih (line 400) | struct multiboot_tag_efi64_ih type multiboot_tag_load_base_addr (line 407) | struct multiboot_tag_load_base_addr FILE: ch25/labs/pci.py class PciHeader (line 216) | class PciHeader: method __init__ (line 217) | def __init__(self, regs): method info (line 232) | def info(self): method get_header_type (line 249) | def get_header_type(self): class StandardHeader (line 252) | class StandardHeader(PciHeader): method __init__ (line 253) | def __init__(self, regs): method reg_nums (line 265) | def reg_nums(self): class Pci2Pci (line 268) | class Pci2Pci(PciHeader): method __init__ (line 269) | def __init__(self, regs): class Cardbus (line 292) | class Cardbus(PciHeader): method __init__ (line 293) | def __init__(self, regs): class Bar (line 317) | class Bar: method __init__ (line 318) | def __init__(self, reg_num, reg, size, reg_high): class Session (line 333) | class Session(session.Session): method __init__ (line 338) | def __init__(self, guest_cls): method scan_pci (line 343) | def scan_pci(self): method inject_read_bar_code (line 412) | def inject_read_bar_code(self): method scan_device (line 481) | def scan_device(self, bus, slot, func, regs): method print_bar_info (line 521) | def print_bar_info(self, bar): method print_dev_info (line 524) | def print_dev_info(self, bus, slot, func, dev): method on_boot (line 534) | def on_boot(self, body): FILE: ch25/labs/protocol.c type msg_buffer (line 8) | struct msg_buffer { type msg_buffer (line 13) | struct msg_buffer type msg_buffer (line 14) | struct msg_buffer type msg_buffer (line 15) | struct msg_buffer function put_tp (line 32) | void put_tp(bool is_oob, TP prefix) { function TP (line 37) | TP get_tp() { function put_primitive (line 43) | void put_primitive(bool is_oob, TP prefix, const Primitive_t *value) { function get_primitive (line 78) | void get_primitive(TP prefix, Primitive_t *value) { function put_array (line 110) | void put_array(bool is_oob, const Array_t *array, const void *data) { function get_array (line 120) | void get_array(Array_t *array, void **dst_ptr) { function put_cstring (line 128) | void put_cstring(bool is_oob, const char *ptr) { function _put_va (line 134) | static void _put_va(bool is_oob, TP prefix, va_list args) { function _get_va (line 158) | static void _get_va(TP prefix, va_list args) { function put_va (line 179) | void put_va(bool is_oob, ...) { function get_va (line 187) | void get_va(TP prefix, ...) { function send_msg (line 194) | void send_msg(MT msg_type) { function msg_hdr_valid (line 208) | static bool msg_hdr_valid(const MsgHdr *hdr) { function recv_msg (line 213) | void recv_msg() { function _reset_oob_buffer (line 222) | void _reset_oob_buffer() { FILE: ch25/labs/protocol.h type MT (line 10) | typedef enum { type MsgHdr (line 20) | typedef struct { type TP (line 27) | typedef enum { type Primitive_t (line 45) | typedef union { type Array_t (line 56) | typedef struct { type OOBType (line 61) | typedef enum {OOBPrint = UINT32_C(0), OOBAssert} OOBType; type OpType (line 62) | typedef enum {OpWrite = UINT32_C(0), OpExec} OpType; FILE: ch25/labs/protocol.py function make_adapter (line 38) | def make_adapter(cInt, fInt): class ArrayAdapter (line 46) | class ArrayAdapter(c.Adapter): method _decode (line 47) | def _decode(self, obj, context, path): method _encode (line 51) | def _encode(self, obj, context, path): class ListAdapter (line 55) | class ListAdapter(c.Adapter): method _decode (line 56) | def _decode(self, obj, context, path): method _encode (line 65) | def _encode(self, obj, context, path): class BodyAdapter (line 92) | class BodyAdapter(c.Adapter): method _decode (line 93) | def _decode(self, obj, context, path): method _encode (line 96) | def _encode(self, obj, context, path): function recv (line 116) | def recv(reader): function send (line 122) | def send(writer, body): FILE: ch25/labs/remotemem.py class RemoteMemoryError (line 8) | class RemoteMemoryError(Exception): class RemoteMemory (line 11) | class RemoteMemory: method __init__ (line 12) | def __init__(self): method add_region (line 16) | def add_region(self, base, size): method del_region (line 21) | def del_region(self, base, size): method alloc (line 26) | def alloc(self, size): method free (line 35) | def free(self, address): method free_all (line 39) | def free_all(self): class PageAlloc (line 44) | class PageAlloc: method __init__ (line 45) | def __init__(self, mem, data_len): method start (line 54) | def start(self): method end (line 57) | def end(self): method size (line 60) | def size(self): method page_list (line 63) | def page_list(self): method free (line 66) | def free(self): class Chunk (line 71) | class Chunk: method __init__ (line 72) | def __init__(self, data, offset=None): method __eq__ (line 76) | def __eq__(self, other): method __lt__ (line 79) | def __lt__(self, other): class IOVector (line 83) | class IOVector: method __init__ (line 84) | def __init__(self, chunk_list=None): method size (line 91) | def size(self): method append (line 98) | def append(self, data, offset=None): method iter (line 104) | def iter(self): FILE: ch25/labs/session.py class OOBType (line 10) | class OOBType(Enum): class Session (line 14) | class Session: method __init__ (line 19) | def __init__(self, guest_cls=Guest): method timeout_handler (line 28) | def timeout_handler(signum, frame): method context_save (line 31) | def context_save(self): method context_restore (line 36) | def context_restore(self): method code (line 41) | def code(self, code): method execute (line 44) | def execute(self, code): method fuzz (line 47) | def fuzz(self, reply): method on_boot (line 50) | def on_boot(self, body): method install_idt (line 54) | def install_idt(self, vectors=30): method make_vector_handler (line 69) | def make_vector_handler(self, vec): method is_oob (line 105) | def is_oob(self, msg_type, body): method is_boot (line 121) | def is_boot(self, msg_type): method next_message (line 124) | def next_message(self): method run (line 132) | def run(self): method run_loop (line 145) | def run_loop(self): FILE: ch25/labs/time_sync.py class ICMessageType (line 20) | class ICMessageType(Enum): class Session (line 78) | class Session(vmbus.Session): method negotiate (line 79) | def negotiate(self, msg): method on_boot (line 106) | def on_boot(self, body): FILE: ch25/labs/vmbus.py class VmbusChannelMessage (line 12) | class VmbusChannelMessage(Enum): class UUIDAdapter (line 56) | class UUIDAdapter(c.Adapter): method _decode (line 57) | def _decode(self, obj, context, path): method _encode (line 60) | def _encode(self, obj, context, path): function gpa_range (line 135) | def gpa_range(address, size): function gpa_range_size (line 144) | def gpa_range_size(range_list): class PacketType (line 195) | class PacketType(Enum): class Session (line 222) | class Session(hypercall.Session): method synic_init (line 225) | def synic_init(self): method synic_read_simp (line 263) | def synic_read_simp(self, SINT): method synic_poll_simp (line 301) | def synic_poll_simp(self, SINT): method vmbus_handle_message (line 309) | def vmbus_handle_message(self, msg): method vmbus_read_message (line 327) | def vmbus_read_message(self): method vmbus_initiate_contact (line 330) | def vmbus_initiate_contact(self): method vmbus_handle_version_response (line 350) | def vmbus_handle_version_response(self, msg): method vmbus_request_offers (line 359) | def vmbus_request_offers(self): method vmbus_handle_offer (line 371) | def vmbus_handle_offer(self, msg): method vmbus_handle_offers_delivered (line 383) | def vmbus_handle_offers_delivered(self, msg): method vmbus_create_gpadl (line 387) | def vmbus_create_gpadl(self, child_relid, address, size): method vmbus_handle_gpadl_created (line 428) | def vmbus_handle_gpadl_created(self, msg): method vmbus_open_channel (line 433) | def vmbus_open_channel(self, child_relid): method vmbus_handle_open_result (line 453) | def vmbus_handle_open_result(self, msg): method vmbus_device_open (line 457) | def vmbus_device_open(self, if_instance=None, if_type=None, ring_size=... method vmbus_init (line 473) | def vmbus_init(self): method ringbuffer_init (line 484) | def ringbuffer_init(self, child_relid, address, size, offset_pages): method ringbuffer_write (line 499) | def ringbuffer_write(self, ring_buffer, data): method get_connection_id (line 552) | def get_connection_id(self, child_relid): method ringbuffer_send_packet (line 559) | def ringbuffer_send_packet(self, child_relid, packet_type, data, trans... method ringbuffer_read (line 589) | def ringbuffer_read(self, ring_buffer, data_len, update_index=True): method ringbuffer_recv_packet (line 646) | def ringbuffer_recv_packet(self, child_relid): method on_boot (line 657) | def on_boot(self, body): FILE: ch26/labs/code.py class Code (line 8) | class Code: method __init__ (line 9) | def __init__(self, code, sym): method build (line 14) | def build(self, base_address): FILE: ch26/labs/common.c function outb (line 12) | static void outb(uint16_t port, uint8_t val) { function inb (line 16) | static uint8_t inb(uint16_t port) { function setup_serial (line 22) | void setup_serial() { function write_serial (line 32) | void write_serial(const void *data, unsigned long len) { function read_serial (line 42) | void read_serial(void *data, unsigned long len) { function crc32 (line 53) | uint32_t crc32(const void *data, unsigned long len) { function reset (line 63) | void reset() { function __assert (line 77) | void __assert(const char *msg, const char *file, int line) { FILE: ch26/labs/common.h type __builtin_va_list (line 12) | typedef __builtin_va_list va_list; FILE: ch26/labs/cstruct.py class CStruct (line 8) | class CStruct(c.Struct): method __init__ (line 9) | def __init__(self, *subcons): FILE: ch26/labs/ehci.py class Session (line 14) | class Session(pci.Session): method qtd_token (line 18) | def qtd_token(transfer_bytes, pid): method qtd_single (line 24) | def qtd_single(token, data=None): method qh_single (line 48) | def qh_single(qh, qtd): method port_reset (line 61) | def port_reset(self): method async_sched_stop (line 70) | def async_sched_stop(self): method async_sched_run (line 83) | def async_sched_run(self, qh): method run_single (line 98) | def run_single(self, token, qtd_data): method request (line 113) | def request(req_type, request, value, index, length): method setup (line 128) | def setup(self, request): method usb_in (line 135) | def usb_in(self, data_len): method usb_out (line 150) | def usb_out(self, data: IOVector): method desc_string (line 161) | def desc_string(self, index): method ehci_regs_base (line 179) | def ehci_regs_base(self): method on_boot (line 191) | def on_boot(self, body): FILE: ch26/labs/guest.py class OpType (line 9) | class OpType(Enum): class Guest (line 13) | class Guest: method __init__ (line 16) | def __init__(self): method __enter__ (line 22) | def __enter__(self): method __exit__ (line 36) | def __exit__(self, type, value, traceback): method _init_boot_info (line 39) | def _init_boot_info(self, symbols, mmap): method messages (line 50) | def messages(self): method op_write_data (line 60) | def op_write_data(self, data, address=None): method op_write (line 71) | def op_write(self, code, address=None): method op_exec (line 77) | def op_exec(self, address): method op_commit (line 83) | def op_commit(self): method execute (line 87) | def execute(self, code): FILE: ch26/labs/main.c function put_symbols (line 12) | static void put_symbols() { function put_mmap (line 23) | static void put_mmap(const struct multiboot_tag_mmap *mmap) { function put_mbi (line 38) | static void put_mbi(const void *mbi) { function op_write (line 59) | static void op_write() { function op_exec (line 70) | static void op_exec() { function kmain (line 76) | void kmain(const void *mbi) { FILE: ch26/labs/multiboot2.h type multiboot_uint8_t (line 91) | typedef unsigned char multiboot_uint8_t; type multiboot_uint16_t (line 92) | typedef unsigned short multiboot_uint16_t; type multiboot_uint32_t (line 93) | typedef unsigned int multiboot_uint32_t; type multiboot_uint64_t (line 94) | typedef unsigned long long multiboot_uint64_t; type multiboot_header (line 96) | struct multiboot_header type multiboot_header_tag (line 111) | struct multiboot_header_tag type multiboot_header_tag_information_request (line 118) | struct multiboot_header_tag_information_request type multiboot_header_tag_address (line 126) | struct multiboot_header_tag_address type multiboot_header_tag_entry_address (line 137) | struct multiboot_header_tag_entry_address type multiboot_header_tag_console_flags (line 145) | struct multiboot_header_tag_console_flags type multiboot_header_tag_framebuffer (line 153) | struct multiboot_header_tag_framebuffer type multiboot_header_tag_module_align (line 163) | struct multiboot_header_tag_module_align type multiboot_header_tag_relocatable (line 170) | struct multiboot_header_tag_relocatable type multiboot_color (line 181) | struct multiboot_color type multiboot_mmap_entry (line 188) | struct multiboot_mmap_entry type multiboot_memory_map_t (line 200) | typedef struct multiboot_mmap_entry multiboot_memory_map_t; type multiboot_tag (line 202) | struct multiboot_tag type multiboot_tag_string (line 208) | struct multiboot_tag_string type multiboot_tag_module (line 215) | struct multiboot_tag_module type multiboot_tag_basic_meminfo (line 224) | struct multiboot_tag_basic_meminfo type multiboot_tag_bootdev (line 232) | struct multiboot_tag_bootdev type multiboot_tag_mmap (line 241) | struct multiboot_tag_mmap type multiboot_vbe_info_block (line 250) | struct multiboot_vbe_info_block type multiboot_vbe_mode_info_block (line 255) | struct multiboot_vbe_mode_info_block type multiboot_tag_vbe (line 260) | struct multiboot_tag_vbe type multiboot_tag_framebuffer_common (line 274) | struct multiboot_tag_framebuffer_common type multiboot_tag_framebuffer (line 291) | struct multiboot_tag_framebuffer type multiboot_tag_elf_sections (line 314) | struct multiboot_tag_elf_sections type multiboot_tag_apm (line 324) | struct multiboot_tag_apm type multiboot_tag_efi32 (line 339) | struct multiboot_tag_efi32 type multiboot_tag_efi64 (line 346) | struct multiboot_tag_efi64 type multiboot_tag_smbios (line 353) | struct multiboot_tag_smbios type multiboot_tag_old_acpi (line 363) | struct multiboot_tag_old_acpi type multiboot_tag_new_acpi (line 370) | struct multiboot_tag_new_acpi type multiboot_tag_network (line 377) | struct multiboot_tag_network type multiboot_tag_efi_mmap (line 384) | struct multiboot_tag_efi_mmap type multiboot_tag_efi32_ih (line 393) | struct multiboot_tag_efi32_ih type multiboot_tag_efi64_ih (line 400) | struct multiboot_tag_efi64_ih type multiboot_tag_load_base_addr (line 407) | struct multiboot_tag_load_base_addr FILE: ch26/labs/pci.py class PciHeader (line 216) | class PciHeader: method __init__ (line 217) | def __init__(self, regs): method info (line 232) | def info(self): method get_header_type (line 249) | def get_header_type(self): class StandardHeader (line 252) | class StandardHeader(PciHeader): method __init__ (line 253) | def __init__(self, regs): method reg_nums (line 265) | def reg_nums(self): class Pci2Pci (line 268) | class Pci2Pci(PciHeader): method __init__ (line 269) | def __init__(self, regs): class Cardbus (line 292) | class Cardbus(PciHeader): method __init__ (line 293) | def __init__(self, regs): class Bar (line 317) | class Bar: method __init__ (line 318) | def __init__(self, reg_num, reg, size, reg_high): class Session (line 333) | class Session(session.Session): method __init__ (line 338) | def __init__(self, guest_cls): method scan_pci (line 343) | def scan_pci(self): method inject_read_bar_code (line 412) | def inject_read_bar_code(self): method scan_device (line 481) | def scan_device(self, bus, slot, func, regs): method print_bar_info (line 521) | def print_bar_info(self, bar): method print_dev_info (line 524) | def print_dev_info(self, bus, slot, func, dev): method on_boot (line 534) | def on_boot(self, body): FILE: ch26/labs/protocol.c type msg_buffer (line 8) | struct msg_buffer { type msg_buffer (line 13) | struct msg_buffer type msg_buffer (line 14) | struct msg_buffer type msg_buffer (line 15) | struct msg_buffer function put_tp (line 32) | void put_tp(bool is_oob, TP prefix) { function TP (line 37) | TP get_tp() { function put_primitive (line 43) | void put_primitive(bool is_oob, TP prefix, const Primitive_t *value) { function get_primitive (line 78) | void get_primitive(TP prefix, Primitive_t *value) { function put_array (line 110) | void put_array(bool is_oob, const Array_t *array, const void *data) { function get_array (line 120) | void get_array(Array_t *array, void **dst_ptr) { function put_cstring (line 128) | void put_cstring(bool is_oob, const char *ptr) { function _put_va (line 134) | static void _put_va(bool is_oob, TP prefix, va_list args) { function _get_va (line 158) | static void _get_va(TP prefix, va_list args) { function put_va (line 179) | void put_va(bool is_oob, ...) { function get_va (line 187) | void get_va(TP prefix, ...) { function send_msg (line 194) | void send_msg(MT msg_type) { function msg_hdr_valid (line 208) | static bool msg_hdr_valid(const MsgHdr *hdr) { function recv_msg (line 213) | void recv_msg() { function _reset_oob_buffer (line 222) | void _reset_oob_buffer() { FILE: ch26/labs/protocol.h type MT (line 10) | typedef enum { type MsgHdr (line 20) | typedef struct { type TP (line 27) | typedef enum { type Primitive_t (line 45) | typedef union { type Array_t (line 56) | typedef struct { type OOBType (line 61) | typedef enum {OOBPrint = UINT32_C(0), OOBAssert} OOBType; type OpType (line 62) | typedef enum {OpWrite = UINT32_C(0), OpExec} OpType; FILE: ch26/labs/protocol.py function make_adapter (line 38) | def make_adapter(cInt, fInt): class ArrayAdapter (line 46) | class ArrayAdapter(c.Adapter): method _decode (line 47) | def _decode(self, obj, context, path): method _encode (line 51) | def _encode(self, obj, context, path): class ListAdapter (line 55) | class ListAdapter(c.Adapter): method _decode (line 56) | def _decode(self, obj, context, path): method _encode (line 65) | def _encode(self, obj, context, path): class BodyAdapter (line 92) | class BodyAdapter(c.Adapter): method _decode (line 93) | def _decode(self, obj, context, path): method _encode (line 96) | def _encode(self, obj, context, path): function recv (line 116) | def recv(reader): function send (line 122) | def send(writer, body): FILE: ch26/labs/qemu_guest.py class Guest (line 7) | class Guest(guest.Guest): method __enter__ (line 11) | def __enter__(self): FILE: ch26/labs/qemu_xpl.py class ExploitError (line 157) | class ExploitError(Exception): class Exploit (line 160) | class Exploit(ehci.Session): method trigger_overflow (line 165) | def trigger_overflow(self, overflow_len, data): method overflow_data (line 170) | def overflow_data(self): method overflow_build (line 178) | def overflow_build(self, overflow_len, setup_len, setup_index): method relative_write (line 186) | def relative_write(self, offset, data: IOVector): method relative_read (line 196) | def relative_read(self, offset, length): method addr_of (line 214) | def addr_of(self, field): method arbitrary_read_near (line 217) | def arbitrary_read_near(self, addr, data_len): method relative_write_2 (line 221) | def relative_write_2(self, offset, data, data_buf_contents): method arbitrary_write (line 234) | def arbitrary_write(self, addr, data, data_buf_contents): method descr_build (line 238) | def descr_build(self, address_list, start_addr): method leak_multiple (line 254) | def leak_multiple(self, address_list): method leak_module_base (line 264) | def leak_module_base(self, fptr): method leak_one (line 280) | def leak_one(self, addr): method on_boot (line 284) | def on_boot(self, body): FILE: ch26/labs/remotemem.py class RemoteMemoryError (line 8) | class RemoteMemoryError(Exception): class RemoteMemory (line 11) | class RemoteMemory: method __init__ (line 12) | def __init__(self): method add_region (line 16) | def add_region(self, base, size): method del_region (line 21) | def del_region(self, base, size): method alloc (line 26) | def alloc(self, size): method free (line 35) | def free(self, address): method free_all (line 39) | def free_all(self): class PageAlloc (line 44) | class PageAlloc: method __init__ (line 45) | def __init__(self, mem, data_len): method start (line 54) | def start(self): method end (line 57) | def end(self): method size (line 60) | def size(self): method page_list (line 63) | def page_list(self): method free (line 66) | def free(self): class Chunk (line 71) | class Chunk: method __init__ (line 72) | def __init__(self, data, offset=None): method __eq__ (line 76) | def __eq__(self, other): method __lt__ (line 79) | def __lt__(self, other): class IOVector (line 83) | class IOVector: method __init__ (line 84) | def __init__(self, chunk_list=None): method size (line 91) | def size(self): method append (line 98) | def append(self, data, offset=None): method iter (line 104) | def iter(self): FILE: ch26/labs/session.py class OOBType (line 10) | class OOBType(Enum): class Session (line 14) | class Session: method __init__ (line 19) | def __init__(self, guest_cls=Guest): method timeout_handler (line 28) | def timeout_handler(signum, frame): method context_save (line 31) | def context_save(self): method context_restore (line 36) | def context_restore(self): method code (line 41) | def code(self, code): method execute (line 44) | def execute(self, code): method fuzz (line 47) | def fuzz(self, reply): method on_boot (line 50) | def on_boot(self, body): method install_idt (line 54) | def install_idt(self, vectors=30): method make_vector_handler (line 69) | def make_vector_handler(self, vec): method is_oob (line 105) | def is_oob(self, msg_type, body): method is_boot (line 121) | def is_boot(self, msg_type): method next_message (line 124) | def next_message(self): method run (line 132) | def run(self): method run_loop (line 145) | def run_loop(self): FILE: ch26/labs/trigger.py class Trigger (line 8) | class Trigger(ehci.Session): method trigger_overflow (line 12) | def trigger_overflow(self, overflow_len, data): method on_boot (line 17) | def on_boot(self, body): FILE: ch27/lab/ansible/roles/kali_customizations/files/getEC2WinCreds.py function decrypt (line 28) | def decrypt(ciphertext, keyfile=args.keyfile): function get_ec2_info (line 50) | def get_ec2_info(): FILE: ch29/Lab/targets/web/app.py function get_hit_count (line 14) | def get_hit_count(): function enter (line 26) | def enter():