{\r\n public render(): JSX.Element | null {\r\n const { pageID } = this.props;\r\n\r\n if (!pageID) {\r\n return null;\r\n } else {\r\n const target: W.NavTarget = {\r\n pageID,\r\n title: W.KnownTitle.TOP\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport const TopLink = ReactRedux.connect(mapStateToProps)(TopLinkClass);","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nexport function renderSimpleStruct(s: W.SimpleStruct): JSX.Element {\r\n return (\r\n \r\n {renderStructTitle(s)}\r\n \r\n {s.items && s.items.map((v, i) => renderStructItemRow(v, i.toString()))}\r\n \r\n
\r\n );\r\n}\r\n\r\nexport function renderGroupedStruct(s: W.GroupedStruct): JSX.Element {\r\n return (\r\n \r\n {renderStructTitle(s)}\r\n \r\n {s.groups && s.groups.map((gv, gi) => {\r\n return [\r\n renderStructGroupTitleRow(gv.title, gi.toString())\r\n ].concat(gv.items && gv.items.map((v, i) =>\r\n renderStructItemRow(v, `${gi}.${i}`)) || []);\r\n })}\r\n \r\n
\r\n );\r\n}\r\n\r\nfunction renderStructTitle(s: W.StructData): JSX.Element {\r\n return {s.title} ;\r\n}\r\n\r\nfunction renderStructItemRow(item: W.StructItem, key: string): JSX.Element {\r\n const { offset, size, rawData, name, value, descriptions } = item;\r\n return (\r\n \r\n {offset} \r\n {size} \r\n {rawData.map((v, i) => {v}
)} \r\n {name} \r\n {value} \r\n \r\n \r\n );\r\n}\r\n\r\nfunction renderStructGroupTitleRow(title: string, key: string): JSX.Element {\r\n return ({title} );\r\n}\r\n\r\nclass StructTable extends React.Component {\r\n public render(): JSX.Element {\r\n return (\r\n \r\n \r\n \r\n Offset \r\n Size \r\n Raw Data \r\n Name \r\n Value \r\n Description \r\n \r\n \r\n \r\n {this.props.children}\r\n \r\n
\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as A from \"../store/actions\";\r\nimport * as S from \"../store/state\";\r\n\r\nexport interface NavLinkProps {\r\n target: W.NavTarget;\r\n extraClass?: string;\r\n}\r\n\r\ninterface ConnectedEvents {\r\n onClick: () => void;\r\n}\r\n\r\nfunction mapDispatchToEvents(dispatch: ReactRedux.Dispatch, ownProps: NavLinkProps): ConnectedEvents {\r\n return {\r\n onClick: () => { dispatch(A.createOpenNavAction(ownProps.target)); }\r\n };\r\n}\r\n\r\nclass NavLinkClass extends React.Component {\r\n public render(): JSX.Element {\r\n const { target, extraClass, onClick } = this.props;\r\n const { title } = target;\r\n\r\n let className = \"nav\";\r\n if (extraClass) {\r\n className += \" \" + extraClass;\r\n }\r\n\r\n return (\r\n {title} \r\n );\r\n }\r\n}\r\n\r\nexport const NavLink = ReactRedux.connect(null, mapDispatchToEvents)(NavLinkClass);","module.exports = Redux;","/// \r\n\r\nexport function createReqOpenFileMessage(file: File): W.ReqOpenFileMessage {\r\n return {\r\n type: W.WorkerMessageType.REQ_OPEN_FILE,\r\n file\r\n };\r\n}\r\n\r\nexport function createReqOpenNavMessage(target: W.NavTarget): W.ReqOpenNavMessage {\r\n return {\r\n type: W.WorkerMessageType.REQ_OPEN_NAV,\r\n target\r\n };\r\n}","/// \r\n\r\nimport * as Redux from \"redux\";\r\n\r\nimport * as A from \"./store/actions\";\r\nimport * as S from \"./store/state\";\r\nimport * as WM from \"./worker-message\";\r\n\r\nexport const workerClientMiddleware = ((store: Redux.MiddlewareAPI) => (next: Redux.Dispatch) => (action: Redux.Action) => {\r\n switch (action.type) {\r\n case A.ActionType.OPEN_FILE: {\r\n const { file } = action as A.OpenFileAction;\r\n _worker.postMessage(WM.createReqOpenFileMessage(file));\r\n break;\r\n }\r\n\r\n case A.ActionType.OPEN_NAV: {\r\n const { target } = action as A.OpenNavAction;\r\n const { pageData } = store.getState();\r\n const { pageID, elemID } = target;\r\n if (!pageData || pageData.nav.pageID != pageID) {\r\n _worker.postMessage(WM.createReqOpenNavMessage(target));\r\n }\r\n break;\r\n }\r\n }\r\n return next(action);\r\n}) as Redux.Middleware;\r\n\r\nexport function initWorkerClient(store: Redux.Store): void {\r\n _store = store;\r\n _worker = new Worker(\"worker.js\");\r\n _worker.onmessage = ev => handleMessage(ev.data);\r\n}\r\n\r\nfunction handleMessage(msg: W.WorkerMessage): void {\r\n switch (msg.type) {\r\n case W.WorkerMessageType.RES_NAV_DATA:\r\n const { navList } = msg;\r\n _store.dispatch(A.createSetNavListAction(navList));\r\n break;\r\n\r\n case W.WorkerMessageType.RES_PAGE_DATA:\r\n const { pageData } = msg;\r\n _store.dispatch(A.createSetPageDataAction(pageData));\r\n break;\r\n\r\n case W.WorkerMessageType.RES_PE_PROPS:\r\n const { is32Bit, isManaged } = msg;\r\n _store.dispatch(A.createSetPEPropsAction(is32Bit, isManaged));\r\n break;\r\n\r\n case W.WorkerMessageType.RES_PE_ERROR:\r\n break;\r\n }\r\n}\r\n\r\nlet _worker: Worker;\r\nlet _store: Redux.Store;\r\n","import * as Redux from \"redux\";\r\n\r\nimport * as A from \"./store/actions\";\r\nimport * as S from \"./store/state\";\r\n\r\nexport const actionListenerMiddleware = ((store: Redux.MiddlewareAPI) => (next: Redux.Dispatch) => (action: Redux.Action) => {\r\n switch (action.type) {\r\n case A.ActionType.OPEN_FILE: {\r\n const { appInfo } = store.getState();\r\n const { file } = action as A.OpenFileAction;\r\n document.title = `${file.name} - ${appInfo.title}`\r\n break;\r\n }\r\n\r\n case A.ActionType.OPEN_NAV: {\r\n const { pageData } = store.getState();\r\n const { target } = action as A.OpenNavAction;\r\n const { pageID, elemID } = target;\r\n if (pageData && pageData.nav.pageID === pageID) {\r\n scrollElement(elemID);\r\n }\r\n break;\r\n }\r\n\r\n case A.ActionType.SET_PAGE_DATA: {\r\n const { data } = action as A.SetPageDataAction;\r\n scrollElement(data.nav.elemID);\r\n break;\r\n }\r\n }\r\n return next(action);\r\n}) as Redux.Middleware;\r\n\r\nfunction scrollElement(elemID?: string): void {\r\n setTimeout(() => {\r\n if (elemID) {\r\n const elem = document.getElementById(elemID);\r\n if (elem) {\r\n elem.scrollIntoView();\r\n }\r\n } else {\r\n const elem = document.getElementById(\"app-content\");\r\n if (elem) {\r\n elem.scrollTop = 0;\r\n }\r\n }\r\n }, 1);\r\n}","import * as React from \"react\";\nimport * as ReactRedux from \"react-redux\";\n\nimport * as S from \"../store/state\";\n\ninterface ConnectedProps {\n appInfo: S.AppInfo;\n}\n\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\n const { appInfo } = state;\n return {\n appInfo\n };\n}\n\nclass PageFooterClass extends React.Component {\n public render(): JSX.Element {\n const { appInfo } = this.props;\n const { title, version, author, homepage, bugsUrl, releaseNotesUrl, buildTimeLocal, year } = appInfo;\n\n return (\n \n )\n }\n}\n\nexport const PageFooter = ReactRedux.connect(mapStateToProps)(PageFooterClass);\n","import * as React from \"react\";\nimport * as ReactRedux from \"react-redux\";\n\nimport { renderSimpleStruct, renderGroupedStruct } from \"./struct-data\";\nimport { TopLink } from \"./top-link\";\n\ninterface MetadataHeadersPageProps {\n data: W.MetadataHeadersPageData;\n}\n\nexport class MetadataHeadersPage extends React.Component {\n public render(): JSX.Element | null {\n const { data } = this.props;\n\n return (\n \n {renderSimpleStruct(data.cliHeader)}\n \n {this.renderMetadataRoot()}\n {this.renderStreamHeaders()}\n \n );\n }\n\n public renderMetadataRoot(): JSX.Element | undefined {\n const { data } = this.props;\n return data.metadataRoot && (\n \n {renderSimpleStruct(data.metadataRoot)}\n \n \n );\n }\n\n public renderStreamHeaders(): JSX.Element | undefined {\n const { data } = this.props;\n return data.streamHeaders && (\n \n {renderGroupedStruct(data.streamHeaders)}\n \n \n );\n }\n}\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport { renderSimpleStruct, renderGroupedStruct } from \"./struct-data\";\r\nimport { TopLink } from \"./top-link\";\r\n\r\ninterface HeadersPageProps {\r\n data: W.HeadersPageData;\r\n}\r\n\r\nexport class HeadersPage extends React.Component {\r\n public render(): JSX.Element | null {\r\n const { data } = this.props;\r\n\r\n return (\r\n \r\n {renderSimpleStruct(data.dosHeader)}\r\n \r\n {renderSimpleStruct(data.peSignature)}\r\n \r\n {renderSimpleStruct(data.fileHeader)}\r\n \r\n {renderGroupedStruct(data.optionalHeader)}\r\n \r\n {renderGroupedStruct(data.dataDirectories)}\r\n \r\n {renderGroupedStruct(data.sectionHeaders)}\r\n \r\n \r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as A from \"../store/actions\";\r\nimport * as S from \"../store/state\";\r\n\r\ninterface ConnectedEvents {\r\n onFileSelected: (file: File) => void;\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: ReactRedux.Dispatch): ConnectedEvents {\r\n return {\r\n onFileSelected: (file) => dispatch(A.createOpenFileAction(file))\r\n };\r\n}\r\n\r\nclass OpenFilePageClass extends React.Component {\r\n public constructor(props: any) {\r\n super(props);\r\n this.onFileChange = this.onFileChange.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n \r\n Select a file:
\r\n
\r\n No data would be uploaded, everything is parsed locally.
\r\n \r\n )\r\n }\r\n\r\n private onFileChange(ev: React.ChangeEvent): void {\r\n const { onFileSelected } = this.props;\r\n const fileList = ev.target.files;\r\n if (fileList && fileList.length > 0) {\r\n onFileSelected(fileList[0]);\r\n }\r\n }\r\n}\r\n\r\nexport const OpenFilePage = ReactRedux.connect(null, mapDispatchToProps)(OpenFilePageClass);\r\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as S from \"../store/state\";\r\n\r\nimport { OpenFilePage } from \"./open-file-page\";\r\nimport { HeadersPage } from \"./headers-page\";\r\nimport { MetadataHeadersPage } from \"./md-headers-page\";\r\n\r\ninterface ConnectedProps {\r\n pageData?: W.PageData;\r\n}\r\n\r\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\r\n const { pageData } = state;\r\n\r\n return {\r\n pageData\r\n };\r\n}\r\n\r\nclass PageContentClass extends React.Component {\r\n public render(): JSX.Element {\r\n return (\r\n \r\n {this.renderContent()}\r\n \r\n )\r\n }\r\n\r\n private renderContent(): JSX.Element {\r\n const { pageData } = this.props;\r\n\r\n if (pageData == null) {\r\n return ;\r\n }\r\n\r\n switch (pageData.nav.pageID) {\r\n case W.PageID.HEADERS:\r\n return ;\r\n case W.PageID.MD_HEADERS:\r\n return ;\r\n default:\r\n return Page not found.
;\r\n }\r\n }\r\n}\r\n\r\nexport const PageContent = ReactRedux.connect(mapStateToProps)(PageContentClass);\r\n","import * as React from \"react\";\nimport * as ReactRedux from \"react-redux\";\n\nimport * as S from \"../store/state\";\nimport { NavLink } from \"./nav-link\";\n\ninterface ConnectedProps {\n fileInfo?: S.FileInfo;\n navList: W.NavData[];\n}\n\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\n const { fileInfo, navList } = state;\n\n return {\n fileInfo,\n navList\n };\n}\n\nclass PageHeaderClass extends React.Component {\n public render(): JSX.Element {\n const { fileInfo } = this.props;\n\n return (\n \n )\n }\n\n private renderWelcome(): JSX.Element {\n return (\n \n
Welcome to PE Viewer. \n \n );\n }\n\n private renderFileInfo(fileInfo: S.FileInfo): JSX.Element {\n const { name, size, is32Bit, isManaged } = fileInfo;\n\n return (\n \n {this.renderTitleLine(fileInfo)}\n {this.renderNavList()}\n \n );\n }\n\n private renderTitleLine(fileInfo: S.FileInfo): JSX.Element {\n const { name, size, is32Bit, isManaged } = fileInfo;\n\n return (\n \n
{name} \n
\n {size.toLocaleString()} bytes. \n\n {is32Bit != null && (\n \n | \n {is32Bit ? \"32-bit\" : \"64-bit\"} \n \n )}\n\n {isManaged != null && (\n \n | \n {isManaged ? \"managed\" : \"unmanaged\"} \n \n )}\n
\n
\n );\n }\n\n private renderNavList(): JSX.Element | null {\n const { navList } = this.props;\n if (!navList) {\n return null;\n }\n\n return (\n \n
\n \n {navList.map((v, i) => (\n \n \n \n {v.children && v.children.map((cv, ci) => (\n \n ))}\n \n \n ))}\n \n
\n
\n );\n }\n}\n\nexport const PageHeader = ReactRedux.connect(mapStateToProps)(PageHeaderClass);","import * as React from \"react\";\n\nimport { PageHeader } from \"./page-header\";\nimport { PageContent } from \"./page-content\";\nimport { PageFooter } from \"./page-footer\";\n\nexport class App extends React.Component {\n public render(): JSX.Element {\n return (\n \n \n \n \n \n )\n }\n}","import * as Redux from \"redux\";\r\nimport * as A from \"./actions\";\r\nimport * as S from \"./state\";\r\n\r\nexport const appReducer = Redux.combineReducers({\r\n appInfo,\r\n fileInfo,\r\n pageData,\r\n navList,\r\n}) as Redux.Reducer;\r\n\r\nfunction appInfo(state: S.AppInfo | null = null, action: Redux.Action): S.AppInfo | null {\r\n return state;\r\n}\r\n\r\nfunction fileInfo(state: S.FileInfo | null = null, action: Redux.Action): S.FileInfo | null {\r\n switch (action.type) {\r\n case A.ActionType.OPEN_FILE: {\r\n const { file } = action as A.OpenFileAction;\r\n const { name, size } = file;\r\n return Object.assign({}, state, { name, size });\r\n }\r\n\r\n case A.ActionType.SET_PE_PROPS: {\r\n const { is32Bit, isManaged } = action as A.SetPEPropsAction;\r\n return Object.assign({}, state, { is32Bit, isManaged });\r\n }\r\n\r\n default: return state;\r\n }\r\n}\r\n\r\nfunction pageData(state: W.PageData | null = null, action: Redux.Action): W.PageData | null {\r\n switch (action.type) {\r\n case A.ActionType.SET_PAGE_DATA: {\r\n const { data } = action as A.SetPageDataAction;\r\n return data;\r\n }\r\n\r\n default: return state;\r\n }\r\n}\r\n\r\nfunction navList(state: W.NavData[] = [], action: Redux.Action): W.NavData[] {\r\n switch (action.type) {\r\n case A.ActionType.SET_NAV_LIST: {\r\n const { navList } = action as A.SetNavListAction;\r\n return navList;\r\n }\r\n\r\n default: return state;\r\n }\r\n}","module.exports = ReactDOM;","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport * as Redux from \"redux\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as packageJson from \"package.json\";\r\nimport * as S from \"./store/state\";\r\nimport * as R from \"./store/reducers\";\r\nimport { App } from \"./components/app\";\r\nimport { actionListenerMiddleware } from \"./action-listener\";\r\nimport { workerClientMiddleware, initWorkerClient } from \"./worker-client\";\r\n\r\nconst appInfo: S.AppInfo = {\r\n title: packageJson.title,\r\n version: packageJson.version,\r\n author: packageJson.author,\r\n homepage: packageJson.homepage,\r\n bugsUrl: packageJson.bugs_url,\r\n releaseNotesUrl: packageJson.release_notes,\r\n buildTimeLocal: new Date(Date.parse(packageJson.build_time)).toLocaleString(),\r\n year: new Date().getFullYear().toString(),\r\n};\r\n\r\nconst defaultState: S.AppState = {\r\n appInfo,\r\n navList: []\r\n};\r\n\r\ndocument.title = `${appInfo.title}`;\r\n\r\nconst _w = window as any;\r\nconst composeEnhancers = _w.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || Redux.compose;\r\nconst store = Redux.createStore(R.appReducer, defaultState, composeEnhancers(\r\n Redux.applyMiddleware(\r\n actionListenerMiddleware,\r\n workerClientMiddleware)\r\n));\r\n\r\ninitWorkerClient(store);\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"app\")\r\n);\r\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/worker.js.map b/worker.js.map
index 403faf1..4c0548d 100644
--- a/worker.js.map
+++ b/worker.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/worker/page-data/formatter.ts","webpack:///./src/worker/pe/image-flags.ts","webpack:///./src/worker/page-data/nav-data.ts","webpack:///./src/worker/page-data/metadata-headers.ts","webpack:///./src/worker/page-data/headers.ts","webpack:///./src/worker/page-data/generator.ts","webpack:///./src/worker/pe/error.ts","webpack:///./src/worker/pe/utils.ts","webpack:///./src/worker/pe/loader.ts","webpack:///./src/worker/pe/image.ts","webpack:///./src/worker/message.ts","webpack:///./src/worker/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","formatU1RawHex","padZeroLeft","toString","toUpperCase","formatU2RawHex","formatU4RawHex","formatU1Hex","formatU2Hex","formatU4Hex","formatHexDec","formatBytes","bytes","lineWidth","lines","start","length","line","Array","from","subarray","map","b","join","push","str","len","repeat","formatUIntField","f","sz","showDec","hex","offset","_offset","size","_size","rawData","data","formatDec","v","toLocaleString","formatStructTitle","title","formatU1Field","formatU2Field","formatU4Field","formatU8Field","high","low","formatBytesField","formatStringField","IMAGE_DOS_SIGNATURE","IMAGE_NT_SIGNATURE","IMAGE_NT_OPTIONAL_HDR32_MAGIC","IMAGE_NT_OPTIONAL_HDR64_MAGIC","ImageFile","ImageFileMachine","ImageSubsystem","ImageDllCharacteristics","ImageDirectoryEntry","IMAGE_NUMBEROF_DIRECTORY_ENTRIES","ImageSection","ComImageFlags","MetadataSignature","generateNavList","pe","pageID","navList","target","children","elemID","navMD","isManaged","hasMetadata","generateMDHeadersNavData","FM","generateMetadataHeadersPageData","nav","cliHeader","h","getCliHeader","items","cb","MajorRuntimeVersion","MinorRuntimeVersion","MetaData","VirtualAddress","Size","Flags","EntryPointToken","Resources","StrongNameSignature","CodeManagerTable","VTableFixups","ExportAddressTableJumps","ManagedNativeHeader","generateCliHeader","metadataRoot","getMetadataRoot","Signature","MajorVersion","MinorVersion","Reserved","VersionLength","VersionString","VersionPadding","Streams","generateMetadataRoot","streamHeaders","getMetadataStreamHeaders","groups","Name","Offset","Padding","generateMetadataStreamHeader","F","generateHeadersPageData","dosHeader","getDosHeader","e_magic","e_cblp","e_cp","e_crlc","e_cparhdr","e_minalloc","e_maxalloc","e_ss","e_sp","e_csum","e_ip","e_cs","e_lfarlc","e_ovno","e_res","e_oemid","e_oeminfo","e_res2","e_lfanew","generateDosHeader","peSignature","getPESignature","generatePESignature","fileHeader","getFileHeader","Machine","NumberOfSections","TimeDateStamp","PointerToSymbolTable","NumberOfSymbols","SizeOfOptionalHeader","Characteristics","generateFileHeader","optionalHeader","getOptionalHeader","Magic","MajorLinkerVersion","MinorLinkerVersion","SizeOfCode","SizeOfInitializedData","SizeOfUninitializedData","AddressOfEntryPoint","BaseOfCode","BaseOfData","ImageBase","SectionAlignment","FileAlignment","MajorOperatingSystemVersion","MinorOperatingSystemVersion","MajorImageVersion","MinorImageVersion","MajorSubsystemVersion","MinorSubsystemVersion","Win32VersionValue","SizeOfImage","SizeOfHeaders","CheckSum","Subsystem","DllCharacteristics","SizeOfStackReserve","SizeOfStackCommit","SizeOfHeapReserve","SizeOfHeapCommit","LoaderFlags","NumberOfRvaAndSizes","fillOptionalHeader32Fields","fillOptionalHeader64Fields","generateOptionalHeader","dataDirectories","getDataDirectories","generateDataDirectories","sectionHeaders","getSectionHeaders","VirtualSize","SizeOfRawData","PointerToRawData","PointerToRelocations","PointerToLinenumbers","NumberOfRelocations","NumberOfLinenumbers","generateSectionHeaders","headers_1","metadata_headers_1","generatePageData","PEError","_super","type","_this","this","__extends","Error","calculatePadding","dataSize","align","U","loadU1Field","getData","getU1","loadU2Field","getU2","loadU4Field","getU4","loadU8Field","loadU2EnumField","loadU4EnumField","loadFixedSizeByteArrayField","loadFixedSizeAsciiStringField","String","fromCharCode","apply","filter","loadNullTerminatedStringField","ptr","slice","Uint8Array","loadImageDataDirectory","loadU1EnumField","loadStructArrayByCount","loader","count","loadImageDosHeader","loadImageFileHeader","loadImageOptionalHeader32","loadImageOptionalHeader64","loadImageSectionHeader","loadCliHeader","loadMetadataRoot","loadMetadataStreamHeader","L","E","PEImage","buf","DataView","loadHeaders","load","check","getUint8","getUint16","getUint32","buffer","is32Bit","optHdr","dd","isDataDirectoryValid","IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR","hasManagedResources","hasStrongNameSignature","rvaToOffset","metadataStreamHeaders","mdRoot","rva","sh","getSectionHeaderByRva","offsetToRva","getSectionHeaderByOffset","byteLength","shift","createResNavDataMessage","createResPageDataMessage","pageData","createResPEPropsMessage","createResPEErrorMessage","error","M","image_1","generator_1","nav_data_1","onmessage","ev","msg","reader","FileReader","onload","result","pageDataMsg","postMessage","pePropsMsg","navMsg","ex","msg_1","message","JSON","stringify","onerror","readAsArrayBuffer","file","handleReqOpenFile","res","handleReqOpenNav"],"mappings":"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","file":"worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","import * as S from \"../pe/structures\";\r\nimport { format } from \"url\";\r\n\r\nexport function formatU1RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 2);\r\n}\r\n\r\nexport function formatU2RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 4);\r\n}\r\n\r\nexport function formatU4RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 8);\r\n}\r\n\r\nexport function formatU1Hex(d: number): string {\r\n return `${formatU1RawHex(d)}h`;\r\n}\r\n\r\nexport function formatU2Hex(d: number): string {\r\n return `${formatU2RawHex(d)}h`;\r\n}\r\n\r\nexport function formatU4Hex(d: number): string {\r\n return `${formatU4RawHex(d)}h`;\r\n}\r\n\r\nexport function formatHexDec(d: number): string {\r\n return `${d.toString(16).toUpperCase()}h (${d})`;\r\n}\r\n\r\nexport function formatBytes(bytes: Uint8Array, lineWidth: number = 16): string[] {\r\n let lines: string[] = [];\r\n for (let start = 0; start < bytes.length; start += lineWidth) {\r\n const line = Array.from(bytes.subarray(start, start + lineWidth))\r\n .map(b => formatU1RawHex(b)).join(\"-\");\r\n lines.push(line);\r\n }\r\n return lines;\r\n}\r\n\r\nexport function formatStructTitle(s: S.FileData, title: string): string {\r\n return `${title} [${formatU4Hex(s._offset)} - ${formatU4Hex(s._offset + s._size)} : ${formatHexDec(s._size)}]`;\r\n}\r\n\r\nexport function formatU1Field(name: string, f: S.U1Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 1, showDec);\r\n}\r\n\r\nexport function formatU2Field(name: string, f: S.U2Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 2, showDec);\r\n}\r\n\r\nexport function formatU4Field(name: string, f: S.U4Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 4, showDec);\r\n}\r\n\r\nexport function formatU8Field(name: string, f: S.U8Field, showDec?: boolean): W.StructItem {\r\n let value = `${formatU4RawHex(f.high)} ${formatU4Hex(f.low)}`;\r\n\r\n if (showDec && f.high < 0x1FFFFF) {\r\n const long = f.high * 0x100000000 + f.low;\r\n value += ` (${formatDec(long)})`;\r\n }\r\n\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value,\r\n };\r\n}\r\n\r\nexport function formatBytesField(name: string, f: S.Field): W.StructItem {\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: \"\",\r\n }\r\n}\r\n\r\nexport function formatStringField(name: string, f: S.StringField): W.StructItem {\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: `\"${f.value}\"`,\r\n }\r\n}\r\n\r\nfunction padZeroLeft(str: string, len: number): string {\r\n if (str.length < len) {\r\n return \"0\".repeat(len - str.length) + str;\r\n } else {\r\n return str;\r\n }\r\n}\r\n\r\nfunction formatUIntField(name: string, f: S.UIntField, sz: number, showDec?: boolean): W.StructItem {\r\n let hex: string;\r\n switch (sz) {\r\n case 1: hex = formatU1Hex(f.value); break;\r\n case 2: hex = formatU2Hex(f.value); break;\r\n case 4: hex = formatU4Hex(f.value); break;\r\n default: hex = f.value.toString(16).toUpperCase(); break;\r\n }\r\n\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: showDec ? `${hex} (${formatDec(f.value)})` : hex,\r\n }\r\n}\r\n\r\nfunction formatDec(v: number): string {\r\n return v.toLocaleString();\r\n}\r\n","export const IMAGE_DOS_SIGNATURE = 0x5A4D; // MZ\r\n\r\nexport const IMAGE_NT_SIGNATURE = 0x00004550; // PE00\r\n\r\nexport const IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b;\r\nexport const IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b;\r\n\r\nexport enum ImageFile {\r\n IMAGE_FILE_RELOCS_STRIPPED = 0x0001,\r\n IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002,\r\n IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004,\r\n IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008,\r\n IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010,\r\n IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020,\r\n IMAGE_FILE_BYTES_REVERSED_LO = 0x0080,\r\n IMAGE_FILE_32BIT_MACHINE = 0x0100,\r\n IMAGE_FILE_DEBUG_STRIPPED = 0x0200,\r\n IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400,\r\n IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800,\r\n IMAGE_FILE_SYSTEM = 0x1000,\r\n IMAGE_FILE_DLL = 0x2000,\r\n IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000,\r\n IMAGE_FILE_BYTES_REVERSED_HI = 0x8000,\r\n}\r\n\r\nexport enum ImageFileMachine {\r\n IMAGE_FILE_MACHINE_UNKNOWN = 0,\r\n IMAGE_FILE_MACHINE_TARGET_HOST = 0x0001,\r\n IMAGE_FILE_MACHINE_I386 = 0x014c,\r\n IMAGE_FILE_MACHINE_R3000 = 0x0162,\r\n IMAGE_FILE_MACHINE_R4000 = 0x0166,\r\n IMAGE_FILE_MACHINE_R10000 = 0x0168,\r\n IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169,\r\n IMAGE_FILE_MACHINE_ALPHA = 0x0184,\r\n IMAGE_FILE_MACHINE_SH3 = 0x01a2,\r\n IMAGE_FILE_MACHINE_SH3DSP = 0x01a3,\r\n IMAGE_FILE_MACHINE_SH3E = 0x01a4,\r\n IMAGE_FILE_MACHINE_SH4 = 0x01a6,\r\n IMAGE_FILE_MACHINE_SH5 = 0x01a8,\r\n IMAGE_FILE_MACHINE_ARM = 0x01c0,\r\n IMAGE_FILE_MACHINE_THUMB = 0x01c2,\r\n IMAGE_FILE_MACHINE_ARMNT = 0x01c4,\r\n IMAGE_FILE_MACHINE_AM33 = 0x01d3,\r\n IMAGE_FILE_MACHINE_POWERPC = 0x01F0,\r\n IMAGE_FILE_MACHINE_POWERPCFP = 0x01f1,\r\n IMAGE_FILE_MACHINE_IA64 = 0x0200,\r\n IMAGE_FILE_MACHINE_MIPS16 = 0x0266,\r\n IMAGE_FILE_MACHINE_ALPHA64 = 0x0284,\r\n IMAGE_FILE_MACHINE_MIPSFPU = 0x0366,\r\n IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466,\r\n IMAGE_FILE_MACHINE_AXP64 = IMAGE_FILE_MACHINE_ALPHA64,\r\n IMAGE_FILE_MACHINE_TRICORE = 0x0520,\r\n IMAGE_FILE_MACHINE_CEF = 0x0CEF,\r\n IMAGE_FILE_MACHINE_EBC = 0x0EBC,\r\n IMAGE_FILE_MACHINE_AMD64 = 0x8664,\r\n IMAGE_FILE_MACHINE_M32R = 0x9041,\r\n IMAGE_FILE_MACHINE_ARM64 = 0xAA64,\r\n IMAGE_FILE_MACHINE_CEE = 0xC0EE,\r\n}\r\n\r\nexport enum ImageSubsystem {\r\n IMAGE_SUBSYSTEM_UNKNOWN = 0,\r\n IMAGE_SUBSYSTEM_NATIVE = 1,\r\n IMAGE_SUBSYSTEM_WINDOWS_GUI = 2,\r\n IMAGE_SUBSYSTEM_WINDOWS_CUI = 3,\r\n IMAGE_SUBSYSTEM_OS2_CUI = 5,\r\n IMAGE_SUBSYSTEM_POSIX_CUI = 7,\r\n IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8,\r\n IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9,\r\n IMAGE_SUBSYSTEM_EFI_APPLICATION = 10,\r\n IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11,\r\n IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12,\r\n IMAGE_SUBSYSTEM_EFI_ROM = 13,\r\n IMAGE_SUBSYSTEM_XBOX = 14,\r\n IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16,\r\n IMAGE_SUBSYSTEM_XBOX_CODE_CATALOG = 17,\r\n}\r\n\r\nexport enum ImageDllCharacteristics {\r\n IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA = 0x0020,\r\n IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040,\r\n IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY = 0x0080,\r\n IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x0100,\r\n IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200,\r\n IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400,\r\n IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800,\r\n IMAGE_DLLCHARACTERISTICS_APPCONTAINER = 0x1000,\r\n IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000,\r\n IMAGE_DLLCHARACTERISTICS_GUARD_CF = 0x4000,\r\n IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000,\r\n}\r\n\r\nexport enum ImageDirectoryEntry {\r\n IMAGE_DIRECTORY_ENTRY_EXPORT = 0,\r\n IMAGE_DIRECTORY_ENTRY_IMPORT = 1,\r\n IMAGE_DIRECTORY_ENTRY_RESOURCE = 2,\r\n IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3,\r\n IMAGE_DIRECTORY_ENTRY_SECURITY = 4,\r\n IMAGE_DIRECTORY_ENTRY_BASERELOC = 5,\r\n IMAGE_DIRECTORY_ENTRY_DEBUG = 6,\r\n IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7,\r\n IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8,\r\n IMAGE_DIRECTORY_ENTRY_TLS = 9,\r\n IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10,\r\n IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11,\r\n IMAGE_DIRECTORY_ENTRY_IAT = 12,\r\n IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13,\r\n IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14,\r\n}\r\n\r\nexport const IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16;\r\n\r\nexport enum ImageSection {\r\n IMAGE_SCN_TYPE_NO_PAD = 0x00000008,\r\n\r\n IMAGE_SCN_CNT_CODE = 0x00000020,\r\n IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040,\r\n IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080,\r\n\r\n IMAGE_SCN_LNK_OTHER = 0x00000100,\r\n IMAGE_SCN_LNK_INFO = 0x00000200,\r\n IMAGE_SCN_LNK_REMOVE = 0x00000800,\r\n IMAGE_SCN_LNK_COMDAT = 0x00001000,\r\n\r\n IMAGE_SCN_NO_DEFER_SPEC_EXC = 0x00004000,\r\n IMAGE_SCN_GPREL = 0x00008000,\r\n\r\n IMAGE_SCN_MEM_PURGEABLE = 0x00020000,\r\n IMAGE_SCN_MEM_16BIT = 0x00020000,\r\n IMAGE_SCN_MEM_LOCKED = 0x00040000,\r\n IMAGE_SCN_MEM_PRELOAD = 0x00080000,\r\n\r\n IMAGE_SCN_ALIGN_1BYTES = 0x00100000,\r\n IMAGE_SCN_ALIGN_2BYTES = 0x00200000,\r\n IMAGE_SCN_ALIGN_4BYTES = 0x00300000,\r\n IMAGE_SCN_ALIGN_8BYTES = 0x00400000,\r\n IMAGE_SCN_ALIGN_16BYTES = 0x00500000,\r\n IMAGE_SCN_ALIGN_32BYTES = 0x00600000,\r\n IMAGE_SCN_ALIGN_64BYTES = 0x00700000,\r\n IMAGE_SCN_ALIGN_128BYTES = 0x00800000,\r\n IMAGE_SCN_ALIGN_256BYTES = 0x00900000,\r\n IMAGE_SCN_ALIGN_512BYTES = 0x00A00000,\r\n IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000,\r\n IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000,\r\n IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000,\r\n IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000,\r\n\r\n IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000,\r\n IMAGE_SCN_MEM_DISCARDABLE = 0x02000000,\r\n IMAGE_SCN_MEM_NOT_CACHED = 0x04000000,\r\n IMAGE_SCN_MEM_NOT_PAGED = 0x08000000,\r\n IMAGE_SCN_MEM_SHARED = 0x10000000,\r\n IMAGE_SCN_MEM_EXECUTE = 0x20000000,\r\n IMAGE_SCN_MEM_READ = 0x40000000,\r\n IMAGE_SCN_MEM_WRITE = 0x80000000,\r\n\r\n IMAGE_SCN_SCALE_INDEX = 0x00000001,\r\n}\r\n\r\nexport enum ComImageFlags {\r\n COMIMAGE_FLAGS_ILONLY = 0x00000001,\r\n COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,\r\n COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004,\r\n COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,\r\n COMIMAGE_FLAGS_NATIVE_ENTRYPOINT = 0x00000010,\r\n COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,\r\n COMIMAGE_FLAGS_32BITPREFERRED = 0x00020000,\r\n}\r\n\r\nexport const MetadataSignature = 0x424A5342;","import { PEImage } from \"../pe/image\";\r\n\r\nexport function generateNavList(pe: PEImage): W.NavData[] {\r\n let navList: W.NavData[] = [generateHeadersNavData(pe)];\r\n\r\n const navMD = generateMDHeadersNavData(pe);\r\n if (navMD) navList.push(navMD);\r\n\r\n return navList;\r\n}\r\n\r\nfunction generateHeadersNavData(pe: PEImage): W.NavData {\r\n const pageID = W.PageID.HEADERS;\r\n\r\n return {\r\n target: { pageID, title: W.KnownTitle.HEADERS },\r\n children: [{\r\n target: { pageID, title: W.KnownTitle.DOS_HEADER, elemID: W.KnownElemID.DOS_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.PE_SIGNATURE, elemID: W.KnownElemID.PE_SIGNATURE }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.FILE_HEADER, elemID: W.KnownElemID.FILE_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.OPTIONAL_HEADER, elemID: W.KnownElemID.OPTIONAL_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.DATA_DIRECTORIES, elemID: W.KnownElemID.DATA_DIRECTORIES }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.SECTION_HEADERS, elemID: W.KnownElemID.SECTION_HEADERS }\r\n }]\r\n };\r\n}\r\n\r\nfunction generateMDHeadersNavData(pe: PEImage): W.NavData | undefined {\r\n const pageID = W.PageID.MD_HEADERS;\r\n\r\n if (!pe.isManaged()) return undefined;\r\n\r\n let children: W.NavData[] = [{\r\n target: { pageID, title: W.KnownTitle.CLI_HEADER, elemID: W.KnownElemID.CLI_HEADER }\r\n }];\r\n\r\n if (pe.hasMetadata()) {\r\n children.push({\r\n target: { pageID, title: W.KnownTitle.MD_ROOT, elemID: W.KnownElemID.MD_ROOT }\r\n });\r\n children.push({\r\n target: { pageID, title: W.KnownTitle.MDS_HEADERS, elemID: W.KnownElemID.MDS_HEADERS }\r\n });\r\n }\r\n\r\n return {\r\n target: { pageID, title: W.KnownTitle.MD_HEADERS },\r\n children\r\n };\r\n}","import { PEImage } from \"../pe/image\";\r\nimport * as S from \"../pe/structures\";\r\nimport * as F from \"../pe/image-flags\";\r\nimport * as FM from \"./formatter\";\r\n\r\nexport function generateMetadataHeadersPageData(pe: PEImage): W.MetadataHeadersPageData {\r\n return {\r\n nav: {\r\n pageID: W.PageID.MD_HEADERS,\r\n title: W.KnownTitle.MD_HEADERS,\r\n },\r\n cliHeader: generateCliHeader(pe),\r\n metadataRoot: generateMetadataRoot(pe),\r\n streamHeaders: generateMetadataStreamHeader(pe),\r\n };\r\n\r\n}\r\n\r\nfunction generateCliHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.CLI_HEADER,\r\n elemID: W.KnownElemID.CLI_HEADER,\r\n };\r\n\r\n const h = pe.getCliHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU4Field(\"cb\", h.cb, true),\r\n FM.formatU2Field(\"MajorRuntimeVersion\", h.MajorRuntimeVersion, true),\r\n FM.formatU2Field(\"MinorRuntimeVersion\", h.MinorRuntimeVersion, true),\r\n FM.formatU4Field(\"MetaData.VirtualAddress\", h.MetaData.VirtualAddress),\r\n FM.formatU4Field(\"MetaData.Size\", h.MetaData.Size, true),\r\n FM.formatU4Field(\"Flags\", h.Flags),\r\n FM.formatU4Field(\"EntryPointToken\", h.EntryPointToken),\r\n FM.formatU4Field(\"Resources.VirtualAddress\", h.Resources.VirtualAddress),\r\n FM.formatU4Field(\"Resources.Size\", h.Resources.Size, true),\r\n FM.formatU4Field(\"StrongNameSignature.VirtualAddress\", h.StrongNameSignature.VirtualAddress),\r\n FM.formatU4Field(\"StrongNameSignature.Size\", h.StrongNameSignature.Size, true),\r\n FM.formatU4Field(\"CodeManagerTable.VirtualAddress\", h.CodeManagerTable.VirtualAddress),\r\n FM.formatU4Field(\"CodeManagerTable.Size\", h.CodeManagerTable.Size, true),\r\n FM.formatU4Field(\"VTableFixups.VirtualAddress\", h.VTableFixups.VirtualAddress),\r\n FM.formatU4Field(\"VTableFixups.Size\", h.VTableFixups.Size, true),\r\n FM.formatU4Field(\"ExportAddressTableJumps.VirtualAddress\", h.ExportAddressTableJumps.VirtualAddress),\r\n FM.formatU4Field(\"ExportAddressTableJumps.Size\", h.ExportAddressTableJumps.Size, true),\r\n FM.formatU4Field(\"ManagedNativeHeader.VirtualAddress\", h.ManagedNativeHeader.VirtualAddress),\r\n FM.formatU4Field(\"ManagedNativeHeader.Size\", h.ManagedNativeHeader.Size, true),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateMetadataRoot(pe: PEImage): W.SimpleStruct | undefined {\r\n const h = pe.getMetadataRoot();\r\n if (!h) return undefined;\r\n\r\n const s: W.SimpleStruct = {\r\n title: W.KnownTitle.MD_ROOT,\r\n elemID: W.KnownElemID.MD_ROOT,\r\n items: [\r\n FM.formatU4Field(\"Signature\", h.Signature),\r\n FM.formatU2Field(\"MajorVersion\", h.MajorVersion, true),\r\n FM.formatU2Field(\"MinorVersion\", h.MinorVersion, true),\r\n FM.formatU4Field(\"Reserved\", h.Reserved),\r\n FM.formatU4Field(\"VersionLength\", h.VersionLength, true),\r\n FM.formatStringField(\"VersionString\", h.VersionString),\r\n FM.formatBytesField(\"VersionPadding\", h.VersionPadding),\r\n FM.formatU2Field(\"Flags\", h.Flags),\r\n FM.formatU2Field(\"Streams\", h.Streams, true),\r\n ]\r\n };\r\n return s;\r\n}\r\n\r\nfunction generateMetadataStreamHeader(pe: PEImage): W.GroupedStruct | undefined {\r\n const h = pe.getMetadataStreamHeaders();\r\n if (!h) return undefined;\r\n\r\n const s: W.GroupedStruct = {\r\n title: W.KnownTitle.MDS_HEADERS,\r\n elemID: W.KnownElemID.MDS_HEADERS,\r\n groups: h.items.map((v, i) => ({\r\n title: `[${i}] (${v.Name.value})`,\r\n items: [\r\n FM.formatU4Field(\"Offset\", v.Offset),\r\n FM.formatU4Field(\"Size\", v.Size, true),\r\n FM.formatStringField(\"Name\", v.Name),\r\n FM.formatBytesField(\"Padding\", v.Padding),\r\n ]\r\n }))\r\n };\r\n return s;\r\n}","import { PEImage } from \"../pe/image\";\r\nimport * as S from \"../pe/structures\";\r\nimport * as F from \"../pe/image-flags\";\r\nimport * as FM from \"./formatter\";\r\n\r\nexport function generateHeadersPageData(pe: PEImage): W.HeadersPageData {\r\n return {\r\n nav: {\r\n pageID: W.PageID.HEADERS,\r\n title: W.KnownTitle.HEADERS,\r\n },\r\n dosHeader: generateDosHeader(pe),\r\n peSignature: generatePESignature(pe),\r\n fileHeader: generateFileHeader(pe),\r\n optionalHeader: generateOptionalHeader(pe),\r\n dataDirectories: generateDataDirectories(pe),\r\n sectionHeaders: generateSectionHeaders(pe),\r\n };\r\n}\r\n\r\nfunction generateDosHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.DOS_HEADER,\r\n elemID: W.KnownElemID.DOS_HEADER,\r\n };\r\n\r\n const h = pe.getDosHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU2Field(\"e_magic\", h.e_magic),\r\n FM.formatU2Field(\"e_cblp\", h.e_cblp),\r\n FM.formatU2Field(\"e_cp\", h.e_cp),\r\n FM.formatU2Field(\"e_crlc\", h.e_crlc),\r\n FM.formatU2Field(\"e_cparhdr\", h.e_cparhdr),\r\n FM.formatU2Field(\"e_minalloc\", h.e_minalloc),\r\n FM.formatU2Field(\"e_maxalloc\", h.e_maxalloc),\r\n FM.formatU2Field(\"e_ss\", h.e_ss),\r\n FM.formatU2Field(\"e_sp\", h.e_sp),\r\n FM.formatU2Field(\"e_csum\", h.e_csum),\r\n FM.formatU2Field(\"e_ip\", h.e_ip),\r\n FM.formatU2Field(\"e_cs\", h.e_cs),\r\n FM.formatU2Field(\"e_lfarlc\", h.e_lfarlc),\r\n FM.formatU2Field(\"e_ovno\", h.e_ovno),\r\n FM.formatBytesField(\"e_res\", h.e_res),\r\n FM.formatU2Field(\"e_oemid\", h.e_oemid),\r\n FM.formatU2Field(\"e_oeminfo\", h.e_oeminfo),\r\n FM.formatBytesField(\"e_res2\", h.e_res2),\r\n FM.formatU4Field(\"e_lfanew\", h.e_lfanew),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generatePESignature(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.PE_SIGNATURE,\r\n elemID: W.KnownElemID.PE_SIGNATURE,\r\n };\r\n\r\n const h = pe.getPESignature();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU4Field(\"PE Signature\", h),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateFileHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.FILE_HEADER,\r\n elemID: W.KnownElemID.FILE_HEADER,\r\n };\r\n\r\n const h = pe.getFileHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU2Field(\"Machine\", h.Machine),\r\n FM.formatU2Field(\"NumberOfSections\", h.NumberOfSections, true),\r\n FM.formatU4Field(\"TimeDateStamp\", h.TimeDateStamp),\r\n FM.formatU4Field(\"PointerToSymbolTable\", h.PointerToSymbolTable),\r\n FM.formatU4Field(\"NumberOfSymbols\", h.NumberOfSymbols, true),\r\n FM.formatU2Field(\"SizeOfOptionalHeader\", h.SizeOfOptionalHeader, true),\r\n FM.formatU2Field(\"Characteristics\", h.Characteristics),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateOptionalHeader(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.OPTIONAL_HEADER,\r\n elemID: W.KnownElemID.OPTIONAL_HEADER,\r\n };\r\n\r\n const h = pe.getOptionalHeader();\r\n if (!h) return s;\r\n\r\n switch (h.Magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r\n s.title += \" (32-bit)\";\r\n fillOptionalHeader32Fields(s, h);\r\n break;\r\n\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC:\r\n s.title += \" (64-bit)\";\r\n fillOptionalHeader64Fields(s, h);\r\n break;\r\n }\r\n\r\n return s;\r\n}\r\n\r\nfunction fillOptionalHeader32Fields(s: W.GroupedStruct, h: S.ImageOptionalHeader32): void {\r\n s.groups = [{\r\n title: \"Standard Fields\",\r\n items: [\r\n FM.formatU2Field(\"Magic\", h.Magic),\r\n FM.formatU1Field(\"MajorLinkerVersion\", h.MajorLinkerVersion, true),\r\n FM.formatU1Field(\"MinorLinkerVersion\", h.MinorLinkerVersion, true),\r\n FM.formatU4Field(\"SizeOfCode\", h.SizeOfCode, true),\r\n FM.formatU4Field(\"SizeOfInitializedData\", h.SizeOfInitializedData, true),\r\n FM.formatU4Field(\"SizeOfUninitializedData\", h.SizeOfUninitializedData, true),\r\n FM.formatU4Field(\"AddressOfEntryPoint\", h.AddressOfEntryPoint),\r\n FM.formatU4Field(\"BaseOfCode\", h.BaseOfCode),\r\n FM.formatU4Field(\"BaseOfData\", h.BaseOfData),\r\n ],\r\n }, {\r\n title: \"NT-specified Fields\",\r\n items: [\r\n FM.formatU4Field(\"ImageBase\", h.ImageBase),\r\n FM.formatU4Field(\"SectionAlignment\", h.SectionAlignment, true),\r\n FM.formatU4Field(\"FileAlignment\", h.FileAlignment, true),\r\n FM.formatU2Field(\"MajorOperatingSystemVersion\", h.MajorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MinorOperatingSystemVersion\", h.MinorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MajorImageVersion\", h.MajorImageVersion, true),\r\n FM.formatU2Field(\"MinorImageVersion\", h.MinorImageVersion, true),\r\n FM.formatU2Field(\"MajorSubsystemVersion\", h.MajorSubsystemVersion, true),\r\n FM.formatU2Field(\"MinorSubsystemVersion\", h.MinorSubsystemVersion, true),\r\n FM.formatU4Field(\"Win32VersionValue\", h.Win32VersionValue, true),\r\n FM.formatU4Field(\"SizeOfImage\", h.SizeOfImage, true),\r\n FM.formatU4Field(\"SizeOfHeaders\", h.SizeOfHeaders, true),\r\n FM.formatU4Field(\"CheckSum\", h.CheckSum),\r\n FM.formatU2Field(\"Subsystem\", h.Subsystem),\r\n FM.formatU2Field(\"DllCharacteristics\", h.DllCharacteristics),\r\n FM.formatU4Field(\"SizeOfStackReserve\", h.SizeOfStackReserve, true),\r\n FM.formatU4Field(\"SizeOfStackCommit\", h.SizeOfStackCommit, true),\r\n FM.formatU4Field(\"SizeOfHeapReserve\", h.SizeOfHeapReserve, true),\r\n FM.formatU4Field(\"SizeOfHeapCommit\", h.SizeOfHeapCommit, true),\r\n FM.formatU4Field(\"LoaderFlags\", h.LoaderFlags),\r\n FM.formatU4Field(\"NumberOfRvaAndSizes\", h.NumberOfRvaAndSizes, true),\r\n ],\r\n }];\r\n}\r\n\r\nfunction fillOptionalHeader64Fields(s: W.GroupedStruct, h: S.ImageOptionalHeader64): void {\r\n s.groups = [{\r\n title: \"Standard Fields\",\r\n items: [\r\n FM.formatU2Field(\"Magic\", h.Magic),\r\n FM.formatU1Field(\"MajorLinkerVersion\", h.MajorLinkerVersion, true),\r\n FM.formatU1Field(\"MinorLinkerVersion\", h.MinorLinkerVersion, true),\r\n FM.formatU4Field(\"SizeOfCode\", h.SizeOfCode, true),\r\n FM.formatU4Field(\"SizeOfInitializedData\", h.SizeOfInitializedData, true),\r\n FM.formatU4Field(\"SizeOfUninitializedData\", h.SizeOfUninitializedData, true),\r\n FM.formatU4Field(\"AddressOfEntryPoint\", h.AddressOfEntryPoint),\r\n FM.formatU4Field(\"BaseOfCode\", h.BaseOfCode),\r\n ],\r\n }, {\r\n title: \"NT-specified Fields\",\r\n items: [\r\n FM.formatU8Field(\"ImageBase\", h.ImageBase),\r\n FM.formatU4Field(\"SectionAlignment\", h.SectionAlignment, true),\r\n FM.formatU4Field(\"FileAlignment\", h.FileAlignment, true),\r\n FM.formatU2Field(\"MajorOperatingSystemVersion\", h.MajorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MinorOperatingSystemVersion\", h.MinorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MajorImageVersion\", h.MajorImageVersion, true),\r\n FM.formatU2Field(\"MinorImageVersion\", h.MinorImageVersion, true),\r\n FM.formatU2Field(\"MajorSubsystemVersion\", h.MajorSubsystemVersion, true),\r\n FM.formatU2Field(\"MinorSubsystemVersion\", h.MinorSubsystemVersion, true),\r\n FM.formatU4Field(\"Win32VersionValue\", h.Win32VersionValue, true),\r\n FM.formatU4Field(\"SizeOfImage\", h.SizeOfImage, true),\r\n FM.formatU4Field(\"SizeOfHeaders\", h.SizeOfHeaders, true),\r\n FM.formatU4Field(\"CheckSum\", h.CheckSum),\r\n FM.formatU2Field(\"Subsystem\", h.Subsystem),\r\n FM.formatU2Field(\"DllCharacteristics\", h.DllCharacteristics),\r\n FM.formatU8Field(\"SizeOfStackReserve\", h.SizeOfStackReserve, true),\r\n FM.formatU8Field(\"SizeOfStackCommit\", h.SizeOfStackCommit, true),\r\n FM.formatU8Field(\"SizeOfHeapReserve\", h.SizeOfHeapReserve, true),\r\n FM.formatU8Field(\"SizeOfHeapCommit\", h.SizeOfHeapCommit, true),\r\n FM.formatU4Field(\"LoaderFlags\", h.LoaderFlags),\r\n FM.formatU4Field(\"NumberOfRvaAndSizes\", h.NumberOfRvaAndSizes, true),\r\n ],\r\n }];\r\n}\r\n\r\nfunction generateDataDirectories(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.DATA_DIRECTORIES,\r\n elemID: W.KnownElemID.DATA_DIRECTORIES,\r\n };\r\n\r\n const h = pe.getDataDirectories();\r\n if (!h) return s;\r\n\r\n s.groups = h.items.map((v, i) => ({\r\n title: `[${i}] ${F.ImageDirectoryEntry[i] || \"\"}`,\r\n items: [\r\n FM.formatU4Field(\"VirtualAddress\", v.VirtualAddress),\r\n FM.formatU4Field(\"Size\", v.Size, true),\r\n ]\r\n } as W.SimpleStruct));\r\n\r\n return s;\r\n}\r\n\r\nfunction generateSectionHeaders(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.SECTION_HEADERS,\r\n elemID: W.KnownElemID.SECTION_HEADERS,\r\n };\r\n\r\n const h = pe.getSectionHeaders();\r\n if (!h) return s;\r\n\r\n s.groups = h.items.map((v, i) => ({\r\n title: `[${i}] (${v.Name.value})`,\r\n items: [\r\n FM.formatStringField(\"Name\", v.Name),\r\n FM.formatU4Field(\"VirtualSize\", v.VirtualSize, true),\r\n FM.formatU4Field(\"VirtualAddress\", v.VirtualAddress),\r\n FM.formatU4Field(\"SizeOfRawData\", v.SizeOfRawData, true),\r\n FM.formatU4Field(\"PointerToRawData\", v.PointerToRawData),\r\n FM.formatU4Field(\"PointerToRelocations\", v.PointerToRelocations),\r\n FM.formatU4Field(\"PointerToLinenumbers\", v.PointerToLinenumbers),\r\n FM.formatU2Field(\"NumberOfRelocations\", v.NumberOfRelocations, true),\r\n FM.formatU2Field(\"NumberOfLinenumbers\", v.NumberOfLinenumbers, true),\r\n FM.formatU4Field(\"Characteristics\", v.Characteristics),\r\n ]\r\n }));\r\n\r\n return s;\r\n}\r\n","import { PEImage } from \"../pe/image\";\r\nimport { generateHeadersPageData } from \"./headers\";\r\nimport { generateMetadataHeadersPageData } from \"./metadata-headers\";\r\n\r\nexport function generatePageData(pe: PEImage, pageID: W.PageID): W.PageData {\r\n switch (pageID) {\r\n case W.PageID.HEADERS: return generateHeadersPageData(pe);\r\n case W.PageID.MD_HEADERS: return generateMetadataHeadersPageData(pe);\r\n default: return { nav: { pageID: W.PageID.NOTFOUND, title: W.KnownTitle.NOTFOUND } };\r\n }\r\n}","export const enum PEErrorType {\r\n INVALID_DATA_POSITION = \"INVALID_DATA_POSITION\",\r\n INVALID_DOS_SIGNATURE = \"INVALID_DOS_SIGNATURE\",\r\n INVALID_PE_SIGNATURE = \"INVALID_PE_SIGNATURE\",\r\n INVALID_OPTIONAL_HEADER_MAGIC = \"INVALID_OPTIONAL_HEADER_MAGIC\",\r\n INVALID_DATA_DIRECTORY_COUNT = \"INVALID_DATA_DIRECTORY_COUNT\",\r\n}\r\n\r\nexport class PEError extends Error {\r\n constructor(\r\n public type: PEErrorType,\r\n public offset?: number,\r\n public size?: number\r\n ) {\r\n super(type);\r\n }\r\n}\r\n","export function calculatePadding(dataSize: number, align: number = 4): number {\r\n const r = dataSize % align;\r\n if (r == 0) {\r\n return 0;\r\n } else {\r\n return align - r;\r\n }\r\n}","import * as S from \"./structures\";\r\nimport * as F from \"./image-flags\";\r\nimport * as U from \"./utils\";\r\n\r\nexport interface FileDataProvider {\r\n getU1(p: number): number;\r\n getU2(p: number): number;\r\n getU4(p: number): number;\r\n getData(p: number, sz: number): Uint8Array;\r\n}\r\n\r\n//\r\n// Basic structures.\r\n//\r\n\r\nexport function loadU1Field(d: FileDataProvider, p: number): S.U1Field {\r\n return {\r\n _offset: p, _size: 1, data: d.getData(p, 1), value: d.getU1(p)\r\n };\r\n}\r\n\r\nexport function loadU2Field(d: FileDataProvider, p: number): S.U2Field {\r\n return {\r\n _offset: p, _size: 2, data: d.getData(p, 2), value: d.getU2(p)\r\n };\r\n}\r\n\r\nexport function loadU4Field(d: FileDataProvider, p: number): S.U4Field {\r\n return {\r\n _offset: p, _size: 4, data: d.getData(p, 4), value: d.getU4(p)\r\n };\r\n}\r\n\r\nexport function loadU8Field(d: FileDataProvider, p: number): S.U8Field {\r\n const low = d.getU4(p);\r\n const high = d.getU4(p + 4);\r\n\r\n return {\r\n _offset: p, _size: 8, data: d.getData(p, 8), low, high\r\n };\r\n}\r\n\r\nexport function loadU1EnumField(d: FileDataProvider, p: number): S.U1EnumField {\r\n return {\r\n _offset: p, _size: 1, data: d.getData(p, 1), value: d.getU1(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadU2EnumField(d: FileDataProvider, p: number): S.U2EnumField {\r\n return {\r\n _offset: p, _size: 2, data: d.getData(p, 2), value: d.getU2(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadU4EnumField(d: FileDataProvider, p: number): S.U4EnumField {\r\n return {\r\n _offset: p, _size: 4, data: d.getData(p, 4), value: d.getU4(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadFixedSizeByteArrayField(d: FileDataProvider, p: number, sz: number): S.Field {\r\n return {\r\n _offset: p, _size: sz, data: d.getData(p, sz)\r\n };\r\n}\r\n\r\nexport function loadFixedSizeAsciiStringField(d: FileDataProvider, p: number, sz: number): S.StringField {\r\n const data = d.getData(p, sz);\r\n const value = String.fromCharCode.apply(null, Array.from(data).filter(v => v != 0));\r\n\r\n return {\r\n _offset: p, _size: sz, data, value\r\n };\r\n}\r\n\r\nexport function loadNullTerminatedStringField(d: FileDataProvider, p: number): S.StringField {\r\n let bytes: number[] = [];\r\n let ptr = p;\r\n let b: number;\r\n\r\n do {\r\n b = d.getU1(ptr++);\r\n bytes.push(b);\r\n } while (b != 0);\r\n const value = String.fromCharCode.apply(null, bytes.slice(0, bytes.length - 1));\r\n\r\n return {\r\n _offset: p, _size: ptr - p, data: Uint8Array.from(bytes), value\r\n };\r\n}\r\n\r\nexport function loadStructArrayByCount(\r\n d: FileDataProvider,\r\n p: number,\r\n loader: (d: FileDataProvider, p: number) => T,\r\n count: number): S.StructArray {\r\n\r\n let items: T[] = [];\r\n let ptr = p;\r\n for (let i = 0; i < count; i++) {\r\n const s = loader(d, ptr);\r\n items.push(s);\r\n ptr += s._size;\r\n }\r\n\r\n return { _offset: p, _size: ptr - p, items };\r\n}\r\n\r\n//\r\n// Image headers.\r\n//\r\n\r\nexport function loadImageDosHeader(d: FileDataProvider, p: number): S.ImageDosHeader {\r\n let ptr = p;\r\n\r\n const e_magic = loadU2Field(d, ptr);\r\n ptr += e_magic._size;\r\n\r\n const e_cblp = loadU2Field(d, ptr);\r\n ptr += e_cblp._size;\r\n\r\n const e_cp = loadU2Field(d, ptr);\r\n ptr += e_cp._size;\r\n\r\n const e_crlc = loadU2Field(d, ptr);\r\n ptr += e_crlc._size;\r\n\r\n const e_cparhdr = loadU2Field(d, ptr);\r\n ptr += e_cparhdr._size;\r\n\r\n const e_minalloc = loadU2Field(d, ptr);\r\n ptr += e_minalloc._size;\r\n\r\n const e_maxalloc = loadU2Field(d, ptr);\r\n ptr += e_maxalloc._size;\r\n\r\n const e_ss = loadU2Field(d, ptr);\r\n ptr += e_ss._size;\r\n\r\n const e_sp = loadU2Field(d, ptr);\r\n ptr += e_sp._size;\r\n\r\n const e_csum = loadU2Field(d, ptr);\r\n ptr += e_csum._size;\r\n\r\n const e_ip = loadU2Field(d, ptr);\r\n ptr += e_ip._size;\r\n\r\n const e_cs = loadU2Field(d, ptr);\r\n ptr += e_cs._size;\r\n\r\n const e_lfarlc = loadU2Field(d, ptr);\r\n ptr += e_lfarlc._size;\r\n\r\n const e_ovno = loadU2Field(d, ptr);\r\n ptr += e_ovno._size;\r\n\r\n const e_res = loadFixedSizeByteArrayField(d, ptr, 4 * 2);\r\n ptr += e_res._size;\r\n\r\n const e_oemid = loadU2Field(d, ptr);\r\n ptr += e_oemid._size;\r\n\r\n const e_oeminfo = loadU2Field(d, ptr);\r\n ptr += e_oeminfo._size;\r\n\r\n const e_res2 = loadFixedSizeByteArrayField(d, ptr, 10 * 2);\r\n ptr += e_res2._size;\r\n\r\n const e_lfanew = loadU4Field(d, ptr);\r\n ptr += e_lfanew._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n e_magic,\r\n e_cblp,\r\n e_cp,\r\n e_crlc,\r\n e_cparhdr,\r\n e_minalloc,\r\n e_maxalloc,\r\n e_ss,\r\n e_sp,\r\n e_csum,\r\n e_ip,\r\n e_cs,\r\n e_lfarlc,\r\n e_ovno,\r\n e_res,\r\n e_oemid,\r\n e_oeminfo,\r\n e_res2,\r\n e_lfanew,\r\n };\r\n}\r\n\r\nexport function loadImageFileHeader(d: FileDataProvider, p: number): S.ImageFileHeader {\r\n let ptr = p;\r\n\r\n const Machine = loadU2Field(d, ptr);\r\n ptr += Machine._size;\r\n\r\n const NumberOfSections = loadU2Field(d, ptr);\r\n ptr += NumberOfSections._size;\r\n\r\n const TimeDateStamp = loadU4Field(d, ptr);\r\n ptr += TimeDateStamp._size;\r\n\r\n const PointerToSymbolTable = loadU4Field(d, ptr);\r\n ptr += PointerToSymbolTable._size;\r\n\r\n const NumberOfSymbols = loadU4Field(d, ptr);\r\n ptr += NumberOfSymbols._size;\r\n\r\n const SizeOfOptionalHeader = loadU2Field(d, ptr);\r\n ptr += SizeOfOptionalHeader._size;\r\n\r\n const Characteristics = loadU2EnumField(d, ptr);\r\n ptr += Characteristics._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Machine,\r\n NumberOfSections,\r\n TimeDateStamp,\r\n PointerToSymbolTable,\r\n NumberOfSymbols,\r\n SizeOfOptionalHeader,\r\n Characteristics,\r\n };\r\n}\r\n\r\nexport function loadImageOptionalHeader32(d: FileDataProvider, p: number): S.ImageOptionalHeader32 {\r\n let ptr = p;\r\n\r\n const Magic = loadU2Field(d, ptr);\r\n ptr += Magic._size;\r\n\r\n const MajorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MajorLinkerVersion._size;\r\n\r\n const MinorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MinorLinkerVersion._size;\r\n\r\n const SizeOfCode = loadU4Field(d, ptr);\r\n ptr += SizeOfCode._size;\r\n\r\n const SizeOfInitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfInitializedData._size;\r\n\r\n const SizeOfUninitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfUninitializedData._size;\r\n\r\n const AddressOfEntryPoint = loadU4Field(d, ptr);\r\n ptr += AddressOfEntryPoint._size;\r\n\r\n const BaseOfCode = loadU4Field(d, ptr);\r\n ptr += BaseOfCode._size;\r\n\r\n const BaseOfData = loadU4Field(d, ptr);\r\n ptr += BaseOfData._size;\r\n\r\n const ImageBase = loadU4Field(d, ptr);\r\n ptr += ImageBase._size;\r\n\r\n const SectionAlignment = loadU4Field(d, ptr);\r\n ptr += SectionAlignment._size;\r\n\r\n const FileAlignment = loadU4Field(d, ptr);\r\n ptr += FileAlignment._size;\r\n\r\n const MajorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorOperatingSystemVersion._size;\r\n\r\n const MinorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorOperatingSystemVersion._size;\r\n\r\n const MajorImageVersion = loadU2Field(d, ptr);\r\n ptr += MajorImageVersion._size;\r\n\r\n const MinorImageVersion = loadU2Field(d, ptr);\r\n ptr += MinorImageVersion._size;\r\n\r\n const MajorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorSubsystemVersion._size;\r\n\r\n const MinorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorSubsystemVersion._size;\r\n\r\n const Win32VersionValue = loadU4Field(d, ptr);\r\n ptr += Win32VersionValue._size;\r\n\r\n const SizeOfImage = loadU4Field(d, ptr);\r\n ptr += SizeOfImage._size;\r\n\r\n const SizeOfHeaders = loadU4Field(d, ptr);\r\n ptr += SizeOfHeaders._size;\r\n\r\n const CheckSum = loadU4Field(d, ptr);\r\n ptr += CheckSum._size;\r\n\r\n const Subsystem = loadU2EnumField(d, ptr);\r\n ptr += Subsystem._size;\r\n\r\n const DllCharacteristics = loadU2EnumField(d, ptr);\r\n ptr += DllCharacteristics._size;\r\n\r\n const SizeOfStackReserve = loadU4Field(d, ptr);\r\n ptr += SizeOfStackReserve._size;\r\n\r\n const SizeOfStackCommit = loadU4Field(d, ptr);\r\n ptr += SizeOfStackCommit._size;\r\n\r\n const SizeOfHeapReserve = loadU4Field(d, ptr);\r\n ptr += SizeOfHeapReserve._size;\r\n\r\n const SizeOfHeapCommit = loadU4Field(d, ptr);\r\n ptr += SizeOfHeapCommit._size;\r\n\r\n const LoaderFlags = loadU4Field(d, ptr);\r\n ptr += LoaderFlags._size;\r\n\r\n const NumberOfRvaAndSizes = loadU4Field(d, ptr);\r\n ptr += NumberOfRvaAndSizes._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Magic,\r\n MajorLinkerVersion,\r\n MinorLinkerVersion,\r\n SizeOfCode,\r\n SizeOfInitializedData,\r\n SizeOfUninitializedData,\r\n AddressOfEntryPoint,\r\n BaseOfCode,\r\n BaseOfData,\r\n ImageBase,\r\n SectionAlignment,\r\n FileAlignment,\r\n MajorOperatingSystemVersion,\r\n MinorOperatingSystemVersion,\r\n MajorImageVersion,\r\n MinorImageVersion,\r\n MajorSubsystemVersion,\r\n MinorSubsystemVersion,\r\n Win32VersionValue,\r\n SizeOfImage,\r\n SizeOfHeaders,\r\n CheckSum,\r\n Subsystem,\r\n DllCharacteristics,\r\n SizeOfStackReserve,\r\n SizeOfStackCommit,\r\n SizeOfHeapReserve,\r\n SizeOfHeapCommit,\r\n LoaderFlags,\r\n NumberOfRvaAndSizes,\r\n };\r\n}\r\n\r\nexport function loadImageOptionalHeader64(d: FileDataProvider, p: number): S.ImageOptionalHeader64 {\r\n let ptr = p;\r\n\r\n const Magic = loadU2Field(d, ptr);\r\n ptr += Magic._size;\r\n\r\n const MajorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MajorLinkerVersion._size;\r\n\r\n const MinorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MinorLinkerVersion._size;\r\n\r\n const SizeOfCode = loadU4Field(d, ptr);\r\n ptr += SizeOfCode._size;\r\n\r\n const SizeOfInitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfInitializedData._size;\r\n\r\n const SizeOfUninitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfUninitializedData._size;\r\n\r\n const AddressOfEntryPoint = loadU4Field(d, ptr);\r\n ptr += AddressOfEntryPoint._size;\r\n\r\n const BaseOfCode = loadU4Field(d, ptr);\r\n ptr += BaseOfCode._size;\r\n\r\n const ImageBase = loadU8Field(d, ptr);\r\n ptr += ImageBase._size;\r\n\r\n const SectionAlignment = loadU4Field(d, ptr);\r\n ptr += SectionAlignment._size;\r\n\r\n const FileAlignment = loadU4Field(d, ptr);\r\n ptr += FileAlignment._size;\r\n\r\n const MajorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorOperatingSystemVersion._size;\r\n\r\n const MinorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorOperatingSystemVersion._size;\r\n\r\n const MajorImageVersion = loadU2Field(d, ptr);\r\n ptr += MajorImageVersion._size;\r\n\r\n const MinorImageVersion = loadU2Field(d, ptr);\r\n ptr += MinorImageVersion._size;\r\n\r\n const MajorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorSubsystemVersion._size;\r\n\r\n const MinorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorSubsystemVersion._size;\r\n\r\n const Win32VersionValue = loadU4Field(d, ptr);\r\n ptr += Win32VersionValue._size;\r\n\r\n const SizeOfImage = loadU4Field(d, ptr);\r\n ptr += SizeOfImage._size;\r\n\r\n const SizeOfHeaders = loadU4Field(d, ptr);\r\n ptr += SizeOfHeaders._size;\r\n\r\n const CheckSum = loadU4Field(d, ptr);\r\n ptr += CheckSum._size;\r\n\r\n const Subsystem = loadU2EnumField(d, ptr);\r\n ptr += Subsystem._size;\r\n\r\n const DllCharacteristics = loadU2EnumField(d, ptr);\r\n ptr += DllCharacteristics._size;\r\n\r\n const SizeOfStackReserve = loadU8Field(d, ptr);\r\n ptr += SizeOfStackReserve._size;\r\n\r\n const SizeOfStackCommit = loadU8Field(d, ptr);\r\n ptr += SizeOfStackCommit._size;\r\n\r\n const SizeOfHeapReserve = loadU8Field(d, ptr);\r\n ptr += SizeOfHeapReserve._size;\r\n\r\n const SizeOfHeapCommit = loadU8Field(d, ptr);\r\n ptr += SizeOfHeapCommit._size;\r\n\r\n const LoaderFlags = loadU4Field(d, ptr);\r\n ptr += LoaderFlags._size;\r\n\r\n const NumberOfRvaAndSizes = loadU4Field(d, ptr);\r\n ptr += NumberOfRvaAndSizes._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Magic,\r\n MajorLinkerVersion,\r\n MinorLinkerVersion,\r\n SizeOfCode,\r\n SizeOfInitializedData,\r\n SizeOfUninitializedData,\r\n AddressOfEntryPoint,\r\n BaseOfCode,\r\n ImageBase,\r\n SectionAlignment,\r\n FileAlignment,\r\n MajorOperatingSystemVersion,\r\n MinorOperatingSystemVersion,\r\n MajorImageVersion,\r\n MinorImageVersion,\r\n MajorSubsystemVersion,\r\n MinorSubsystemVersion,\r\n Win32VersionValue,\r\n SizeOfImage,\r\n SizeOfHeaders,\r\n CheckSum,\r\n Subsystem,\r\n DllCharacteristics,\r\n SizeOfStackReserve,\r\n SizeOfStackCommit,\r\n SizeOfHeapReserve,\r\n SizeOfHeapCommit,\r\n LoaderFlags,\r\n NumberOfRvaAndSizes,\r\n };\r\n}\r\n\r\nexport function loadImageDataDirectory(d: FileDataProvider, p: number): S.ImageDataDirectory {\r\n let ptr = p;\r\n\r\n const VirtualAddress = loadU4Field(d, ptr);\r\n ptr += VirtualAddress._size;\r\n\r\n const Size = loadU4Field(d, ptr);\r\n ptr += Size._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n VirtualAddress,\r\n Size,\r\n };\r\n}\r\n\r\nexport function loadImageSectionHeader(d: FileDataProvider, p: number): S.ImageSectionHeader {\r\n let ptr = p;\r\n\r\n const Name = loadFixedSizeAsciiStringField(d, ptr, 8);\r\n ptr += Name._size;\r\n\r\n const VirtualSize = loadU4Field(d, ptr);\r\n ptr += VirtualSize._size;\r\n\r\n const VirtualAddress = loadU4Field(d, ptr);\r\n ptr += VirtualAddress._size;\r\n\r\n const SizeOfRawData = loadU4Field(d, ptr);\r\n ptr += SizeOfRawData._size;\r\n\r\n const PointerToRawData = loadU4Field(d, ptr);\r\n ptr += PointerToRawData._size;\r\n\r\n const PointerToRelocations = loadU4Field(d, ptr);\r\n ptr += PointerToRelocations._size;\r\n\r\n const PointerToLinenumbers = loadU4Field(d, ptr);\r\n ptr += PointerToLinenumbers._size;\r\n\r\n const NumberOfRelocations = loadU2Field(d, ptr);\r\n ptr += NumberOfRelocations._size;\r\n\r\n const NumberOfLinenumbers = loadU2Field(d, ptr);\r\n ptr += NumberOfLinenumbers._size;\r\n\r\n const Characteristics = loadU4EnumField(d, ptr);\r\n ptr += Characteristics._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Name,\r\n VirtualSize,\r\n VirtualAddress,\r\n SizeOfRawData,\r\n PointerToRawData,\r\n PointerToRelocations,\r\n PointerToLinenumbers,\r\n NumberOfRelocations,\r\n NumberOfLinenumbers,\r\n Characteristics,\r\n };\r\n}\r\n\r\n//\r\n// Metadata structures.\r\n//\r\n\r\nexport function loadCliHeader(d: FileDataProvider, p: number): S.CliHeader {\r\n let ptr = p;\r\n\r\n const cb = loadU4Field(d, ptr);\r\n ptr += cb._size;\r\n\r\n const MajorRuntimeVersion = loadU2Field(d, ptr);\r\n ptr += MajorRuntimeVersion._size;\r\n\r\n const MinorRuntimeVersion = loadU2Field(d, ptr);\r\n ptr += MinorRuntimeVersion._size;\r\n\r\n const MetaData = loadImageDataDirectory(d, ptr);\r\n ptr += MetaData._size;\r\n\r\n const Flags = loadU4Field(d, ptr);\r\n ptr += Flags._size;\r\n\r\n const EntryPointToken = loadU4Field(d, ptr);\r\n ptr += EntryPointToken._size;\r\n\r\n const Resources = loadImageDataDirectory(d, ptr);\r\n ptr += Resources._size;\r\n\r\n const StrongNameSignature = loadImageDataDirectory(d, ptr);\r\n ptr += StrongNameSignature._size;\r\n\r\n const CodeManagerTable = loadImageDataDirectory(d, ptr);\r\n ptr += CodeManagerTable._size;\r\n\r\n const VTableFixups = loadImageDataDirectory(d, ptr);\r\n ptr += VTableFixups._size;\r\n\r\n const ExportAddressTableJumps = loadImageDataDirectory(d, ptr);\r\n ptr += ExportAddressTableJumps._size;\r\n\r\n const ManagedNativeHeader = loadImageDataDirectory(d, ptr);\r\n ptr += ManagedNativeHeader._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n cb,\r\n MajorRuntimeVersion,\r\n MinorRuntimeVersion,\r\n MetaData,\r\n Flags,\r\n EntryPointToken,\r\n Resources,\r\n StrongNameSignature,\r\n CodeManagerTable,\r\n VTableFixups,\r\n ExportAddressTableJumps,\r\n ManagedNativeHeader,\r\n };\r\n}\r\n\r\nexport function loadMetadataRoot(d: FileDataProvider, p: number): S.MetadataRoot {\r\n let ptr = p;\r\n\r\n const Signature = loadU4Field(d, ptr);\r\n ptr += Signature._size;\r\n\r\n const MajorVersion = loadU2Field(d, ptr);\r\n ptr += MajorVersion._size;\r\n\r\n const MinorVersion = loadU2Field(d, ptr);\r\n ptr += MinorVersion._size;\r\n\r\n const Reserved = loadU4Field(d, ptr);\r\n ptr += Reserved._size;\r\n\r\n const VersionLength = loadU4Field(d, ptr);\r\n ptr += VersionLength._size;\r\n\r\n const VersionString = loadNullTerminatedStringField(d, ptr);\r\n ptr += VersionString._size;\r\n\r\n const paddingSize = U.calculatePadding(VersionString._size);\r\n const VersionPadding = loadFixedSizeByteArrayField(d, ptr, paddingSize);\r\n ptr += VersionPadding._size;\r\n\r\n const Flags = loadU2Field(d, ptr);\r\n ptr += Flags._size;\r\n\r\n const Streams = loadU2Field(d, ptr);\r\n ptr += Streams._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Signature,\r\n MajorVersion,\r\n MinorVersion,\r\n Reserved,\r\n VersionLength,\r\n VersionString,\r\n VersionPadding,\r\n Flags,\r\n Streams,\r\n };\r\n}\r\n\r\nexport function loadMetadataStreamHeader(d: FileDataProvider, p: number): S.MetadataStreamHeader {\r\n let ptr = p;\r\n\r\n const Offset = loadU4Field(d, ptr);\r\n ptr += Offset._size;\r\n\r\n const Size = loadU4Field(d, ptr);\r\n ptr += Size._size;\r\n\r\n const Name = loadNullTerminatedStringField(d, ptr);\r\n ptr += Name._size;\r\n\r\n const paddingSize = U.calculatePadding(Name._size);\r\n const Padding = loadFixedSizeByteArrayField(d, ptr, paddingSize);\r\n ptr += Padding._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Offset,\r\n Size,\r\n Name,\r\n Padding,\r\n };\r\n}","import * as S from \"./structures\";\r\nimport * as L from \"./loader\";\r\nimport * as F from \"./image-flags\";\r\nimport * as E from \"./error\";\r\n\r\nexport class PEImage implements L.FileDataProvider {\r\n public static load(buf: ArrayBuffer): PEImage {\r\n return new PEImage(buf);\r\n }\r\n\r\n //\r\n // FileDataProvider functions.\r\n //\r\n\r\n public getU1(p: number): number {\r\n this.check(p, 1);\r\n return this.data.getUint8(p);\r\n }\r\n\r\n public getU2(p: number): number {\r\n this.check(p, 2);\r\n return this.data.getUint16(p, true);\r\n }\r\n\r\n public getU4(p: number): number {\r\n this.check(p, 3);\r\n return this.data.getUint32(p, true);\r\n }\r\n\r\n public getData(p: number, sz: number): Uint8Array {\r\n this.check(p, sz);\r\n return new Uint8Array(this.data.buffer.slice(p, p + sz));\r\n }\r\n\r\n //\r\n // Image attributes.\r\n //\r\n\r\n public is32Bit(): boolean | undefined {\r\n const optHdr = this.getOptionalHeader();\r\n if (optHdr == null) {\r\n return undefined;\r\n }\r\n\r\n switch (optHdr.Magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC: return true;\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC: return false;\r\n default: return undefined;\r\n }\r\n }\r\n\r\n public isManaged(): boolean {\r\n const dd = this.getDataDirectories();\r\n return dd != null && this.isDataDirectoryValid(\r\n dd.items[F.ImageDirectoryEntry.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR]\r\n );\r\n }\r\n\r\n public hasMetadata(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.MetaData);\r\n }\r\n\r\n public hasManagedResources(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.Resources);\r\n }\r\n\r\n public hasStrongNameSignature(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.StrongNameSignature);\r\n }\r\n\r\n //\r\n // Image headers.\r\n //\r\n\r\n public getDosHeader(): S.ImageDosHeader | undefined {\r\n return this.dosHeader;\r\n }\r\n\r\n public getPESignature(): S.U4Field | undefined {\r\n return this.peSignature;\r\n }\r\n\r\n public getFileHeader(): S.ImageFileHeader | undefined {\r\n return this.fileHeader;\r\n }\r\n\r\n public getOptionalHeader(): S.ImageOptionalHeader32 | S.ImageOptionalHeader64 | undefined {\r\n return this.optionalHeader;\r\n }\r\n\r\n public getDataDirectories(): S.StructArray | undefined {\r\n return this.dataDirectories;\r\n }\r\n\r\n public getSectionHeaders(): S.StructArray | undefined {\r\n return this.sectionHeaders;\r\n }\r\n\r\n //\r\n // Metadata structures.\r\n //\r\n\r\n public getCliHeader(): S.CliHeader | undefined {\r\n if (this.cliHeader != null) return this.cliHeader;\r\n if (!this.isManaged()) return undefined;\r\n\r\n const offset = this.rvaToOffset(this.dataDirectories!\r\n .items[F.ImageDirectoryEntry.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR]\r\n .VirtualAddress.value);\r\n\r\n this.cliHeader = L.loadCliHeader(this, offset);\r\n return this.cliHeader;\r\n }\r\n\r\n public getMetadataRoot(): S.MetadataRoot | undefined {\r\n if (this.metadataRoot != null) return this.metadataRoot;\r\n\r\n const cliHeader = this.getCliHeader();\r\n if (!cliHeader) return undefined;\r\n\r\n const offset = this.rvaToOffset(cliHeader.MetaData.VirtualAddress.value);\r\n if (!offset) return undefined;\r\n\r\n this.metadataRoot = L.loadMetadataRoot(this, offset);\r\n return this.metadataRoot;\r\n }\r\n\r\n public getMetadataStreamHeaders(): S.StructArray | undefined {\r\n if (this.metadataStreamHeaders != null) return this.metadataStreamHeaders;\r\n\r\n const mdRoot = this.getMetadataRoot();\r\n if (!mdRoot || !mdRoot.Streams.value) return undefined;\r\n\r\n this.metadataStreamHeaders = L.loadStructArrayByCount(\r\n this,\r\n mdRoot._offset + mdRoot._size,\r\n L.loadMetadataStreamHeader,\r\n mdRoot.Streams.value\r\n );\r\n return this.metadataStreamHeaders;\r\n }\r\n\r\n //\r\n // Utilities.\r\n //\r\n\r\n public rvaToOffset(rva: number): number {\r\n const sh = this.getSectionHeaderByRva(rva);\r\n if (!sh) return 0;\r\n\r\n return rva - sh.VirtualAddress.value + sh.PointerToRawData.value;\r\n }\r\n\r\n public offsetToRva(offset: number): number {\r\n const sh = this.getSectionHeaderByOffset(offset);\r\n if (!sh) return 0;\r\n\r\n return offset - sh.PointerToRawData.value + sh.VirtualAddress.value;\r\n }\r\n\r\n //\r\n // Private implementations.\r\n //\r\n\r\n private check(p: number, sz: number): void {\r\n if (p < 0 || p >= this.data.byteLength\r\n || sz < 0 || p + sz > this.data.byteLength) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DATA_POSITION, p, sz);\r\n }\r\n }\r\n\r\n private constructor(buf: ArrayBuffer) {\r\n this.data = new DataView(buf);\r\n this.loadHeaders();\r\n }\r\n\r\n private loadHeaders(): void {\r\n let ptr = 0;\r\n this.dosHeader = L.loadImageDosHeader(this, ptr);\r\n\r\n if (this.dosHeader.e_magic.value != F.IMAGE_DOS_SIGNATURE) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DOS_SIGNATURE, ptr, 2);\r\n }\r\n\r\n ptr = this.dosHeader.e_lfanew.value;\r\n this.peSignature = L.loadU4Field(this, ptr);\r\n\r\n if (this.peSignature.value != F.IMAGE_NT_SIGNATURE) {\r\n throw new E.PEError(E.PEErrorType.INVALID_PE_SIGNATURE, ptr, 4);\r\n }\r\n\r\n ptr += this.peSignature._size;\r\n this.fileHeader = L.loadImageFileHeader(this, ptr);\r\n\r\n ptr += this.fileHeader._size;\r\n const magic = L.loadU2Field(this, ptr);\r\n switch (magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r\n this.optionalHeader = L.loadImageOptionalHeader32(this, ptr);\r\n break;\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC:\r\n this.optionalHeader = L.loadImageOptionalHeader64(this, ptr);\r\n break;\r\n default:\r\n throw new E.PEError(E.PEErrorType.INVALID_OPTIONAL_HEADER_MAGIC, ptr, 2);\r\n }\r\n\r\n if (this.optionalHeader.NumberOfRvaAndSizes.value != F.IMAGE_NUMBEROF_DIRECTORY_ENTRIES) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DATA_DIRECTORY_COUNT,\r\n this.optionalHeader.NumberOfRvaAndSizes._offset,\r\n this.optionalHeader.NumberOfRvaAndSizes._size);\r\n }\r\n\r\n ptr += this.optionalHeader._size;\r\n this.dataDirectories = L.loadStructArrayByCount(this, ptr,\r\n L.loadImageDataDirectory,\r\n this.optionalHeader.NumberOfRvaAndSizes.value);\r\n\r\n ptr += this.dataDirectories._size;\r\n this.sectionHeaders = L.loadStructArrayByCount(this, ptr,\r\n L.loadImageSectionHeader,\r\n this.fileHeader.NumberOfSections.value);\r\n }\r\n\r\n private getSectionHeaderByOffset(offset: number): S.ImageSectionHeader | undefined {\r\n return this.sectionHeaders && this.sectionHeaders.items.filter(h => {\r\n const p = h.PointerToRawData.value;\r\n const sz = h.SizeOfRawData.value;\r\n return offset >= p && offset < p + sz;\r\n }).shift();\r\n }\r\n\r\n private getSectionHeaderByRva(rva: number): S.ImageSectionHeader | undefined {\r\n return this.sectionHeaders && this.sectionHeaders.items.filter(h => {\r\n const p = h.VirtualAddress.value;\r\n const sz = h.VirtualSize.value;\r\n return rva >= p && rva < p + sz;\r\n }).shift();\r\n }\r\n\r\n private isDataDirectoryValid(dd?: S.ImageDataDirectory): boolean {\r\n return (dd && dd.VirtualAddress.value > 0 && dd.Size.value > 0) || false;\r\n }\r\n\r\n private readonly data: DataView;\r\n\r\n private dosHeader?: S.ImageDosHeader;\r\n private peSignature?: S.U4Field;\r\n private fileHeader?: S.ImageFileHeader;\r\n private optionalHeader?: S.ImageOptionalHeader32 | S.ImageOptionalHeader64;\r\n private dataDirectories?: S.StructArray;\r\n private sectionHeaders?: S.StructArray;\r\n\r\n private cliHeader?: S.CliHeader;\r\n private metadataRoot?: S.MetadataRoot;\r\n private metadataStreamHeaders?: S.StructArray;\r\n}\r\n","export function createResNavDataMessage(navList: W.NavData[]): W.ResNavDataMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_NAV_DATA,\r\n navList\r\n };\r\n}\r\n\r\nexport function createResPageDataMessage(pageData: W.PageData): W.ResPageDataMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PAGE_DATA,\r\n pageData\r\n };\r\n}\r\n\r\nexport function createResPEPropsMessage(is32Bit?: boolean, isManaged?: boolean): W.ResPEPropsMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PE_PROPS,\r\n is32Bit,\r\n isManaged\r\n };\r\n}\r\n\r\nexport function createResPEErrorMessage(error: string): W.ResPEErrorMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PE_ERROR,\r\n error\r\n };\r\n}\r\n","import * as M from \"./message\";\r\nimport { PEImage } from \"./pe/image\";\r\nimport { generatePageData } from \"./page-data/generator\";\r\nimport { generateNavList } from \"./page-data/nav-data\";\r\n\r\nlet pe: PEImage | null = null;\r\n\r\nonmessage = (ev) => {\r\n const msg = ev.data as W.WorkerMessage;\r\n switch (msg.type) {\r\n case W.WorkerMessageType.REQ_OPEN_FILE:\r\n handleReqOpenFile(msg as W.ReqOpenFileMessage);\r\n break;\r\n\r\n case W.WorkerMessageType.REQ_OPEN_NAV:\r\n handleReqOpenNav(msg as W.ReqOpenNavMessage);\r\n break;\r\n }\r\n};\r\n\r\nfunction handleReqOpenFile(msg: W.ReqOpenFileMessage): void {\r\n let reader = new FileReader();\r\n\r\n reader.onload = ev => {\r\n try {\r\n const buf = (ev.target).result;\r\n pe = PEImage.load(buf);\r\n\r\n // Response with page data.\r\n const pageData = generatePageData(pe, W.PageID.HEADERS);\r\n const pageDataMsg = M.createResPageDataMessage(pageData);\r\n postMessage(pageDataMsg);\r\n\r\n // Response with PE properties.\r\n const is32Bit = pe.is32Bit();\r\n const isManaged = pe.isManaged();\r\n const pePropsMsg = M.createResPEPropsMessage(is32Bit, isManaged);\r\n postMessage(pePropsMsg);\r\n\r\n // Response with navigation data.\r\n const navList = generateNavList(pe);\r\n const navMsg = M.createResNavDataMessage(navList);\r\n postMessage(navMsg);\r\n } catch (ex) {\r\n const msg = M.createResPEErrorMessage(ex.message\r\n || `Unknown error: ${JSON.stringify(ex)}`);\r\n postMessage(msg);\r\n }\r\n };\r\n\r\n reader.onerror = ev => {\r\n pe = null;\r\n const msg = M.createResPEErrorMessage(\"Can't open file.\");\r\n postMessage(msg);\r\n };\r\n\r\n reader.readAsArrayBuffer(msg.file);\r\n}\r\n\r\nfunction handleReqOpenNav(msg: W.ReqOpenNavMessage): void {\r\n if (pe != null) {\r\n const pageData = generatePageData(pe, msg.target.pageID);\r\n pageData.nav.elemID = msg.target.elemID;\r\n const res = M.createResPageDataMessage(pageData);\r\n postMessage(res);\r\n }\r\n}"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/worker/page-data/formatter.ts","webpack:///./src/worker/pe/image-flags.ts","webpack:///./src/worker/page-data/nav-data.ts","webpack:///./src/worker/page-data/metadata-headers.ts","webpack:///./src/worker/page-data/headers.ts","webpack:///./src/worker/page-data/generator.ts","webpack:///./src/worker/pe/error.ts","webpack:///./src/worker/pe/utils.ts","webpack:///./src/worker/pe/loader.ts","webpack:///./src/worker/pe/image.ts","webpack:///./src/worker/message.ts","webpack:///./src/worker/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","formatU1RawHex","padZeroLeft","toString","toUpperCase","formatU2RawHex","formatU4RawHex","formatU1Hex","formatU2Hex","formatU4Hex","formatHexDec","formatBytes","bytes","lineWidth","lines","start","length","line","Array","from","subarray","map","b","join","push","str","len","repeat","formatUIntField","f","sz","showDec","hex","offset","_offset","size","_size","rawData","data","formatDec","v","toLocaleString","formatStructTitle","title","formatU1Field","formatU2Field","formatU4Field","formatU8Field","high","low","formatBytesField","formatStringField","IMAGE_DOS_SIGNATURE","IMAGE_NT_SIGNATURE","IMAGE_NT_OPTIONAL_HDR32_MAGIC","IMAGE_NT_OPTIONAL_HDR64_MAGIC","ImageFile","ImageFileMachine","ImageSubsystem","ImageDllCharacteristics","ImageDirectoryEntry","IMAGE_NUMBEROF_DIRECTORY_ENTRIES","ImageSection","ComImageFlags","MetadataSignature","generateNavList","pe","pageID","navList","target","children","elemID","navMD","isManaged","hasMetadata","generateMDHeadersNavData","FM","generateMetadataHeadersPageData","nav","cliHeader","h","getCliHeader","items","cb","MajorRuntimeVersion","MinorRuntimeVersion","MetaData","VirtualAddress","Size","Flags","EntryPointToken","Resources","StrongNameSignature","CodeManagerTable","VTableFixups","ExportAddressTableJumps","ManagedNativeHeader","generateCliHeader","metadataRoot","getMetadataRoot","Signature","MajorVersion","MinorVersion","Reserved","VersionLength","VersionString","VersionPadding","Streams","generateMetadataRoot","streamHeaders","getMetadataStreamHeaders","groups","Name","Offset","Padding","generateMetadataStreamHeader","F","generateHeadersPageData","dosHeader","getDosHeader","e_magic","e_cblp","e_cp","e_crlc","e_cparhdr","e_minalloc","e_maxalloc","e_ss","e_sp","e_csum","e_ip","e_cs","e_lfarlc","e_ovno","e_res","e_oemid","e_oeminfo","e_res2","e_lfanew","generateDosHeader","peSignature","getPESignature","generatePESignature","fileHeader","getFileHeader","Machine","NumberOfSections","TimeDateStamp","PointerToSymbolTable","NumberOfSymbols","SizeOfOptionalHeader","Characteristics","generateFileHeader","optionalHeader","getOptionalHeader","Magic","MajorLinkerVersion","MinorLinkerVersion","SizeOfCode","SizeOfInitializedData","SizeOfUninitializedData","AddressOfEntryPoint","BaseOfCode","BaseOfData","ImageBase","SectionAlignment","FileAlignment","MajorOperatingSystemVersion","MinorOperatingSystemVersion","MajorImageVersion","MinorImageVersion","MajorSubsystemVersion","MinorSubsystemVersion","Win32VersionValue","SizeOfImage","SizeOfHeaders","CheckSum","Subsystem","DllCharacteristics","SizeOfStackReserve","SizeOfStackCommit","SizeOfHeapReserve","SizeOfHeapCommit","LoaderFlags","NumberOfRvaAndSizes","fillOptionalHeader32Fields","fillOptionalHeader64Fields","generateOptionalHeader","dataDirectories","getDataDirectories","generateDataDirectories","sectionHeaders","getSectionHeaders","VirtualSize","SizeOfRawData","PointerToRawData","PointerToRelocations","PointerToLinenumbers","NumberOfRelocations","NumberOfLinenumbers","generateSectionHeaders","headers_1","metadata_headers_1","generatePageData","PEError","_super","type","_this","this","__extends","Error","calculatePadding","dataSize","align","U","loadU1Field","getData","getU1","loadU2Field","getU2","loadU4Field","getU4","loadU8Field","loadU2EnumField","loadU4EnumField","loadFixedSizeByteArrayField","loadFixedSizeAsciiStringField","String","fromCharCode","apply","filter","loadNullTerminatedStringField","ptr","slice","Uint8Array","loadImageDataDirectory","loadU1EnumField","loadStructArrayByCount","loader","count","loadImageDosHeader","loadImageFileHeader","loadImageOptionalHeader32","loadImageOptionalHeader64","loadImageSectionHeader","loadCliHeader","loadMetadataRoot","loadMetadataStreamHeader","L","E","PEImage","buf","DataView","loadHeaders","load","check","getUint8","getUint16","getUint32","buffer","is32Bit","optHdr","dd","isDataDirectoryValid","IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR","hasManagedResources","hasStrongNameSignature","rvaToOffset","metadataStreamHeaders","mdRoot","rva","sh","getSectionHeaderByRva","offsetToRva","getSectionHeaderByOffset","byteLength","shift","createResNavDataMessage","createResPageDataMessage","pageData","createResPEPropsMessage","createResPEErrorMessage","error","M","image_1","generator_1","nav_data_1","onmessage","ev","msg","reader","FileReader","onload","result","pageDataMsg","postMessage","pePropsMsg","navMsg","ex","msg_1","message","JSON","stringify","onerror","readAsArrayBuffer","file","handleReqOpenFile","res","handleReqOpenNav"],"mappings":"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","file":"worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","import * as S from \"../pe/structures\";\r\nimport { format } from \"url\";\r\n\r\nexport function formatU1RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 2);\r\n}\r\n\r\nexport function formatU2RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 4);\r\n}\r\n\r\nexport function formatU4RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 8);\r\n}\r\n\r\nexport function formatU1Hex(d: number): string {\r\n return `${formatU1RawHex(d)}h`;\r\n}\r\n\r\nexport function formatU2Hex(d: number): string {\r\n return `${formatU2RawHex(d)}h`;\r\n}\r\n\r\nexport function formatU4Hex(d: number): string {\r\n return `${formatU4RawHex(d)}h`;\r\n}\r\n\r\nexport function formatHexDec(d: number): string {\r\n return `${d.toString(16).toUpperCase()}h (${d})`;\r\n}\r\n\r\nexport function formatBytes(bytes: Uint8Array, lineWidth: number = 16): string[] {\r\n let lines: string[] = [];\r\n for (let start = 0; start < bytes.length; start += lineWidth) {\r\n const line = Array.from(bytes.subarray(start, start + lineWidth))\r\n .map(b => formatU1RawHex(b)).join(\"-\");\r\n lines.push(line);\r\n }\r\n return lines;\r\n}\r\n\r\nexport function formatStructTitle(s: S.FileData, title: string): string {\r\n return `${title} [${formatU4Hex(s._offset)} - ${formatU4Hex(s._offset + s._size)} : ${formatHexDec(s._size)}]`;\r\n}\r\n\r\nexport function formatU1Field(name: string, f: S.U1Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 1, showDec);\r\n}\r\n\r\nexport function formatU2Field(name: string, f: S.U2Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 2, showDec);\r\n}\r\n\r\nexport function formatU4Field(name: string, f: S.U4Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 4, showDec);\r\n}\r\n\r\nexport function formatU8Field(name: string, f: S.U8Field, showDec?: boolean): W.StructItem {\r\n let value = `${formatU4RawHex(f.high)} ${formatU4Hex(f.low)}`;\r\n\r\n if (showDec && f.high < 0x1FFFFF) {\r\n const long = f.high * 0x100000000 + f.low;\r\n value += ` (${formatDec(long)})`;\r\n }\r\n\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value,\r\n };\r\n}\r\n\r\nexport function formatBytesField(name: string, f: S.Field): W.StructItem {\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: \"\",\r\n }\r\n}\r\n\r\nexport function formatStringField(name: string, f: S.StringField): W.StructItem {\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: `\"${f.value}\"`,\r\n }\r\n}\r\n\r\nfunction padZeroLeft(str: string, len: number): string {\r\n if (str.length < len) {\r\n return \"0\".repeat(len - str.length) + str;\r\n } else {\r\n return str;\r\n }\r\n}\r\n\r\nfunction formatUIntField(name: string, f: S.UIntField, sz: number, showDec?: boolean): W.StructItem {\r\n let hex: string;\r\n switch (sz) {\r\n case 1: hex = formatU1Hex(f.value); break;\r\n case 2: hex = formatU2Hex(f.value); break;\r\n case 4: hex = formatU4Hex(f.value); break;\r\n default: hex = f.value.toString(16).toUpperCase(); break;\r\n }\r\n\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: showDec ? `${hex} (${formatDec(f.value)})` : hex,\r\n }\r\n}\r\n\r\nfunction formatDec(v: number): string {\r\n return v.toLocaleString();\r\n}\r\n","export const IMAGE_DOS_SIGNATURE = 0x5A4D; // MZ\r\n\r\nexport const IMAGE_NT_SIGNATURE = 0x00004550; // PE00\r\n\r\nexport const IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b;\r\nexport const IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b;\r\n\r\nexport enum ImageFile {\r\n IMAGE_FILE_RELOCS_STRIPPED = 0x0001,\r\n IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002,\r\n IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004,\r\n IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008,\r\n IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010,\r\n IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020,\r\n IMAGE_FILE_BYTES_REVERSED_LO = 0x0080,\r\n IMAGE_FILE_32BIT_MACHINE = 0x0100,\r\n IMAGE_FILE_DEBUG_STRIPPED = 0x0200,\r\n IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400,\r\n IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800,\r\n IMAGE_FILE_SYSTEM = 0x1000,\r\n IMAGE_FILE_DLL = 0x2000,\r\n IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000,\r\n IMAGE_FILE_BYTES_REVERSED_HI = 0x8000,\r\n}\r\n\r\nexport enum ImageFileMachine {\r\n IMAGE_FILE_MACHINE_UNKNOWN = 0,\r\n IMAGE_FILE_MACHINE_TARGET_HOST = 0x0001,\r\n IMAGE_FILE_MACHINE_I386 = 0x014c,\r\n IMAGE_FILE_MACHINE_R3000 = 0x0162,\r\n IMAGE_FILE_MACHINE_R4000 = 0x0166,\r\n IMAGE_FILE_MACHINE_R10000 = 0x0168,\r\n IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169,\r\n IMAGE_FILE_MACHINE_ALPHA = 0x0184,\r\n IMAGE_FILE_MACHINE_SH3 = 0x01a2,\r\n IMAGE_FILE_MACHINE_SH3DSP = 0x01a3,\r\n IMAGE_FILE_MACHINE_SH3E = 0x01a4,\r\n IMAGE_FILE_MACHINE_SH4 = 0x01a6,\r\n IMAGE_FILE_MACHINE_SH5 = 0x01a8,\r\n IMAGE_FILE_MACHINE_ARM = 0x01c0,\r\n IMAGE_FILE_MACHINE_THUMB = 0x01c2,\r\n IMAGE_FILE_MACHINE_ARMNT = 0x01c4,\r\n IMAGE_FILE_MACHINE_AM33 = 0x01d3,\r\n IMAGE_FILE_MACHINE_POWERPC = 0x01F0,\r\n IMAGE_FILE_MACHINE_POWERPCFP = 0x01f1,\r\n IMAGE_FILE_MACHINE_IA64 = 0x0200,\r\n IMAGE_FILE_MACHINE_MIPS16 = 0x0266,\r\n IMAGE_FILE_MACHINE_ALPHA64 = 0x0284,\r\n IMAGE_FILE_MACHINE_MIPSFPU = 0x0366,\r\n IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466,\r\n IMAGE_FILE_MACHINE_AXP64 = IMAGE_FILE_MACHINE_ALPHA64,\r\n IMAGE_FILE_MACHINE_TRICORE = 0x0520,\r\n IMAGE_FILE_MACHINE_CEF = 0x0CEF,\r\n IMAGE_FILE_MACHINE_EBC = 0x0EBC,\r\n IMAGE_FILE_MACHINE_AMD64 = 0x8664,\r\n IMAGE_FILE_MACHINE_M32R = 0x9041,\r\n IMAGE_FILE_MACHINE_ARM64 = 0xAA64,\r\n IMAGE_FILE_MACHINE_CEE = 0xC0EE,\r\n}\r\n\r\nexport enum ImageSubsystem {\r\n IMAGE_SUBSYSTEM_UNKNOWN = 0,\r\n IMAGE_SUBSYSTEM_NATIVE = 1,\r\n IMAGE_SUBSYSTEM_WINDOWS_GUI = 2,\r\n IMAGE_SUBSYSTEM_WINDOWS_CUI = 3,\r\n IMAGE_SUBSYSTEM_OS2_CUI = 5,\r\n IMAGE_SUBSYSTEM_POSIX_CUI = 7,\r\n IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8,\r\n IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9,\r\n IMAGE_SUBSYSTEM_EFI_APPLICATION = 10,\r\n IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11,\r\n IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12,\r\n IMAGE_SUBSYSTEM_EFI_ROM = 13,\r\n IMAGE_SUBSYSTEM_XBOX = 14,\r\n IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16,\r\n IMAGE_SUBSYSTEM_XBOX_CODE_CATALOG = 17,\r\n}\r\n\r\nexport enum ImageDllCharacteristics {\r\n IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA = 0x0020,\r\n IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040,\r\n IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY = 0x0080,\r\n IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x0100,\r\n IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200,\r\n IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400,\r\n IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800,\r\n IMAGE_DLLCHARACTERISTICS_APPCONTAINER = 0x1000,\r\n IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000,\r\n IMAGE_DLLCHARACTERISTICS_GUARD_CF = 0x4000,\r\n IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000,\r\n}\r\n\r\nexport enum ImageDirectoryEntry {\r\n IMAGE_DIRECTORY_ENTRY_EXPORT = 0,\r\n IMAGE_DIRECTORY_ENTRY_IMPORT = 1,\r\n IMAGE_DIRECTORY_ENTRY_RESOURCE = 2,\r\n IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3,\r\n IMAGE_DIRECTORY_ENTRY_SECURITY = 4,\r\n IMAGE_DIRECTORY_ENTRY_BASERELOC = 5,\r\n IMAGE_DIRECTORY_ENTRY_DEBUG = 6,\r\n IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7,\r\n IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8,\r\n IMAGE_DIRECTORY_ENTRY_TLS = 9,\r\n IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10,\r\n IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11,\r\n IMAGE_DIRECTORY_ENTRY_IAT = 12,\r\n IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13,\r\n IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14,\r\n}\r\n\r\nexport const IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16;\r\n\r\nexport enum ImageSection {\r\n IMAGE_SCN_TYPE_NO_PAD = 0x00000008,\r\n\r\n IMAGE_SCN_CNT_CODE = 0x00000020,\r\n IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040,\r\n IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080,\r\n\r\n IMAGE_SCN_LNK_OTHER = 0x00000100,\r\n IMAGE_SCN_LNK_INFO = 0x00000200,\r\n IMAGE_SCN_LNK_REMOVE = 0x00000800,\r\n IMAGE_SCN_LNK_COMDAT = 0x00001000,\r\n\r\n IMAGE_SCN_NO_DEFER_SPEC_EXC = 0x00004000,\r\n IMAGE_SCN_GPREL = 0x00008000,\r\n\r\n IMAGE_SCN_MEM_PURGEABLE = 0x00020000,\r\n IMAGE_SCN_MEM_16BIT = 0x00020000,\r\n IMAGE_SCN_MEM_LOCKED = 0x00040000,\r\n IMAGE_SCN_MEM_PRELOAD = 0x00080000,\r\n\r\n IMAGE_SCN_ALIGN_1BYTES = 0x00100000,\r\n IMAGE_SCN_ALIGN_2BYTES = 0x00200000,\r\n IMAGE_SCN_ALIGN_4BYTES = 0x00300000,\r\n IMAGE_SCN_ALIGN_8BYTES = 0x00400000,\r\n IMAGE_SCN_ALIGN_16BYTES = 0x00500000,\r\n IMAGE_SCN_ALIGN_32BYTES = 0x00600000,\r\n IMAGE_SCN_ALIGN_64BYTES = 0x00700000,\r\n IMAGE_SCN_ALIGN_128BYTES = 0x00800000,\r\n IMAGE_SCN_ALIGN_256BYTES = 0x00900000,\r\n IMAGE_SCN_ALIGN_512BYTES = 0x00A00000,\r\n IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000,\r\n IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000,\r\n IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000,\r\n IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000,\r\n\r\n IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000,\r\n IMAGE_SCN_MEM_DISCARDABLE = 0x02000000,\r\n IMAGE_SCN_MEM_NOT_CACHED = 0x04000000,\r\n IMAGE_SCN_MEM_NOT_PAGED = 0x08000000,\r\n IMAGE_SCN_MEM_SHARED = 0x10000000,\r\n IMAGE_SCN_MEM_EXECUTE = 0x20000000,\r\n IMAGE_SCN_MEM_READ = 0x40000000,\r\n IMAGE_SCN_MEM_WRITE = 0x80000000,\r\n\r\n IMAGE_SCN_SCALE_INDEX = 0x00000001,\r\n}\r\n\r\nexport enum ComImageFlags {\r\n COMIMAGE_FLAGS_ILONLY = 0x00000001,\r\n COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,\r\n COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004,\r\n COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,\r\n COMIMAGE_FLAGS_NATIVE_ENTRYPOINT = 0x00000010,\r\n COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,\r\n COMIMAGE_FLAGS_32BITPREFERRED = 0x00020000,\r\n}\r\n\r\nexport const MetadataSignature = 0x424A5342;","import { PEImage } from \"../pe/image\";\r\n\r\nexport function generateNavList(pe: PEImage): W.NavData[] {\r\n let navList: W.NavData[] = [generateHeadersNavData(pe)];\r\n\r\n const navMD = generateMDHeadersNavData(pe);\r\n if (navMD) navList.push(navMD);\r\n\r\n return navList;\r\n}\r\n\r\nfunction generateHeadersNavData(pe: PEImage): W.NavData {\r\n const pageID = W.PageID.HEADERS;\r\n\r\n return {\r\n target: { pageID, title: W.KnownTitle.HEADERS },\r\n children: [{\r\n target: { pageID, title: W.KnownTitle.DOS_HEADER, elemID: W.KnownElemID.DOS_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.PE_SIGNATURE, elemID: W.KnownElemID.PE_SIGNATURE }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.FILE_HEADER, elemID: W.KnownElemID.FILE_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.OPTIONAL_HEADER, elemID: W.KnownElemID.OPTIONAL_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.DATA_DIRECTORIES, elemID: W.KnownElemID.DATA_DIRECTORIES }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.SECTION_HEADERS, elemID: W.KnownElemID.SECTION_HEADERS }\r\n }]\r\n };\r\n}\r\n\r\nfunction generateMDHeadersNavData(pe: PEImage): W.NavData | undefined {\r\n const pageID = W.PageID.MD_HEADERS;\r\n\r\n if (!pe.isManaged()) return undefined;\r\n\r\n let children: W.NavData[] = [{\r\n target: { pageID, title: W.KnownTitle.CLI_HEADER, elemID: W.KnownElemID.CLI_HEADER }\r\n }];\r\n\r\n if (pe.hasMetadata()) {\r\n children.push({\r\n target: { pageID, title: W.KnownTitle.MD_ROOT, elemID: W.KnownElemID.MD_ROOT }\r\n });\r\n children.push({\r\n target: { pageID, title: W.KnownTitle.MDS_HEADERS, elemID: W.KnownElemID.MDS_HEADERS }\r\n });\r\n }\r\n\r\n return {\r\n target: { pageID, title: W.KnownTitle.MD_HEADERS },\r\n children\r\n };\r\n}","import { PEImage } from \"../pe/image\";\r\nimport * as S from \"../pe/structures\";\r\nimport * as F from \"../pe/image-flags\";\r\nimport * as FM from \"./formatter\";\r\n\r\nexport function generateMetadataHeadersPageData(pe: PEImage): W.MetadataHeadersPageData {\r\n return {\r\n nav: {\r\n pageID: W.PageID.MD_HEADERS,\r\n title: W.KnownTitle.MD_HEADERS,\r\n },\r\n cliHeader: generateCliHeader(pe),\r\n metadataRoot: generateMetadataRoot(pe),\r\n streamHeaders: generateMetadataStreamHeader(pe),\r\n };\r\n\r\n}\r\n\r\nfunction generateCliHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.CLI_HEADER,\r\n elemID: W.KnownElemID.CLI_HEADER,\r\n };\r\n\r\n const h = pe.getCliHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU4Field(\"cb\", h.cb, true),\r\n FM.formatU2Field(\"MajorRuntimeVersion\", h.MajorRuntimeVersion, true),\r\n FM.formatU2Field(\"MinorRuntimeVersion\", h.MinorRuntimeVersion, true),\r\n FM.formatU4Field(\"MetaData.VirtualAddress\", h.MetaData.VirtualAddress),\r\n FM.formatU4Field(\"MetaData.Size\", h.MetaData.Size, true),\r\n FM.formatU4Field(\"Flags\", h.Flags),\r\n FM.formatU4Field(\"EntryPointToken\", h.EntryPointToken),\r\n FM.formatU4Field(\"Resources.VirtualAddress\", h.Resources.VirtualAddress),\r\n FM.formatU4Field(\"Resources.Size\", h.Resources.Size, true),\r\n FM.formatU4Field(\"StrongNameSignature.VirtualAddress\", h.StrongNameSignature.VirtualAddress),\r\n FM.formatU4Field(\"StrongNameSignature.Size\", h.StrongNameSignature.Size, true),\r\n FM.formatU4Field(\"CodeManagerTable.VirtualAddress\", h.CodeManagerTable.VirtualAddress),\r\n FM.formatU4Field(\"CodeManagerTable.Size\", h.CodeManagerTable.Size, true),\r\n FM.formatU4Field(\"VTableFixups.VirtualAddress\", h.VTableFixups.VirtualAddress),\r\n FM.formatU4Field(\"VTableFixups.Size\", h.VTableFixups.Size, true),\r\n FM.formatU4Field(\"ExportAddressTableJumps.VirtualAddress\", h.ExportAddressTableJumps.VirtualAddress),\r\n FM.formatU4Field(\"ExportAddressTableJumps.Size\", h.ExportAddressTableJumps.Size, true),\r\n FM.formatU4Field(\"ManagedNativeHeader.VirtualAddress\", h.ManagedNativeHeader.VirtualAddress),\r\n FM.formatU4Field(\"ManagedNativeHeader.Size\", h.ManagedNativeHeader.Size, true),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateMetadataRoot(pe: PEImage): W.SimpleStruct | undefined {\r\n const h = pe.getMetadataRoot();\r\n if (!h) return undefined;\r\n\r\n const s: W.SimpleStruct = {\r\n title: W.KnownTitle.MD_ROOT,\r\n elemID: W.KnownElemID.MD_ROOT,\r\n items: [\r\n FM.formatU4Field(\"Signature\", h.Signature),\r\n FM.formatU2Field(\"MajorVersion\", h.MajorVersion, true),\r\n FM.formatU2Field(\"MinorVersion\", h.MinorVersion, true),\r\n FM.formatU4Field(\"Reserved\", h.Reserved),\r\n FM.formatU4Field(\"VersionLength\", h.VersionLength, true),\r\n FM.formatStringField(\"VersionString\", h.VersionString),\r\n FM.formatBytesField(\"VersionPadding\", h.VersionPadding),\r\n FM.formatU2Field(\"Flags\", h.Flags),\r\n FM.formatU2Field(\"Streams\", h.Streams, true),\r\n ]\r\n };\r\n return s;\r\n}\r\n\r\nfunction generateMetadataStreamHeader(pe: PEImage): W.GroupedStruct | undefined {\r\n const h = pe.getMetadataStreamHeaders();\r\n if (!h) return undefined;\r\n\r\n const s: W.GroupedStruct = {\r\n title: W.KnownTitle.MDS_HEADERS,\r\n elemID: W.KnownElemID.MDS_HEADERS,\r\n groups: h.items.map((v, i) => ({\r\n title: `[${i}] (${v.Name.value})`,\r\n items: [\r\n FM.formatU4Field(\"Offset\", v.Offset),\r\n FM.formatU4Field(\"Size\", v.Size, true),\r\n FM.formatStringField(\"Name\", v.Name),\r\n FM.formatBytesField(\"Padding\", v.Padding),\r\n ]\r\n }))\r\n };\r\n return s;\r\n}","import { PEImage } from \"../pe/image\";\r\nimport * as S from \"../pe/structures\";\r\nimport * as F from \"../pe/image-flags\";\r\nimport * as FM from \"./formatter\";\r\n\r\nexport function generateHeadersPageData(pe: PEImage): W.HeadersPageData {\r\n return {\r\n nav: {\r\n pageID: W.PageID.HEADERS,\r\n title: W.KnownTitle.HEADERS,\r\n },\r\n dosHeader: generateDosHeader(pe),\r\n peSignature: generatePESignature(pe),\r\n fileHeader: generateFileHeader(pe),\r\n optionalHeader: generateOptionalHeader(pe),\r\n dataDirectories: generateDataDirectories(pe),\r\n sectionHeaders: generateSectionHeaders(pe),\r\n };\r\n}\r\n\r\nfunction generateDosHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.DOS_HEADER,\r\n elemID: W.KnownElemID.DOS_HEADER,\r\n };\r\n\r\n const h = pe.getDosHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU2Field(\"e_magic\", h.e_magic),\r\n FM.formatU2Field(\"e_cblp\", h.e_cblp),\r\n FM.formatU2Field(\"e_cp\", h.e_cp),\r\n FM.formatU2Field(\"e_crlc\", h.e_crlc),\r\n FM.formatU2Field(\"e_cparhdr\", h.e_cparhdr),\r\n FM.formatU2Field(\"e_minalloc\", h.e_minalloc),\r\n FM.formatU2Field(\"e_maxalloc\", h.e_maxalloc),\r\n FM.formatU2Field(\"e_ss\", h.e_ss),\r\n FM.formatU2Field(\"e_sp\", h.e_sp),\r\n FM.formatU2Field(\"e_csum\", h.e_csum),\r\n FM.formatU2Field(\"e_ip\", h.e_ip),\r\n FM.formatU2Field(\"e_cs\", h.e_cs),\r\n FM.formatU2Field(\"e_lfarlc\", h.e_lfarlc),\r\n FM.formatU2Field(\"e_ovno\", h.e_ovno),\r\n FM.formatBytesField(\"e_res\", h.e_res),\r\n FM.formatU2Field(\"e_oemid\", h.e_oemid),\r\n FM.formatU2Field(\"e_oeminfo\", h.e_oeminfo),\r\n FM.formatBytesField(\"e_res2\", h.e_res2),\r\n FM.formatU4Field(\"e_lfanew\", h.e_lfanew),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generatePESignature(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.PE_SIGNATURE,\r\n elemID: W.KnownElemID.PE_SIGNATURE,\r\n };\r\n\r\n const h = pe.getPESignature();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU4Field(\"PE Signature\", h),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateFileHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.FILE_HEADER,\r\n elemID: W.KnownElemID.FILE_HEADER,\r\n };\r\n\r\n const h = pe.getFileHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU2Field(\"Machine\", h.Machine),\r\n FM.formatU2Field(\"NumberOfSections\", h.NumberOfSections, true),\r\n FM.formatU4Field(\"TimeDateStamp\", h.TimeDateStamp),\r\n FM.formatU4Field(\"PointerToSymbolTable\", h.PointerToSymbolTable),\r\n FM.formatU4Field(\"NumberOfSymbols\", h.NumberOfSymbols, true),\r\n FM.formatU2Field(\"SizeOfOptionalHeader\", h.SizeOfOptionalHeader, true),\r\n FM.formatU2Field(\"Characteristics\", h.Characteristics),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateOptionalHeader(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.OPTIONAL_HEADER,\r\n elemID: W.KnownElemID.OPTIONAL_HEADER,\r\n };\r\n\r\n const h = pe.getOptionalHeader();\r\n if (!h) return s;\r\n\r\n switch (h.Magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r\n s.title += \" (32-bit)\";\r\n fillOptionalHeader32Fields(s, h);\r\n break;\r\n\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC:\r\n s.title += \" (64-bit)\";\r\n fillOptionalHeader64Fields(s, h);\r\n break;\r\n }\r\n\r\n return s;\r\n}\r\n\r\nfunction fillOptionalHeader32Fields(s: W.GroupedStruct, h: S.ImageOptionalHeader32): void {\r\n s.groups = [{\r\n title: \"Standard Fields\",\r\n items: [\r\n FM.formatU2Field(\"Magic\", h.Magic),\r\n FM.formatU1Field(\"MajorLinkerVersion\", h.MajorLinkerVersion, true),\r\n FM.formatU1Field(\"MinorLinkerVersion\", h.MinorLinkerVersion, true),\r\n FM.formatU4Field(\"SizeOfCode\", h.SizeOfCode, true),\r\n FM.formatU4Field(\"SizeOfInitializedData\", h.SizeOfInitializedData, true),\r\n FM.formatU4Field(\"SizeOfUninitializedData\", h.SizeOfUninitializedData, true),\r\n FM.formatU4Field(\"AddressOfEntryPoint\", h.AddressOfEntryPoint),\r\n FM.formatU4Field(\"BaseOfCode\", h.BaseOfCode),\r\n FM.formatU4Field(\"BaseOfData\", h.BaseOfData),\r\n ],\r\n }, {\r\n title: \"NT-specified Fields\",\r\n items: [\r\n FM.formatU4Field(\"ImageBase\", h.ImageBase),\r\n FM.formatU4Field(\"SectionAlignment\", h.SectionAlignment, true),\r\n FM.formatU4Field(\"FileAlignment\", h.FileAlignment, true),\r\n FM.formatU2Field(\"MajorOperatingSystemVersion\", h.MajorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MinorOperatingSystemVersion\", h.MinorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MajorImageVersion\", h.MajorImageVersion, true),\r\n FM.formatU2Field(\"MinorImageVersion\", h.MinorImageVersion, true),\r\n FM.formatU2Field(\"MajorSubsystemVersion\", h.MajorSubsystemVersion, true),\r\n FM.formatU2Field(\"MinorSubsystemVersion\", h.MinorSubsystemVersion, true),\r\n FM.formatU4Field(\"Win32VersionValue\", h.Win32VersionValue, true),\r\n FM.formatU4Field(\"SizeOfImage\", h.SizeOfImage, true),\r\n FM.formatU4Field(\"SizeOfHeaders\", h.SizeOfHeaders, true),\r\n FM.formatU4Field(\"CheckSum\", h.CheckSum),\r\n FM.formatU2Field(\"Subsystem\", h.Subsystem),\r\n FM.formatU2Field(\"DllCharacteristics\", h.DllCharacteristics),\r\n FM.formatU4Field(\"SizeOfStackReserve\", h.SizeOfStackReserve, true),\r\n FM.formatU4Field(\"SizeOfStackCommit\", h.SizeOfStackCommit, true),\r\n FM.formatU4Field(\"SizeOfHeapReserve\", h.SizeOfHeapReserve, true),\r\n FM.formatU4Field(\"SizeOfHeapCommit\", h.SizeOfHeapCommit, true),\r\n FM.formatU4Field(\"LoaderFlags\", h.LoaderFlags),\r\n FM.formatU4Field(\"NumberOfRvaAndSizes\", h.NumberOfRvaAndSizes, true),\r\n ],\r\n }];\r\n}\r\n\r\nfunction fillOptionalHeader64Fields(s: W.GroupedStruct, h: S.ImageOptionalHeader64): void {\r\n s.groups = [{\r\n title: \"Standard Fields\",\r\n items: [\r\n FM.formatU2Field(\"Magic\", h.Magic),\r\n FM.formatU1Field(\"MajorLinkerVersion\", h.MajorLinkerVersion, true),\r\n FM.formatU1Field(\"MinorLinkerVersion\", h.MinorLinkerVersion, true),\r\n FM.formatU4Field(\"SizeOfCode\", h.SizeOfCode, true),\r\n FM.formatU4Field(\"SizeOfInitializedData\", h.SizeOfInitializedData, true),\r\n FM.formatU4Field(\"SizeOfUninitializedData\", h.SizeOfUninitializedData, true),\r\n FM.formatU4Field(\"AddressOfEntryPoint\", h.AddressOfEntryPoint),\r\n FM.formatU4Field(\"BaseOfCode\", h.BaseOfCode),\r\n ],\r\n }, {\r\n title: \"NT-specified Fields\",\r\n items: [\r\n FM.formatU8Field(\"ImageBase\", h.ImageBase),\r\n FM.formatU4Field(\"SectionAlignment\", h.SectionAlignment, true),\r\n FM.formatU4Field(\"FileAlignment\", h.FileAlignment, true),\r\n FM.formatU2Field(\"MajorOperatingSystemVersion\", h.MajorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MinorOperatingSystemVersion\", h.MinorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MajorImageVersion\", h.MajorImageVersion, true),\r\n FM.formatU2Field(\"MinorImageVersion\", h.MinorImageVersion, true),\r\n FM.formatU2Field(\"MajorSubsystemVersion\", h.MajorSubsystemVersion, true),\r\n FM.formatU2Field(\"MinorSubsystemVersion\", h.MinorSubsystemVersion, true),\r\n FM.formatU4Field(\"Win32VersionValue\", h.Win32VersionValue, true),\r\n FM.formatU4Field(\"SizeOfImage\", h.SizeOfImage, true),\r\n FM.formatU4Field(\"SizeOfHeaders\", h.SizeOfHeaders, true),\r\n FM.formatU4Field(\"CheckSum\", h.CheckSum),\r\n FM.formatU2Field(\"Subsystem\", h.Subsystem),\r\n FM.formatU2Field(\"DllCharacteristics\", h.DllCharacteristics),\r\n FM.formatU8Field(\"SizeOfStackReserve\", h.SizeOfStackReserve, true),\r\n FM.formatU8Field(\"SizeOfStackCommit\", h.SizeOfStackCommit, true),\r\n FM.formatU8Field(\"SizeOfHeapReserve\", h.SizeOfHeapReserve, true),\r\n FM.formatU8Field(\"SizeOfHeapCommit\", h.SizeOfHeapCommit, true),\r\n FM.formatU4Field(\"LoaderFlags\", h.LoaderFlags),\r\n FM.formatU4Field(\"NumberOfRvaAndSizes\", h.NumberOfRvaAndSizes, true),\r\n ],\r\n }];\r\n}\r\n\r\nfunction generateDataDirectories(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.DATA_DIRECTORIES,\r\n elemID: W.KnownElemID.DATA_DIRECTORIES,\r\n };\r\n\r\n const h = pe.getDataDirectories();\r\n if (!h) return s;\r\n\r\n s.groups = h.items.map((v, i) => ({\r\n title: `[${i}] ${F.ImageDirectoryEntry[i] || \"\"}`,\r\n items: [\r\n FM.formatU4Field(\"VirtualAddress\", v.VirtualAddress),\r\n FM.formatU4Field(\"Size\", v.Size, true),\r\n ]\r\n } as W.SimpleStruct));\r\n\r\n return s;\r\n}\r\n\r\nfunction generateSectionHeaders(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.SECTION_HEADERS,\r\n elemID: W.KnownElemID.SECTION_HEADERS,\r\n };\r\n\r\n const h = pe.getSectionHeaders();\r\n if (!h) return s;\r\n\r\n s.groups = h.items.map((v, i) => ({\r\n title: `[${i}] (${v.Name.value})`,\r\n items: [\r\n FM.formatStringField(\"Name\", v.Name),\r\n FM.formatU4Field(\"VirtualSize\", v.VirtualSize, true),\r\n FM.formatU4Field(\"VirtualAddress\", v.VirtualAddress),\r\n FM.formatU4Field(\"SizeOfRawData\", v.SizeOfRawData, true),\r\n FM.formatU4Field(\"PointerToRawData\", v.PointerToRawData),\r\n FM.formatU4Field(\"PointerToRelocations\", v.PointerToRelocations),\r\n FM.formatU4Field(\"PointerToLinenumbers\", v.PointerToLinenumbers),\r\n FM.formatU2Field(\"NumberOfRelocations\", v.NumberOfRelocations, true),\r\n FM.formatU2Field(\"NumberOfLinenumbers\", v.NumberOfLinenumbers, true),\r\n FM.formatU4Field(\"Characteristics\", v.Characteristics),\r\n ]\r\n }));\r\n\r\n return s;\r\n}\r\n","import { PEImage } from \"../pe/image\";\r\nimport { generateHeadersPageData } from \"./headers\";\r\nimport { generateMetadataHeadersPageData } from \"./metadata-headers\";\r\n\r\nexport function generatePageData(pe: PEImage, pageID: W.PageID): W.PageData {\r\n switch (pageID) {\r\n case W.PageID.HEADERS: return generateHeadersPageData(pe);\r\n case W.PageID.MD_HEADERS: return generateMetadataHeadersPageData(pe);\r\n default: return { nav: { pageID: W.PageID.NOTFOUND, title: W.KnownTitle.NOTFOUND } };\r\n }\r\n}","export const enum PEErrorType {\r\n INVALID_DATA_POSITION = \"INVALID_DATA_POSITION\",\r\n INVALID_DOS_SIGNATURE = \"INVALID_DOS_SIGNATURE\",\r\n INVALID_PE_SIGNATURE = \"INVALID_PE_SIGNATURE\",\r\n INVALID_OPTIONAL_HEADER_MAGIC = \"INVALID_OPTIONAL_HEADER_MAGIC\",\r\n INVALID_DATA_DIRECTORY_COUNT = \"INVALID_DATA_DIRECTORY_COUNT\",\r\n}\r\n\r\nexport class PEError extends Error {\r\n constructor(\r\n public type: PEErrorType,\r\n public offset?: number,\r\n public size?: number\r\n ) {\r\n super(type);\r\n }\r\n}\r\n","export function calculatePadding(dataSize: number, align: number = 4): number {\n const r = dataSize % align;\n if (r == 0) {\n return 0;\n } else {\n return align - r;\n }\n}","import * as S from \"./structures\";\r\nimport * as F from \"./image-flags\";\r\nimport * as U from \"./utils\";\r\n\r\nexport interface FileDataProvider {\r\n getU1(p: number): number;\r\n getU2(p: number): number;\r\n getU4(p: number): number;\r\n getData(p: number, sz: number): Uint8Array;\r\n}\r\n\r\n//\r\n// Basic structures.\r\n//\r\n\r\nexport function loadU1Field(d: FileDataProvider, p: number): S.U1Field {\r\n return {\r\n _offset: p, _size: 1, data: d.getData(p, 1), value: d.getU1(p)\r\n };\r\n}\r\n\r\nexport function loadU2Field(d: FileDataProvider, p: number): S.U2Field {\r\n return {\r\n _offset: p, _size: 2, data: d.getData(p, 2), value: d.getU2(p)\r\n };\r\n}\r\n\r\nexport function loadU4Field(d: FileDataProvider, p: number): S.U4Field {\r\n return {\r\n _offset: p, _size: 4, data: d.getData(p, 4), value: d.getU4(p)\r\n };\r\n}\r\n\r\nexport function loadU8Field(d: FileDataProvider, p: number): S.U8Field {\r\n const low = d.getU4(p);\r\n const high = d.getU4(p + 4);\r\n\r\n return {\r\n _offset: p, _size: 8, data: d.getData(p, 8), low, high\r\n };\r\n}\r\n\r\nexport function loadU1EnumField(d: FileDataProvider, p: number): S.U1EnumField {\r\n return {\r\n _offset: p, _size: 1, data: d.getData(p, 1), value: d.getU1(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadU2EnumField(d: FileDataProvider, p: number): S.U2EnumField {\r\n return {\r\n _offset: p, _size: 2, data: d.getData(p, 2), value: d.getU2(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadU4EnumField(d: FileDataProvider, p: number): S.U4EnumField {\r\n return {\r\n _offset: p, _size: 4, data: d.getData(p, 4), value: d.getU4(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadFixedSizeByteArrayField(d: FileDataProvider, p: number, sz: number): S.Field {\r\n return {\r\n _offset: p, _size: sz, data: d.getData(p, sz)\r\n };\r\n}\r\n\r\nexport function loadFixedSizeAsciiStringField(d: FileDataProvider, p: number, sz: number): S.StringField {\r\n const data = d.getData(p, sz);\r\n const value = String.fromCharCode.apply(null, Array.from(data).filter(v => v != 0));\r\n\r\n return {\r\n _offset: p, _size: sz, data, value\r\n };\r\n}\r\n\r\nexport function loadNullTerminatedStringField(d: FileDataProvider, p: number): S.StringField {\r\n let bytes: number[] = [];\r\n let ptr = p;\r\n let b: number;\r\n\r\n do {\r\n b = d.getU1(ptr++);\r\n bytes.push(b);\r\n } while (b != 0);\r\n const value = String.fromCharCode.apply(null, bytes.slice(0, bytes.length - 1));\r\n\r\n return {\r\n _offset: p, _size: ptr - p, data: Uint8Array.from(bytes), value\r\n };\r\n}\r\n\r\nexport function loadStructArrayByCount(\r\n d: FileDataProvider,\r\n p: number,\r\n loader: (d: FileDataProvider, p: number) => T,\r\n count: number): S.StructArray {\r\n\r\n let items: T[] = [];\r\n let ptr = p;\r\n for (let i = 0; i < count; i++) {\r\n const s = loader(d, ptr);\r\n items.push(s);\r\n ptr += s._size;\r\n }\r\n\r\n return { _offset: p, _size: ptr - p, items };\r\n}\r\n\r\n//\r\n// Image headers.\r\n//\r\n\r\nexport function loadImageDosHeader(d: FileDataProvider, p: number): S.ImageDosHeader {\r\n let ptr = p;\r\n\r\n const e_magic = loadU2Field(d, ptr);\r\n ptr += e_magic._size;\r\n\r\n const e_cblp = loadU2Field(d, ptr);\r\n ptr += e_cblp._size;\r\n\r\n const e_cp = loadU2Field(d, ptr);\r\n ptr += e_cp._size;\r\n\r\n const e_crlc = loadU2Field(d, ptr);\r\n ptr += e_crlc._size;\r\n\r\n const e_cparhdr = loadU2Field(d, ptr);\r\n ptr += e_cparhdr._size;\r\n\r\n const e_minalloc = loadU2Field(d, ptr);\r\n ptr += e_minalloc._size;\r\n\r\n const e_maxalloc = loadU2Field(d, ptr);\r\n ptr += e_maxalloc._size;\r\n\r\n const e_ss = loadU2Field(d, ptr);\r\n ptr += e_ss._size;\r\n\r\n const e_sp = loadU2Field(d, ptr);\r\n ptr += e_sp._size;\r\n\r\n const e_csum = loadU2Field(d, ptr);\r\n ptr += e_csum._size;\r\n\r\n const e_ip = loadU2Field(d, ptr);\r\n ptr += e_ip._size;\r\n\r\n const e_cs = loadU2Field(d, ptr);\r\n ptr += e_cs._size;\r\n\r\n const e_lfarlc = loadU2Field(d, ptr);\r\n ptr += e_lfarlc._size;\r\n\r\n const e_ovno = loadU2Field(d, ptr);\r\n ptr += e_ovno._size;\r\n\r\n const e_res = loadFixedSizeByteArrayField(d, ptr, 4 * 2);\r\n ptr += e_res._size;\r\n\r\n const e_oemid = loadU2Field(d, ptr);\r\n ptr += e_oemid._size;\r\n\r\n const e_oeminfo = loadU2Field(d, ptr);\r\n ptr += e_oeminfo._size;\r\n\r\n const e_res2 = loadFixedSizeByteArrayField(d, ptr, 10 * 2);\r\n ptr += e_res2._size;\r\n\r\n const e_lfanew = loadU4Field(d, ptr);\r\n ptr += e_lfanew._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n e_magic,\r\n e_cblp,\r\n e_cp,\r\n e_crlc,\r\n e_cparhdr,\r\n e_minalloc,\r\n e_maxalloc,\r\n e_ss,\r\n e_sp,\r\n e_csum,\r\n e_ip,\r\n e_cs,\r\n e_lfarlc,\r\n e_ovno,\r\n e_res,\r\n e_oemid,\r\n e_oeminfo,\r\n e_res2,\r\n e_lfanew,\r\n };\r\n}\r\n\r\nexport function loadImageFileHeader(d: FileDataProvider, p: number): S.ImageFileHeader {\r\n let ptr = p;\r\n\r\n const Machine = loadU2Field(d, ptr);\r\n ptr += Machine._size;\r\n\r\n const NumberOfSections = loadU2Field(d, ptr);\r\n ptr += NumberOfSections._size;\r\n\r\n const TimeDateStamp = loadU4Field(d, ptr);\r\n ptr += TimeDateStamp._size;\r\n\r\n const PointerToSymbolTable = loadU4Field(d, ptr);\r\n ptr += PointerToSymbolTable._size;\r\n\r\n const NumberOfSymbols = loadU4Field(d, ptr);\r\n ptr += NumberOfSymbols._size;\r\n\r\n const SizeOfOptionalHeader = loadU2Field(d, ptr);\r\n ptr += SizeOfOptionalHeader._size;\r\n\r\n const Characteristics = loadU2EnumField(d, ptr);\r\n ptr += Characteristics._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Machine,\r\n NumberOfSections,\r\n TimeDateStamp,\r\n PointerToSymbolTable,\r\n NumberOfSymbols,\r\n SizeOfOptionalHeader,\r\n Characteristics,\r\n };\r\n}\r\n\r\nexport function loadImageOptionalHeader32(d: FileDataProvider, p: number): S.ImageOptionalHeader32 {\r\n let ptr = p;\r\n\r\n const Magic = loadU2Field(d, ptr);\r\n ptr += Magic._size;\r\n\r\n const MajorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MajorLinkerVersion._size;\r\n\r\n const MinorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MinorLinkerVersion._size;\r\n\r\n const SizeOfCode = loadU4Field(d, ptr);\r\n ptr += SizeOfCode._size;\r\n\r\n const SizeOfInitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfInitializedData._size;\r\n\r\n const SizeOfUninitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfUninitializedData._size;\r\n\r\n const AddressOfEntryPoint = loadU4Field(d, ptr);\r\n ptr += AddressOfEntryPoint._size;\r\n\r\n const BaseOfCode = loadU4Field(d, ptr);\r\n ptr += BaseOfCode._size;\r\n\r\n const BaseOfData = loadU4Field(d, ptr);\r\n ptr += BaseOfData._size;\r\n\r\n const ImageBase = loadU4Field(d, ptr);\r\n ptr += ImageBase._size;\r\n\r\n const SectionAlignment = loadU4Field(d, ptr);\r\n ptr += SectionAlignment._size;\r\n\r\n const FileAlignment = loadU4Field(d, ptr);\r\n ptr += FileAlignment._size;\r\n\r\n const MajorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorOperatingSystemVersion._size;\r\n\r\n const MinorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorOperatingSystemVersion._size;\r\n\r\n const MajorImageVersion = loadU2Field(d, ptr);\r\n ptr += MajorImageVersion._size;\r\n\r\n const MinorImageVersion = loadU2Field(d, ptr);\r\n ptr += MinorImageVersion._size;\r\n\r\n const MajorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorSubsystemVersion._size;\r\n\r\n const MinorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorSubsystemVersion._size;\r\n\r\n const Win32VersionValue = loadU4Field(d, ptr);\r\n ptr += Win32VersionValue._size;\r\n\r\n const SizeOfImage = loadU4Field(d, ptr);\r\n ptr += SizeOfImage._size;\r\n\r\n const SizeOfHeaders = loadU4Field(d, ptr);\r\n ptr += SizeOfHeaders._size;\r\n\r\n const CheckSum = loadU4Field(d, ptr);\r\n ptr += CheckSum._size;\r\n\r\n const Subsystem = loadU2EnumField(d, ptr);\r\n ptr += Subsystem._size;\r\n\r\n const DllCharacteristics = loadU2EnumField(d, ptr);\r\n ptr += DllCharacteristics._size;\r\n\r\n const SizeOfStackReserve = loadU4Field(d, ptr);\r\n ptr += SizeOfStackReserve._size;\r\n\r\n const SizeOfStackCommit = loadU4Field(d, ptr);\r\n ptr += SizeOfStackCommit._size;\r\n\r\n const SizeOfHeapReserve = loadU4Field(d, ptr);\r\n ptr += SizeOfHeapReserve._size;\r\n\r\n const SizeOfHeapCommit = loadU4Field(d, ptr);\r\n ptr += SizeOfHeapCommit._size;\r\n\r\n const LoaderFlags = loadU4Field(d, ptr);\r\n ptr += LoaderFlags._size;\r\n\r\n const NumberOfRvaAndSizes = loadU4Field(d, ptr);\r\n ptr += NumberOfRvaAndSizes._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Magic,\r\n MajorLinkerVersion,\r\n MinorLinkerVersion,\r\n SizeOfCode,\r\n SizeOfInitializedData,\r\n SizeOfUninitializedData,\r\n AddressOfEntryPoint,\r\n BaseOfCode,\r\n BaseOfData,\r\n ImageBase,\r\n SectionAlignment,\r\n FileAlignment,\r\n MajorOperatingSystemVersion,\r\n MinorOperatingSystemVersion,\r\n MajorImageVersion,\r\n MinorImageVersion,\r\n MajorSubsystemVersion,\r\n MinorSubsystemVersion,\r\n Win32VersionValue,\r\n SizeOfImage,\r\n SizeOfHeaders,\r\n CheckSum,\r\n Subsystem,\r\n DllCharacteristics,\r\n SizeOfStackReserve,\r\n SizeOfStackCommit,\r\n SizeOfHeapReserve,\r\n SizeOfHeapCommit,\r\n LoaderFlags,\r\n NumberOfRvaAndSizes,\r\n };\r\n}\r\n\r\nexport function loadImageOptionalHeader64(d: FileDataProvider, p: number): S.ImageOptionalHeader64 {\r\n let ptr = p;\r\n\r\n const Magic = loadU2Field(d, ptr);\r\n ptr += Magic._size;\r\n\r\n const MajorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MajorLinkerVersion._size;\r\n\r\n const MinorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MinorLinkerVersion._size;\r\n\r\n const SizeOfCode = loadU4Field(d, ptr);\r\n ptr += SizeOfCode._size;\r\n\r\n const SizeOfInitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfInitializedData._size;\r\n\r\n const SizeOfUninitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfUninitializedData._size;\r\n\r\n const AddressOfEntryPoint = loadU4Field(d, ptr);\r\n ptr += AddressOfEntryPoint._size;\r\n\r\n const BaseOfCode = loadU4Field(d, ptr);\r\n ptr += BaseOfCode._size;\r\n\r\n const ImageBase = loadU8Field(d, ptr);\r\n ptr += ImageBase._size;\r\n\r\n const SectionAlignment = loadU4Field(d, ptr);\r\n ptr += SectionAlignment._size;\r\n\r\n const FileAlignment = loadU4Field(d, ptr);\r\n ptr += FileAlignment._size;\r\n\r\n const MajorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorOperatingSystemVersion._size;\r\n\r\n const MinorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorOperatingSystemVersion._size;\r\n\r\n const MajorImageVersion = loadU2Field(d, ptr);\r\n ptr += MajorImageVersion._size;\r\n\r\n const MinorImageVersion = loadU2Field(d, ptr);\r\n ptr += MinorImageVersion._size;\r\n\r\n const MajorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorSubsystemVersion._size;\r\n\r\n const MinorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorSubsystemVersion._size;\r\n\r\n const Win32VersionValue = loadU4Field(d, ptr);\r\n ptr += Win32VersionValue._size;\r\n\r\n const SizeOfImage = loadU4Field(d, ptr);\r\n ptr += SizeOfImage._size;\r\n\r\n const SizeOfHeaders = loadU4Field(d, ptr);\r\n ptr += SizeOfHeaders._size;\r\n\r\n const CheckSum = loadU4Field(d, ptr);\r\n ptr += CheckSum._size;\r\n\r\n const Subsystem = loadU2EnumField(d, ptr);\r\n ptr += Subsystem._size;\r\n\r\n const DllCharacteristics = loadU2EnumField(d, ptr);\r\n ptr += DllCharacteristics._size;\r\n\r\n const SizeOfStackReserve = loadU8Field(d, ptr);\r\n ptr += SizeOfStackReserve._size;\r\n\r\n const SizeOfStackCommit = loadU8Field(d, ptr);\r\n ptr += SizeOfStackCommit._size;\r\n\r\n const SizeOfHeapReserve = loadU8Field(d, ptr);\r\n ptr += SizeOfHeapReserve._size;\r\n\r\n const SizeOfHeapCommit = loadU8Field(d, ptr);\r\n ptr += SizeOfHeapCommit._size;\r\n\r\n const LoaderFlags = loadU4Field(d, ptr);\r\n ptr += LoaderFlags._size;\r\n\r\n const NumberOfRvaAndSizes = loadU4Field(d, ptr);\r\n ptr += NumberOfRvaAndSizes._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Magic,\r\n MajorLinkerVersion,\r\n MinorLinkerVersion,\r\n SizeOfCode,\r\n SizeOfInitializedData,\r\n SizeOfUninitializedData,\r\n AddressOfEntryPoint,\r\n BaseOfCode,\r\n ImageBase,\r\n SectionAlignment,\r\n FileAlignment,\r\n MajorOperatingSystemVersion,\r\n MinorOperatingSystemVersion,\r\n MajorImageVersion,\r\n MinorImageVersion,\r\n MajorSubsystemVersion,\r\n MinorSubsystemVersion,\r\n Win32VersionValue,\r\n SizeOfImage,\r\n SizeOfHeaders,\r\n CheckSum,\r\n Subsystem,\r\n DllCharacteristics,\r\n SizeOfStackReserve,\r\n SizeOfStackCommit,\r\n SizeOfHeapReserve,\r\n SizeOfHeapCommit,\r\n LoaderFlags,\r\n NumberOfRvaAndSizes,\r\n };\r\n}\r\n\r\nexport function loadImageDataDirectory(d: FileDataProvider, p: number): S.ImageDataDirectory {\r\n let ptr = p;\r\n\r\n const VirtualAddress = loadU4Field(d, ptr);\r\n ptr += VirtualAddress._size;\r\n\r\n const Size = loadU4Field(d, ptr);\r\n ptr += Size._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n VirtualAddress,\r\n Size,\r\n };\r\n}\r\n\r\nexport function loadImageSectionHeader(d: FileDataProvider, p: number): S.ImageSectionHeader {\r\n let ptr = p;\r\n\r\n const Name = loadFixedSizeAsciiStringField(d, ptr, 8);\r\n ptr += Name._size;\r\n\r\n const VirtualSize = loadU4Field(d, ptr);\r\n ptr += VirtualSize._size;\r\n\r\n const VirtualAddress = loadU4Field(d, ptr);\r\n ptr += VirtualAddress._size;\r\n\r\n const SizeOfRawData = loadU4Field(d, ptr);\r\n ptr += SizeOfRawData._size;\r\n\r\n const PointerToRawData = loadU4Field(d, ptr);\r\n ptr += PointerToRawData._size;\r\n\r\n const PointerToRelocations = loadU4Field(d, ptr);\r\n ptr += PointerToRelocations._size;\r\n\r\n const PointerToLinenumbers = loadU4Field(d, ptr);\r\n ptr += PointerToLinenumbers._size;\r\n\r\n const NumberOfRelocations = loadU2Field(d, ptr);\r\n ptr += NumberOfRelocations._size;\r\n\r\n const NumberOfLinenumbers = loadU2Field(d, ptr);\r\n ptr += NumberOfLinenumbers._size;\r\n\r\n const Characteristics = loadU4EnumField(d, ptr);\r\n ptr += Characteristics._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Name,\r\n VirtualSize,\r\n VirtualAddress,\r\n SizeOfRawData,\r\n PointerToRawData,\r\n PointerToRelocations,\r\n PointerToLinenumbers,\r\n NumberOfRelocations,\r\n NumberOfLinenumbers,\r\n Characteristics,\r\n };\r\n}\r\n\r\n//\r\n// Metadata structures.\r\n//\r\n\r\nexport function loadCliHeader(d: FileDataProvider, p: number): S.CliHeader {\r\n let ptr = p;\r\n\r\n const cb = loadU4Field(d, ptr);\r\n ptr += cb._size;\r\n\r\n const MajorRuntimeVersion = loadU2Field(d, ptr);\r\n ptr += MajorRuntimeVersion._size;\r\n\r\n const MinorRuntimeVersion = loadU2Field(d, ptr);\r\n ptr += MinorRuntimeVersion._size;\r\n\r\n const MetaData = loadImageDataDirectory(d, ptr);\r\n ptr += MetaData._size;\r\n\r\n const Flags = loadU4Field(d, ptr);\r\n ptr += Flags._size;\r\n\r\n const EntryPointToken = loadU4Field(d, ptr);\r\n ptr += EntryPointToken._size;\r\n\r\n const Resources = loadImageDataDirectory(d, ptr);\r\n ptr += Resources._size;\r\n\r\n const StrongNameSignature = loadImageDataDirectory(d, ptr);\r\n ptr += StrongNameSignature._size;\r\n\r\n const CodeManagerTable = loadImageDataDirectory(d, ptr);\r\n ptr += CodeManagerTable._size;\r\n\r\n const VTableFixups = loadImageDataDirectory(d, ptr);\r\n ptr += VTableFixups._size;\r\n\r\n const ExportAddressTableJumps = loadImageDataDirectory(d, ptr);\r\n ptr += ExportAddressTableJumps._size;\r\n\r\n const ManagedNativeHeader = loadImageDataDirectory(d, ptr);\r\n ptr += ManagedNativeHeader._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n cb,\r\n MajorRuntimeVersion,\r\n MinorRuntimeVersion,\r\n MetaData,\r\n Flags,\r\n EntryPointToken,\r\n Resources,\r\n StrongNameSignature,\r\n CodeManagerTable,\r\n VTableFixups,\r\n ExportAddressTableJumps,\r\n ManagedNativeHeader,\r\n };\r\n}\r\n\r\nexport function loadMetadataRoot(d: FileDataProvider, p: number): S.MetadataRoot {\r\n let ptr = p;\r\n\r\n const Signature = loadU4Field(d, ptr);\r\n ptr += Signature._size;\r\n\r\n const MajorVersion = loadU2Field(d, ptr);\r\n ptr += MajorVersion._size;\r\n\r\n const MinorVersion = loadU2Field(d, ptr);\r\n ptr += MinorVersion._size;\r\n\r\n const Reserved = loadU4Field(d, ptr);\r\n ptr += Reserved._size;\r\n\r\n const VersionLength = loadU4Field(d, ptr);\r\n ptr += VersionLength._size;\r\n\r\n const VersionString = loadNullTerminatedStringField(d, ptr);\r\n ptr += VersionString._size;\r\n\r\n const paddingSize = U.calculatePadding(VersionString._size);\r\n const VersionPadding = loadFixedSizeByteArrayField(d, ptr, paddingSize);\r\n ptr += VersionPadding._size;\r\n\r\n const Flags = loadU2Field(d, ptr);\r\n ptr += Flags._size;\r\n\r\n const Streams = loadU2Field(d, ptr);\r\n ptr += Streams._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Signature,\r\n MajorVersion,\r\n MinorVersion,\r\n Reserved,\r\n VersionLength,\r\n VersionString,\r\n VersionPadding,\r\n Flags,\r\n Streams,\r\n };\r\n}\r\n\r\nexport function loadMetadataStreamHeader(d: FileDataProvider, p: number): S.MetadataStreamHeader {\r\n let ptr = p;\r\n\r\n const Offset = loadU4Field(d, ptr);\r\n ptr += Offset._size;\r\n\r\n const Size = loadU4Field(d, ptr);\r\n ptr += Size._size;\r\n\r\n const Name = loadNullTerminatedStringField(d, ptr);\r\n ptr += Name._size;\r\n\r\n const paddingSize = U.calculatePadding(Name._size);\r\n const Padding = loadFixedSizeByteArrayField(d, ptr, paddingSize);\r\n ptr += Padding._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Offset,\r\n Size,\r\n Name,\r\n Padding,\r\n };\r\n}","import * as S from \"./structures\";\r\nimport * as L from \"./loader\";\r\nimport * as F from \"./image-flags\";\r\nimport * as E from \"./error\";\r\n\r\nexport class PEImage implements L.FileDataProvider {\r\n public static load(buf: ArrayBuffer): PEImage {\r\n return new PEImage(buf);\r\n }\r\n\r\n //\r\n // FileDataProvider functions.\r\n //\r\n\r\n public getU1(p: number): number {\r\n this.check(p, 1);\r\n return this.data.getUint8(p);\r\n }\r\n\r\n public getU2(p: number): number {\r\n this.check(p, 2);\r\n return this.data.getUint16(p, true);\r\n }\r\n\r\n public getU4(p: number): number {\r\n this.check(p, 3);\r\n return this.data.getUint32(p, true);\r\n }\r\n\r\n public getData(p: number, sz: number): Uint8Array {\r\n this.check(p, sz);\r\n return new Uint8Array(this.data.buffer.slice(p, p + sz));\r\n }\r\n\r\n //\r\n // Image attributes.\r\n //\r\n\r\n public is32Bit(): boolean | undefined {\r\n const optHdr = this.getOptionalHeader();\r\n if (optHdr == null) {\r\n return undefined;\r\n }\r\n\r\n switch (optHdr.Magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC: return true;\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC: return false;\r\n default: return undefined;\r\n }\r\n }\r\n\r\n public isManaged(): boolean {\r\n const dd = this.getDataDirectories();\r\n return dd != null && this.isDataDirectoryValid(\r\n dd.items[F.ImageDirectoryEntry.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR]\r\n );\r\n }\r\n\r\n public hasMetadata(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.MetaData);\r\n }\r\n\r\n public hasManagedResources(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.Resources);\r\n }\r\n\r\n public hasStrongNameSignature(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.StrongNameSignature);\r\n }\r\n\r\n //\r\n // Image headers.\r\n //\r\n\r\n public getDosHeader(): S.ImageDosHeader | undefined {\r\n return this.dosHeader;\r\n }\r\n\r\n public getPESignature(): S.U4Field | undefined {\r\n return this.peSignature;\r\n }\r\n\r\n public getFileHeader(): S.ImageFileHeader | undefined {\r\n return this.fileHeader;\r\n }\r\n\r\n public getOptionalHeader(): S.ImageOptionalHeader32 | S.ImageOptionalHeader64 | undefined {\r\n return this.optionalHeader;\r\n }\r\n\r\n public getDataDirectories(): S.StructArray | undefined {\r\n return this.dataDirectories;\r\n }\r\n\r\n public getSectionHeaders(): S.StructArray | undefined {\r\n return this.sectionHeaders;\r\n }\r\n\r\n //\r\n // Metadata structures.\r\n //\r\n\r\n public getCliHeader(): S.CliHeader | undefined {\r\n if (this.cliHeader != null) return this.cliHeader;\r\n if (!this.isManaged()) return undefined;\r\n\r\n const offset = this.rvaToOffset(this.dataDirectories!\r\n .items[F.ImageDirectoryEntry.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR]\r\n .VirtualAddress.value);\r\n\r\n this.cliHeader = L.loadCliHeader(this, offset);\r\n return this.cliHeader;\r\n }\r\n\r\n public getMetadataRoot(): S.MetadataRoot | undefined {\r\n if (this.metadataRoot != null) return this.metadataRoot;\r\n\r\n const cliHeader = this.getCliHeader();\r\n if (!cliHeader) return undefined;\r\n\r\n const offset = this.rvaToOffset(cliHeader.MetaData.VirtualAddress.value);\r\n if (!offset) return undefined;\r\n\r\n this.metadataRoot = L.loadMetadataRoot(this, offset);\r\n return this.metadataRoot;\r\n }\r\n\r\n public getMetadataStreamHeaders(): S.StructArray | undefined {\r\n if (this.metadataStreamHeaders != null) return this.metadataStreamHeaders;\r\n\r\n const mdRoot = this.getMetadataRoot();\r\n if (!mdRoot || !mdRoot.Streams.value) return undefined;\r\n\r\n this.metadataStreamHeaders = L.loadStructArrayByCount(\r\n this,\r\n mdRoot._offset + mdRoot._size,\r\n L.loadMetadataStreamHeader,\r\n mdRoot.Streams.value\r\n );\r\n return this.metadataStreamHeaders;\r\n }\r\n\r\n //\r\n // Utilities.\r\n //\r\n\r\n public rvaToOffset(rva: number): number {\r\n const sh = this.getSectionHeaderByRva(rva);\r\n if (!sh) return 0;\r\n\r\n return rva - sh.VirtualAddress.value + sh.PointerToRawData.value;\r\n }\r\n\r\n public offsetToRva(offset: number): number {\r\n const sh = this.getSectionHeaderByOffset(offset);\r\n if (!sh) return 0;\r\n\r\n return offset - sh.PointerToRawData.value + sh.VirtualAddress.value;\r\n }\r\n\r\n //\r\n // Private implementations.\r\n //\r\n\r\n private check(p: number, sz: number): void {\r\n if (p < 0 || p >= this.data.byteLength\r\n || sz < 0 || p + sz > this.data.byteLength) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DATA_POSITION, p, sz);\r\n }\r\n }\r\n\r\n private constructor(buf: ArrayBuffer) {\r\n this.data = new DataView(buf);\r\n this.loadHeaders();\r\n }\r\n\r\n private loadHeaders(): void {\r\n let ptr = 0;\r\n this.dosHeader = L.loadImageDosHeader(this, ptr);\r\n\r\n if (this.dosHeader.e_magic.value != F.IMAGE_DOS_SIGNATURE) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DOS_SIGNATURE, ptr, 2);\r\n }\r\n\r\n ptr = this.dosHeader.e_lfanew.value;\r\n this.peSignature = L.loadU4Field(this, ptr);\r\n\r\n if (this.peSignature.value != F.IMAGE_NT_SIGNATURE) {\r\n throw new E.PEError(E.PEErrorType.INVALID_PE_SIGNATURE, ptr, 4);\r\n }\r\n\r\n ptr += this.peSignature._size;\r\n this.fileHeader = L.loadImageFileHeader(this, ptr);\r\n\r\n ptr += this.fileHeader._size;\r\n const magic = L.loadU2Field(this, ptr);\r\n switch (magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r\n this.optionalHeader = L.loadImageOptionalHeader32(this, ptr);\r\n break;\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC:\r\n this.optionalHeader = L.loadImageOptionalHeader64(this, ptr);\r\n break;\r\n default:\r\n throw new E.PEError(E.PEErrorType.INVALID_OPTIONAL_HEADER_MAGIC, ptr, 2);\r\n }\r\n\r\n if (this.optionalHeader.NumberOfRvaAndSizes.value != F.IMAGE_NUMBEROF_DIRECTORY_ENTRIES) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DATA_DIRECTORY_COUNT,\r\n this.optionalHeader.NumberOfRvaAndSizes._offset,\r\n this.optionalHeader.NumberOfRvaAndSizes._size);\r\n }\r\n\r\n ptr += this.optionalHeader._size;\r\n this.dataDirectories = L.loadStructArrayByCount(this, ptr,\r\n L.loadImageDataDirectory,\r\n this.optionalHeader.NumberOfRvaAndSizes.value);\r\n\r\n ptr += this.dataDirectories._size;\r\n this.sectionHeaders = L.loadStructArrayByCount(this, ptr,\r\n L.loadImageSectionHeader,\r\n this.fileHeader.NumberOfSections.value);\r\n }\r\n\r\n private getSectionHeaderByOffset(offset: number): S.ImageSectionHeader | undefined {\r\n return this.sectionHeaders && this.sectionHeaders.items.filter(h => {\r\n const p = h.PointerToRawData.value;\r\n const sz = h.SizeOfRawData.value;\r\n return offset >= p && offset < p + sz;\r\n }).shift();\r\n }\r\n\r\n private getSectionHeaderByRva(rva: number): S.ImageSectionHeader | undefined {\r\n return this.sectionHeaders && this.sectionHeaders.items.filter(h => {\r\n const p = h.VirtualAddress.value;\r\n const sz = h.VirtualSize.value;\r\n return rva >= p && rva < p + sz;\r\n }).shift();\r\n }\r\n\r\n private isDataDirectoryValid(dd?: S.ImageDataDirectory): boolean {\r\n return (dd && dd.VirtualAddress.value > 0 && dd.Size.value > 0) || false;\r\n }\r\n\r\n private readonly data: DataView;\r\n\r\n private dosHeader?: S.ImageDosHeader;\r\n private peSignature?: S.U4Field;\r\n private fileHeader?: S.ImageFileHeader;\r\n private optionalHeader?: S.ImageOptionalHeader32 | S.ImageOptionalHeader64;\r\n private dataDirectories?: S.StructArray;\r\n private sectionHeaders?: S.StructArray;\r\n\r\n private cliHeader?: S.CliHeader;\r\n private metadataRoot?: S.MetadataRoot;\r\n private metadataStreamHeaders?: S.StructArray;\r\n}\r\n","export function createResNavDataMessage(navList: W.NavData[]): W.ResNavDataMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_NAV_DATA,\r\n navList\r\n };\r\n}\r\n\r\nexport function createResPageDataMessage(pageData: W.PageData): W.ResPageDataMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PAGE_DATA,\r\n pageData\r\n };\r\n}\r\n\r\nexport function createResPEPropsMessage(is32Bit?: boolean, isManaged?: boolean): W.ResPEPropsMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PE_PROPS,\r\n is32Bit,\r\n isManaged\r\n };\r\n}\r\n\r\nexport function createResPEErrorMessage(error: string): W.ResPEErrorMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PE_ERROR,\r\n error\r\n };\r\n}\r\n","import * as M from \"./message\";\r\nimport { PEImage } from \"./pe/image\";\r\nimport { generatePageData } from \"./page-data/generator\";\r\nimport { generateNavList } from \"./page-data/nav-data\";\r\n\r\nlet pe: PEImage | null = null;\r\n\r\nonmessage = (ev) => {\r\n const msg = ev.data as W.WorkerMessage;\r\n switch (msg.type) {\r\n case W.WorkerMessageType.REQ_OPEN_FILE:\r\n handleReqOpenFile(msg as W.ReqOpenFileMessage);\r\n break;\r\n\r\n case W.WorkerMessageType.REQ_OPEN_NAV:\r\n handleReqOpenNav(msg as W.ReqOpenNavMessage);\r\n break;\r\n }\r\n};\r\n\r\nfunction handleReqOpenFile(msg: W.ReqOpenFileMessage): void {\r\n let reader = new FileReader();\r\n\r\n reader.onload = ev => {\r\n try {\r\n const buf = (ev.target).result;\r\n pe = PEImage.load(buf);\r\n\r\n // Response with page data.\r\n const pageData = generatePageData(pe, W.PageID.HEADERS);\r\n const pageDataMsg = M.createResPageDataMessage(pageData);\r\n postMessage(pageDataMsg);\r\n\r\n // Response with PE properties.\r\n const is32Bit = pe.is32Bit();\r\n const isManaged = pe.isManaged();\r\n const pePropsMsg = M.createResPEPropsMessage(is32Bit, isManaged);\r\n postMessage(pePropsMsg);\r\n\r\n // Response with navigation data.\r\n const navList = generateNavList(pe);\r\n const navMsg = M.createResNavDataMessage(navList);\r\n postMessage(navMsg);\r\n } catch (ex) {\r\n const msg = M.createResPEErrorMessage(ex.message\r\n || `Unknown error: ${JSON.stringify(ex)}`);\r\n postMessage(msg);\r\n }\r\n };\r\n\r\n reader.onerror = ev => {\r\n pe = null;\r\n const msg = M.createResPEErrorMessage(\"Can't open file.\");\r\n postMessage(msg);\r\n };\r\n\r\n reader.readAsArrayBuffer(msg.file);\r\n}\r\n\r\nfunction handleReqOpenNav(msg: W.ReqOpenNavMessage): void {\r\n if (pe != null) {\r\n const pageData = generatePageData(pe, msg.target.pageID);\r\n pageData.nav.elemID = msg.target.elemID;\r\n const res = M.createResPageDataMessage(pageData);\r\n postMessage(res);\r\n }\r\n}"],"sourceRoot":""}
\ No newline at end of file