@isopodlabs/binary_libs 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,144 @@
1
+ import * as binary from '@isopodlabs/binary';
2
+ declare const DOS_HEADER: {
3
+ magic: binary.TypeT<number>;
4
+ cblp: binary.TypeT<number>;
5
+ cp: binary.TypeT<number>;
6
+ crlc: binary.TypeT<number>;
7
+ cparhdr: binary.TypeT<number>;
8
+ minalloc: binary.TypeT<number>;
9
+ maxalloc: binary.TypeT<binary.hex<number | bigint>>;
10
+ ss: binary.TypeT<number>;
11
+ sp: binary.TypeT<number>;
12
+ csum: binary.TypeT<number>;
13
+ ip: binary.TypeT<number>;
14
+ cs: binary.TypeT<number>;
15
+ lfarlc: binary.TypeT<number>;
16
+ ovno: binary.TypeT<number>;
17
+ };
18
+ declare const EXE_HEADER: {
19
+ res: binary.TypeT<number[]>;
20
+ oemid: binary.TypeT<number>;
21
+ oeminfo: binary.TypeT<number>;
22
+ res2: binary.TypeT<number[]>;
23
+ lfanew: binary.TypeT<number>;
24
+ };
25
+ export declare class pe_stream extends binary.stream {
26
+ pe: PE;
27
+ constructor(pe: PE, data: Uint8Array);
28
+ get_rva(): Uint8Array | undefined;
29
+ }
30
+ declare const Section_base: (new (s: binary._stream) => {
31
+ Name: string;
32
+ VirtualSize: number;
33
+ VirtualAddress: binary.hex<number | bigint>;
34
+ SizeOfRawData: number;
35
+ PointerToRawData: binary.hex<number | bigint>;
36
+ PointerToRelocations: binary.hex<number | bigint>;
37
+ PointerToLinenumbers: binary.hex<number | bigint>;
38
+ NumberOfRelocations: number;
39
+ NumberOfLinenumbers: number;
40
+ Characteristics: Record<string, bigint | boolean> | Record<string, number | boolean>;
41
+ }) & {
42
+ get: <X extends abstract new (...args: any) => any>(this: X, s: binary._stream) => InstanceType<X>;
43
+ };
44
+ declare class Section extends Section_base {
45
+ data?: binary.MappedMemory;
46
+ constructor(r: binary.stream);
47
+ get flags(): number;
48
+ }
49
+ interface DirectoryInfo {
50
+ read?: (pe: PE, data: binary.MappedMemory) => any;
51
+ }
52
+ export declare const DIRECTORIES: Record<string, DirectoryInfo>;
53
+ export declare const DATA_DIRECTORY: {
54
+ VirtualAddress: binary.TypeT<number>;
55
+ Size: binary.TypeT<number>;
56
+ };
57
+ type Directory = binary.ReadType<typeof DATA_DIRECTORY>;
58
+ declare const OPTIONAL_HEADER: {
59
+ Magic: binary.TypeT<string>;
60
+ MajorLinkerVersion: binary.TypeT<number>;
61
+ MinorLinkerVersion: binary.TypeT<number>;
62
+ SizeOfCode: binary.TypeT<number>;
63
+ SizeOfInitializedData: binary.TypeT<number>;
64
+ SizeOfUninitializedData: binary.TypeT<number>;
65
+ AddressOfEntryPoint: binary.TypeT<binary.hex<number | bigint>>;
66
+ BaseOfCode: binary.TypeT<binary.hex<number | bigint>>;
67
+ };
68
+ declare const OPTIONAL_HEADER32: {
69
+ BaseOfData: binary.TypeT<binary.hex<number | bigint>>;
70
+ ImageBase: binary.TypeT<binary.hex<number | bigint>>;
71
+ SectionAlignment: binary.TypeT<number>;
72
+ FileAlignment: binary.TypeT<number>;
73
+ MajorOperatingSystemVersion: binary.TypeT<number>;
74
+ MinorOperatingSystemVersion: binary.TypeT<number>;
75
+ MajorImageVersion: binary.TypeT<number>;
76
+ MinorImageVersion: binary.TypeT<number>;
77
+ MajorSubsystemVersion: binary.TypeT<number>;
78
+ MinorSubsystemVersion: binary.TypeT<number>;
79
+ Win32VersionValue: binary.TypeT<number>;
80
+ SizeOfImage: binary.TypeT<number>;
81
+ SizeOfHeaders: binary.TypeT<number>;
82
+ CheckSum: binary.TypeT<number>;
83
+ Subsystem: binary.TypeT<number>;
84
+ DllCharacteristics: binary.TypeT<Record<string, bigint | boolean> | Record<string, number | boolean>>;
85
+ SizeOfStackReserve: binary.TypeT<number>;
86
+ SizeOfStackCommit: binary.TypeT<number>;
87
+ SizeOfHeapReserve: binary.TypeT<number>;
88
+ SizeOfHeapCommit: binary.TypeT<number>;
89
+ LoaderFlags: binary.TypeT<number>;
90
+ DataDirectory: binary.TypeT<Record<string, {
91
+ VirtualAddress: number;
92
+ Size: number;
93
+ }>>;
94
+ };
95
+ declare const OPTIONAL_HEADER64: {
96
+ ImageBase: binary.TypeT<binary.hex<number | bigint>>;
97
+ SectionAlignment: binary.TypeT<number>;
98
+ FileAlignment: binary.TypeT<number>;
99
+ MajorOperatingSystemVersion: binary.TypeT<number>;
100
+ MinorOperatingSystemVersion: binary.TypeT<number>;
101
+ MajorImageVersion: binary.TypeT<number>;
102
+ MinorImageVersion: binary.TypeT<number>;
103
+ MajorSubsystemVersion: binary.TypeT<number>;
104
+ MinorSubsystemVersion: binary.TypeT<number>;
105
+ Win32VersionValue: binary.TypeT<number>;
106
+ SizeOfImage: binary.TypeT<number>;
107
+ SizeOfHeaders: binary.TypeT<number>;
108
+ CheckSum: binary.TypeT<number>;
109
+ Subsystem: binary.TypeT<number>;
110
+ DllCharacteristics: binary.TypeT<Record<string, bigint | boolean> | Record<string, number | boolean>>;
111
+ SizeOfStackReserve: binary.TypeT<bigint>;
112
+ SizeOfStackCommit: binary.TypeT<bigint>;
113
+ SizeOfHeapReserve: binary.TypeT<bigint>;
114
+ SizeOfHeapCommit: binary.TypeT<bigint>;
115
+ LoaderFlags: binary.TypeT<number>;
116
+ DataDirectory: binary.TypeT<Record<string, {
117
+ VirtualAddress: number;
118
+ Size: number;
119
+ }>>;
120
+ };
121
+ export declare class PE {
122
+ private data;
123
+ header: binary.ReadType<typeof DOS_HEADER> & binary.ReadType<typeof EXE_HEADER>;
124
+ opt?: binary.ReadType<typeof OPTIONAL_HEADER> & (binary.ReadType<typeof OPTIONAL_HEADER32> | binary.ReadType<typeof OPTIONAL_HEADER64>);
125
+ sections: Section[];
126
+ static check(data: Uint8Array): boolean;
127
+ constructor(data: Uint8Array);
128
+ get directories(): Record<string, {
129
+ VirtualAddress: number;
130
+ Size: number;
131
+ }> | undefined;
132
+ FindSectionRVA(rva: number): Section | undefined;
133
+ FindSectionRaw(addr: number): Section | undefined;
134
+ GetDataRVA(rva: number, size?: number): binary.MappedMemory | undefined;
135
+ GetDataRaw(addr: number, size: number): Uint8Array | undefined;
136
+ GetDataDir(dir: Directory): binary.MappedMemory | undefined;
137
+ ReadDirectory(name: string): any;
138
+ }
139
+ export declare function ReadExports(file: pe_stream): (string | number | binary.MappedMemory | undefined)[][];
140
+ export declare class DLLImports extends Array {
141
+ }
142
+ export declare function ReadImports(file: pe_stream): [string, any][];
143
+ export declare function ReadResourceDirectory(file: binary.stream, data: binary.MappedMemory, type?: number): Record<string, any>;
144
+ export {};
package/dist/pe.d.ts CHANGED
@@ -16,18 +16,7 @@ declare const Section_base: (new (s: binary._stream) => {
16
16
  NumberOfLinenumbers: number;
17
17
  Characteristics: Record<string, bigint | boolean> | Record<string, number | boolean>;
18
18
  }) & {
19
- get: (s: binary._stream) => {
20
- Name: string;
21
- VirtualSize: number;
22
- VirtualAddress: binary.hex<number | bigint>;
23
- SizeOfRawData: number;
24
- PointerToRawData: binary.hex<number | bigint>;
25
- PointerToRelocations: binary.hex<number | bigint>;
26
- PointerToLinenumbers: binary.hex<number | bigint>;
27
- NumberOfRelocations: number;
28
- NumberOfLinenumbers: number;
29
- Characteristics: Record<string, bigint | boolean> | Record<string, number | boolean>;
30
- };
19
+ get: <X extends abstract new (...args: any) => any>(this: X, s: binary._stream) => InstanceType<X>;
31
20
  };
32
21
  declare class Section extends Section_base {
33
22
  data?: binary.MappedMemory;
@@ -47,7 +36,7 @@ type Directory = {
47
36
  Size: number;
48
37
  };
49
38
  export declare class PE {
50
- private data;
39
+ static check(data: Uint8Array): boolean;
51
40
  header: {
52
41
  magic: number;
53
42
  cblp: number;
@@ -132,20 +121,16 @@ export declare class PE {
132
121
  }>;
133
122
  });
134
123
  sections: Section[];
135
- static check(data: Uint8Array): boolean;
136
124
  constructor(data: Uint8Array);
137
125
  get directories(): Record<string, {
138
126
  VirtualAddress: number;
139
127
  Size: number;
140
- } & {}> | undefined;
128
+ }> | undefined;
141
129
  FindSectionRVA(rva: number): Section | undefined;
142
130
  FindSectionRaw(addr: number): Section | undefined;
143
131
  GetDataRVA(rva: number, size?: number): binary.MappedMemory | undefined;
144
132
  GetDataRaw(addr: number, size: number): Uint8Array | undefined;
145
- GetDataDir(dir: {
146
- VirtualAddress: number;
147
- Size: number;
148
- }): binary.MappedMemory | undefined;
133
+ GetDataDir(dir: Directory): binary.MappedMemory | undefined;
149
134
  ReadDirectory(name: string): any;
150
135
  }
151
136
  export declare function ReadExports(file: pe_stream): (string | number | binary.MappedMemory | undefined)[][];
package/dist/pe.js CHANGED
@@ -271,15 +271,13 @@ const OPTIONAL_HEADER64 = {
271
271
  DataDirectory: binary.objectWithNames(binary.ArrayType(uint32, exports.DATA_DIRECTORY), binary.names(Object.keys(exports.DIRECTORIES))),
272
272
  };
273
273
  class PE {
274
- data;
275
- header;
276
- opt;
277
- sections;
278
274
  static check(data) {
279
275
  return uint16.get(new binary.stream(data)) === binary.utils.stringCode("MZ");
280
276
  }
277
+ header;
278
+ opt;
279
+ sections;
281
280
  constructor(data) {
282
- this.data = data;
283
281
  const file = new binary.stream(data);
284
282
  this.header = binary.read(file, { ...DOS_HEADER, ...EXE_HEADER });
285
283
  file.seek(this.header.lfanew);
@@ -438,7 +436,7 @@ const RESOURCE_DIRECTORY = {
438
436
  MinorVersion: uint16,
439
437
  NumberOfNamedEntries: uint16,
440
438
  NumberOfIdEntries: uint16,
441
- entries: binary.ArrayType(obj => obj.NumberOfNamedEntries + obj.NumberOfIdEntries, {
439
+ entries: binary.ArrayType(s => s.obj.NumberOfNamedEntries + s.obj.NumberOfIdEntries, {
442
440
  u0: uint32,
443
441
  u1: uint32,
444
442
  })
package/package.json CHANGED
@@ -16,7 +16,8 @@
16
16
  "scripts": {
17
17
  "build": "tsc",
18
18
  "lint": "eslint \"src/**/*.ts\"",
19
- "test": "echo \"No tests specified\" && exit 0"
19
+ "test": "echo \"No tests specified\" && exit 0",
20
+ "patch": "ts-patch install"
20
21
  },
21
22
  "keywords": [
22
23
  "binary",
@@ -40,5 +41,5 @@
40
41
  "dependencies": {
41
42
  "@isopodlabs/binary": "^1.0.3"
42
43
  },
43
- "version": "0.1.5"
44
+ "version": "0.2.0"
44
45
  }