123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import type NtExecutable from './NtExecutable.js';
- import type { ImageSectionHeader } from './format/ImageSectionHeaderArray.js';
- import type ResourceEntry from './type/ResourceEntry.js';
- /** Manages resource data for NtExecutable */
- export default class NtExecutableResource {
- /** The timestamp for resource */
- dateTime: number;
- /** The major version data for resource */
- majorVersion: number;
- /** The minor version data for resource */
- minorVersion: number;
- /** Resource entries */
- entries: ResourceEntry[];
- /**
- * The section data header of resource data (used by outputResource method).
- * This instance will be null if the base executable does not contain resource data.
- * You can override this field before calling outputResource method.
- * (Note that the addresses and sizes are ignored for output)
- */
- sectionDataHeader: ImageSectionHeader | null;
- private originalSize;
- private constructor();
- private parse;
- /**
- * Parses resource data for `NtExecutable`.
- * This function returns valid instance even if
- * the executable does not have resource data.
- * @param exe `NtExecutable` instance
- * @param ignoreUnparsableData (default: false) specify true if skipping 'unparsable' (e.g. unusual format) data.
- * When true, the resource data may break on write operation.
- */
- static from(exe: NtExecutable, ignoreUnparsableData?: boolean): NtExecutableResource;
- /**
- * Add or replace the resource entry.
- * This method replaces the entry only if there is an entry with `type`, `id` and `lang` equal.
- */
- replaceResourceEntry(entry: ResourceEntry): void;
- /**
- * Returns all resource entries, which has specified type and id, as UTF-8 string data.
- * @param type Resource type
- * @param id Resource id
- * @returns an array of lang and value pair (tuple)
- */
- getResourceEntriesAsString(type: string | number, id: string | number): Array<[lang: string | number, value: string]>;
- /**
- * Add or replace the resource entry with UTF-8 string data.
- * This method is a wrapper of {@link NtExecutableResource.replaceResourceEntry}.
- */
- replaceResourceEntryFromString(type: string | number, id: string | number, lang: string | number, value: string): void;
- /**
- * Removes resource entries which has specified type and id.
- */
- removeResourceEntry(type: string | number, id: string | number, lang?: string | number): void;
- /**
- * Generates resource data binary for NtExecutable (not for .res file)
- * @param virtualAddress The virtual address for the section
- * @param alignment File alignment value of executable
- * @param noGrow Set true to disallow growing resource section (throw errors if data exceeds)
- * @param allowShrink Set true to allow shrinking resource section (if the data size is less than original)
- */
- generateResourceData(virtualAddress: number, alignment: number, noGrow?: boolean, allowShrink?: boolean): {
- bin: ArrayBuffer;
- rawSize: number;
- dataOffset: number;
- descEntryOffset: number;
- descEntryCount: number;
- };
- /**
- * Writes holding resource data to specified NtExecutable instance.
- * @param exeDest An NtExecutable instance to write resource section to
- * @param noGrow Set true to disallow growing resource section (throw errors if data exceeds)
- * @param allowShrink Set true to allow shrinking resource section (if the data size is less than original)
- */
- outputResource(exeDest: NtExecutable, noGrow?: boolean, allowShrink?: boolean): void;
- }
|