{"version":3,"file":"offset64.mjs","names":["writeFuzzy","OFFSET_X8664","Patch","PatchOffset64","_replace_","check","find","replace","_spec","rep","i","d","_findFuzzyCode","length","push","patch","f","offset64"],"sources":["../../../../src/util/internal/linux/offset64.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\n\nimport {writeFuzzy} from '../patch.ts';\n\nimport {OFFSET_X8664} from './asm.ts';\nimport {Elf64} from './elf.ts';\nimport {Patch} from './patch.ts';\n\n/**\n * Patch offset 64-bit spec.\n */\nexport interface IPatchOffset64Spec {\n\t/**\n\t * Fuzzy find.\n\t */\n\tfind: number[];\n\n\t/**\n\t * Fuzzy replace.\n\t */\n\treplace: number[];\n}\n\n/**\n * PatchOffset64 object.\n * Replace the bad ELF header reading logic with new logic.\n * The code was never updated from the old 32-bit code and is not accurate.\n */\nexport abstract class PatchOffset64 extends Patch<Elf64> {\n\t/**\n\t * Patch spec.\n\t */\n\tprotected abstract _spec: IPatchOffset64Spec;\n\n\tprivate _replace_ = [] as [Uint8Array, number, number[]][];\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic check() {\n\t\tthis._replace_ = [];\n\t\tconst {find, replace} = this._spec;\n\t\tconst rep = [] as [Uint8Array, number, number[]][];\n\t\tfor (const [, i, d] of this._findFuzzyCode(find)) {\n\t\t\tif (rep.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\trep.push([d, i, replace]);\n\t\t}\n\t\tif (rep.length !== 1) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._replace_ = rep;\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic patch() {\n\t\tfor (const [d, i, f] of this._replace_) {\n\t\t\twriteFuzzy(d, i, f);\n\t\t}\n\t}\n}\n\n/**\n * Patch objects.\n */\nexport const offset64 = [\n\t/**\n\t * 24.0.0.186 x86_64.\n\t */\n\tclass extends PatchOffset64 {\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tprotected _spec = {\n\t\t\tfind: OFFSET_X8664['24-a'],\n\t\t\treplace: OFFSET_X8664['24-b']\n\t\t};\n\t},\n\n\t/**\n\t * 25.0.0.127 x86_64.\n\t */\n\tclass extends PatchOffset64 {\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tprotected _spec = {\n\t\t\tfind: OFFSET_X8664['25-a'],\n\t\t\treplace: OFFSET_X8664['25-b']\n\t\t};\n\t},\n\n\t/**\n\t * 32.0.0.293 x86_64.\n\t */\n\tclass extends PatchOffset64 {\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tprotected _spec = {\n\t\t\tfind: OFFSET_X8664['32-a'],\n\t\t\treplace: OFFSET_X8664['32-b']\n\t\t};\n\t}\n] as (new (elf: Elf64) => PatchOffset64)[];\n"],"mappings":"AAAA;;AAEA,SAAQA,UAAU,QAAO,cAAa;AAEtC,SAAQC,YAAY,QAAO,WAAU;AAErC,SAAQC,KAAK,QAAO,aAAY;;AAEhC;AACA;AACA;;AAaA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAeC,aAAa,SAASD,KAAK,CAAQ;EACxD;AACD;AACA;;EAGSE,SAAS,GAAG,EAAE;;EAEtB;AACD;AACA;EACQC,KAAKA,CAAA,EAAG;IACd,IAAI,CAACD,SAAS,GAAG,EAAE;IACnB,MAAM;MAACE,IAAI;MAAEC;IAAO,CAAC,GAAG,IAAI,CAACC,KAAK;IAClC,MAAMC,GAAG,GAAG,EAAsC;IAClD,KAAK,MAAM,GAAGC,CAAC,EAAEC,CAAC,CAAC,IAAI,IAAI,CAACC,cAAc,CAACN,IAAI,CAAC,EAAE;MACjD,IAAIG,GAAG,CAACI,MAAM,EAAE;QACf,OAAO,KAAK;MACb;MACAJ,GAAG,CAACK,IAAI,CAAC,CAACH,CAAC,EAAED,CAAC,EAAEH,OAAO,CAAC,CAAC;IAC1B;IACA,IAAIE,GAAG,CAACI,MAAM,KAAK,CAAC,EAAE;MACrB,OAAO,KAAK;IACb;IACA,IAAI,CAACT,SAAS,GAAGK,GAAG;IACpB,OAAO,IAAI;EACZ;;EAEA;AACD;AACA;EACQM,KAAKA,CAAA,EAAG;IACd,KAAK,MAAM,CAACJ,CAAC,EAAED,CAAC,EAAEM,CAAC,CAAC,IAAI,IAAI,CAACZ,SAAS,EAAE;MACvCJ,UAAU,CAACW,CAAC,EAAED,CAAC,EAAEM,CAAC,CAAC;IACpB;EACD;AACD;;AAEA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,GAAG;AACvB;AACD;AACA;AACC,cAAcd,aAAa,CAAC;EAC3B;AACF;AACA;EACYK,KAAK,GAAG;IACjBF,IAAI,EAAEL,YAAY,CAAC,MAAM,CAAC;IAC1BM,OAAO,EAAEN,YAAY,CAAC,MAAM;EAC7B,CAAC;AACF,CAAC;AAED;AACD;AACA;AACC,cAAcE,aAAa,CAAC;EAC3B;AACF;AACA;EACYK,KAAK,GAAG;IACjBF,IAAI,EAAEL,YAAY,CAAC,MAAM,CAAC;IAC1BM,OAAO,EAAEN,YAAY,CAAC,MAAM;EAC7B,CAAC;AACF,CAAC;AAED;AACD;AACA;AACC,cAAcE,aAAa,CAAC;EAC3B;AACF;AACA;EACYK,KAAK,GAAG;IACjBF,IAAI,EAAEL,YAAY,CAAC,MAAM,CAAC;IAC1BM,OAAO,EAAEN,YAAY,CAAC,MAAM;EAC7B,CAAC;AACF,CAAC,CACwC","ignoreList":[]}