{"version":3,"file":"path64.mjs","names":["PATH_X8664","PatchPath","PatchPath64","PatchPath64File","_addr_","_remap_","check","_find","find","_offset","o","shdr","i","d","_findFuzzyCode","v","DataView","buffer","byteOffset","byteLength","addr","shAddr","BigInt","rip","ptr","getUint32","remap","_getRemap","patch","_theShdrForAddress","data","Number","setUint32","path64"],"sources":["../../../../src/util/internal/linux/path64.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\n\nimport {PATH_X8664} from './asm.ts';\nimport {Elf64} from './elf.ts';\nimport {PatchPath} from './path.ts';\n\n/**\n * PatchPath64 object.\n */\nexport abstract class PatchPath64 extends PatchPath<Elf64> {}\n\n/**\n * PatchPath64File object.\n */\nabstract class PatchPath64File extends PatchPath64 {\n\t/**\n\t * Fuzzy find.\n\t */\n\tprotected abstract readonly _find: number[];\n\n\t/**\n\t * Address offset.\n\t */\n\tprotected abstract readonly _offset: number;\n\n\tprivate _addr_ = 0n;\n\n\tprivate _remap_ = 0n;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic check() {\n\t\tconst {_find: find, _offset: o} = this;\n\t\tfor (const [shdr, i, d] of this._findFuzzyCode(find)) {\n\t\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\t\tconst addr = shdr.shAddr + BigInt(i);\n\t\t\tconst rip = addr + 10n;\n\t\t\tconst ptr = rip + BigInt(v.getUint32(i + o, true));\n\t\t\tconst remap = this._getRemap(ptr);\n\t\t\tif (!remap) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (this._addr_) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._addr_ = addr;\n\t\t\tthis._remap_ = remap;\n\t\t}\n\t\treturn !!this._addr_;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic patch() {\n\t\tconst {_offset: o} = this;\n\t\tconst addr = this._addr_;\n\t\tconst shdr = this._theShdrForAddress(addr);\n\t\tconst v = new DataView(shdr.data);\n\t\tconst i = Number(addr - shdr.shAddr);\n\t\tconst rip = shdr.shAddr + BigInt(i + 10);\n\t\tv.setUint32(i + o, Number(this._remap_ - rip), true);\n\t}\n}\n\n/**\n * Patch objects.\n */\nexport const path64 = [\n\t/**\n\t * 24.0.0.186 x86_64.\n\t */\n\tclass extends PatchPath64File {\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tprotected readonly _find = PATH_X8664[24];\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tprotected readonly _offset = 6;\n\t}\n] as (new (elf: Elf64) => PatchPath64)[];\n"],"mappings":"AAAA;;AAEA,SAAQA,UAAU,QAAO,WAAU;AAEnC,SAAQC,SAAS,QAAO,YAAW;;AAEnC;AACA;AACA;AACA,OAAO,MAAeC,WAAW,SAASD,SAAS,CAAQ;;AAE3D;AACA;AACA;AACA,MAAeE,eAAe,SAASD,WAAW,CAAC;EAClD;AACD;AACA;;EAGC;AACD;AACA;;EAGSE,MAAM,GAAG,EAAE;EAEXC,OAAO,GAAG,EAAE;;EAEpB;AACD;AACA;EACQC,KAAKA,CAAA,EAAG;IACd,MAAM;MAACC,KAAK,EAAEC,IAAI;MAAEC,OAAO,EAAEC;IAAC,CAAC,GAAG,IAAI;IACtC,KAAK,MAAM,CAACC,IAAI,EAAEC,CAAC,EAAEC,CAAC,CAAC,IAAI,IAAI,CAACC,cAAc,CAACN,IAAI,CAAC,EAAE;MACrD,MAAMO,CAAC,GAAG,IAAIC,QAAQ,CAACH,CAAC,CAACI,MAAM,EAAEJ,CAAC,CAACK,UAAU,EAAEL,CAAC,CAACM,UAAU,CAAC;MAC5D,MAAMC,IAAI,GAAGT,IAAI,CAACU,MAAM,GAAGC,MAAM,CAACV,CAAC,CAAC;MACpC,MAAMW,GAAG,GAAGH,IAAI,GAAG,GAAG;MACtB,MAAMI,GAAG,GAAGD,GAAG,GAAGD,MAAM,CAACP,CAAC,CAACU,SAAS,CAACb,CAAC,GAAGF,CAAC,EAAE,IAAI,CAAC,CAAC;MAClD,MAAMgB,KAAK,GAAG,IAAI,CAACC,SAAS,CAACH,GAAG,CAAC;MACjC,IAAI,CAACE,KAAK,EAAE;QACX;MACD;MACA,IAAI,IAAI,CAACtB,MAAM,EAAE;QAChB,OAAO,KAAK;MACb;MACA,IAAI,CAACA,MAAM,GAAGgB,IAAI;MAClB,IAAI,CAACf,OAAO,GAAGqB,KAAK;IACrB;IACA,OAAO,CAAC,CAAC,IAAI,CAACtB,MAAM;EACrB;;EAEA;AACD;AACA;EACQwB,KAAKA,CAAA,EAAG;IACd,MAAM;MAACnB,OAAO,EAAEC;IAAC,CAAC,GAAG,IAAI;IACzB,MAAMU,IAAI,GAAG,IAAI,CAAChB,MAAM;IACxB,MAAMO,IAAI,GAAG,IAAI,CAACkB,kBAAkB,CAACT,IAAI,CAAC;IAC1C,MAAML,CAAC,GAAG,IAAIC,QAAQ,CAACL,IAAI,CAACmB,IAAI,CAAC;IACjC,MAAMlB,CAAC,GAAGmB,MAAM,CAACX,IAAI,GAAGT,IAAI,CAACU,MAAM,CAAC;IACpC,MAAME,GAAG,GAAGZ,IAAI,CAACU,MAAM,GAAGC,MAAM,CAACV,CAAC,GAAG,EAAE,CAAC;IACxCG,CAAC,CAACiB,SAAS,CAACpB,CAAC,GAAGF,CAAC,EAAEqB,MAAM,CAAC,IAAI,CAAC1B,OAAO,GAAGkB,GAAG,CAAC,EAAE,IAAI,CAAC;EACrD;AACD;;AAEA;AACA;AACA;AACA,OAAO,MAAMU,MAAM,GAAG;AACrB;AACD;AACA;AACC,cAAc9B,eAAe,CAAC;EAC7B;AACF;AACA;EACqBI,KAAK,GAAGP,UAAU,CAAC,EAAE,CAAC;;EAEzC;AACF;AACA;EACqBS,OAAO,GAAG,CAAC;AAC/B,CAAC,CACsC","ignoreList":[]}