PB173 - Ovladače jádra - Linux XIII. Jiří Slabý ITI, Fakulta Informatiky 20. 12. 2011 J. Slabý (ITI) PB173/02 20. 12. 2011 1 /8 Různé • Firmware • Analýza OOPS 20. 12. 2011 2/8 Část I Firmware J. Slabý (ITI) PB173/02 20. 12. 2011 3/8 Firmware • Binární kód v zařízení • Nahrává jej (většinou) ovladač API • linux/firmware.h,struct firmware • request.firmware(const struct firmware **fw, const char *name, struct device *device) • f w - návratová hodnota • name-jméno souboru • release.firmware struct firmware { size.t size ; const u8 *data; };"' J. Slabý (ITI) PB173/02 20. 12. 2011 4/8 Úkol Nahrátí firmware O Zkopírujte pb173/13/fw/firmware_*.bin do /lib/firmware O Nahrajte firmware v ovladači • V závislosti na architektuře (např. makro config_64bit) O Zkopírujte data do spustitelné paměti • __vmalloc + page_kernel_exec O V cyklu pro 0... 100 • Zavolejte 0. offset alokované paměti • Prototyp: unsigned int (*) (unsigned int) o Vypište návratovou hodnotu O Zjistěte, co firmware dělá J. Slabý (ITI) PB173/02 20. 12. 2011 5/8 Firmware v ASM $ ob j dump -D -b binary -m i386 0 31 CO xor %eax,%eax 2 83 ff Od cmp $0xd,%edi 5 77 14 ja 0x1b 7 83 ff 01 cmp $0x1 ,%edi a bO 01 mov $0x1,%al c 76 Od jbe 0x1b e 66 90 xchg %ax,%ax 10 Of af c7 imul %edi,%eax 13 83 ef 01 sub $0x1 ,%edi 16 83 ff 01 cmp $0x1 ,%edi 19 75 f5 jne 0x10 1b f3 c3 repz retq -M x86-64 firmware_64.bin ; eax — ret val ; edi — param 0 ; nop ; "return eax" J. Slabý (ITI) PB173/02 20. 12. 2011 6/8 Část II Analýza OOPS J. Slabý (ITI) PB173/02 20. 12. 2011 7/8 Společný úkol Analýza pádů O Modul v pb173/13/oops 20. 12. 2011 8/8