UNPKG

pexe

Version:

The Windows Executables Viewer

56 lines (53 loc) 1.96 kB
import DataBlock from '../binary/dataBlock' import {DataType} from '../binary/dataType' import DataSection from "../binary/dataSection"; // Описывает DOS заголовок export default class DosHeader extends DataSection { // Поля заголовка fields = { // Magic number (MZ) e_magic: new DataBlock(DataType.Word), // Bytes on last page of file e_cblp: new DataBlock(DataType.Word), // Pages in file e_cp: new DataBlock(DataType.Word), // Relocations e_crlc: new DataBlock(DataType.Word), // Size of header in paragraphs e_cparhdr: new DataBlock(DataType.Word), // Minimum extra paragraphs needed e_minalloc: new DataBlock(DataType.Word), // Maximum extra paragraphs needed e_maxalloc: new DataBlock(DataType.Word), // Initial (relative) SS value e_ss: new DataBlock(DataType.Word), // Initial SP value e_sp: new DataBlock(DataType.Word), // Checksum e_csum: new DataBlock(DataType.Word), // Initial IP value e_ip: new DataBlock(DataType.Word), // Initial CS value e_cs: new DataBlock(DataType.Word), // File address of relocation table e_lfarlc: new DataBlock(DataType.Word), // Overlay number e_ovno: new DataBlock(DataType.Word), // Reserved e_res: new DataBlock(DataType.Word * 4), // OEM identifier e_oemid: new DataBlock(DataType.Word), // OEM information; e_oemid specific e_oeminfo: new DataBlock(DataType.Word), // Reserved e_res2: new DataBlock(DataType.Word * 10), // File address of new exe header //TODO: Не должен выходить за пределы размера файла e_lfanew: new DataBlock(DataType.DWord), } // Проверят, что это валидный DOS заголовок isValid() { if (this.fields.e_magic.toString() !== 'MZ') return false if (this.fields.e_lfanew.toNumber() < 64) return false return true } }