{"version":3,"file":"title32.mjs","names":["TITLE_I386","PatchTitle","titleMatchM","titleMatchA","PatchTitle32","title32","_addr_","check","shdr","i","d","_findFuzzyCode","v","DataView","buffer","byteOffset","byteLength","ptr","getUint32","shdr2","_getShdrForAddress","v2","data","i2","shAddr","ptr2","str","_readCstr","test","patch","addr","_theShdrForAddress","setUint8","setUint32","_titleA","_addrs_","push","length","len","_titleL","_ebx_","ebx","_findEbx","getInt32","setInt32"],"sources":["../../../../src/util/internal/linux/title32.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\n\nimport {TITLE_I386} from './asm.ts';\nimport {Elf32} from './elf.ts';\nimport {PatchTitle, titleMatchM, titleMatchA} from './title.ts';\n\n/**\n * PatchTitle32 object.\n */\nexport abstract class PatchTitle32 extends PatchTitle<Elf32> {}\n\n/**\n * Patch objects.\n */\nexport const title32 = [\n\t/**\n\t * 6.0.79.0 i386.\n\t */\n\tclass extends PatchTitle32 {\n\t\tprivate _addr_ = 0;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tfor (const [shdr, i, d] of this._findFuzzyCode(TITLE_I386['6'])) {\n\t\t\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\t\t\tconst ptr = v.getUint32(i + 9, true);\n\t\t\t\tconst shdr2 = this._getShdrForAddress(ptr);\n\t\t\t\tif (!shdr2) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst v2 = new DataView(shdr2.data);\n\t\t\t\tconst i2 = ptr - shdr2.shAddr;\n\t\t\t\tconst ptr2 = v2.getUint32(i2, true);\n\t\t\t\tconst str = this._readCstr(ptr2);\n\t\t\t\tif (!str || !titleMatchM.test(str)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthis._addr_ = shdr.shAddr + i;\n\t\t\t}\n\t\t\treturn !!this._addr_;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst addr = this._addr_;\n\t\t\tconst shdr = this._theShdrForAddress(addr);\n\t\t\tconst v = new DataView(shdr.data);\n\t\t\tlet i = addr - shdr.shAddr + 7;\n\n\t\t\t// nop\n\t\t\tv.setUint8(i++, 0x90);\n\n\t\t\t// push     ...\n\t\t\tv.setUint8(i++, 0x68);\n\t\t\tv.setUint32(i, this._titleA, true);\n\t\t}\n\t},\n\n\t/**\n\t * 9.0.115.0 i386.\n\t */\n\tclass extends PatchTitle32 {\n\t\tprivate _addrs_ = [] as number[];\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tthis._addrs_ = [];\n\t\t\tfor (const [shdr, i, d] of this._findFuzzyCode(TITLE_I386['9'])) {\n\t\t\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\t\t\tconst ptr = v.getUint32(i + 6, true);\n\t\t\t\tconst shdr2 = this._getShdrForAddress(ptr);\n\t\t\t\tif (!shdr2) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst v2 = new DataView(shdr2.data);\n\t\t\t\tconst i2 = ptr - shdr2.shAddr;\n\t\t\t\tconst ptr2 = v2.getUint32(i2, true);\n\t\t\t\tconst str = this._readCstr(ptr2);\n\t\t\t\tif (!str || !titleMatchA.test(str)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthis._addrs_.push(shdr.shAddr + i);\n\t\t\t}\n\t\t\treturn this._addrs_.length === 2;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tfor (const addr of this._addrs_) {\n\t\t\t\tconst shdr = this._theShdrForAddress(addr);\n\t\t\t\tconst v = new DataView(shdr.data);\n\t\t\t\tlet i = addr - shdr.shAddr + 5;\n\n\t\t\t\t// mov     eax, ...\n\t\t\t\tv.setUint8(i++, 0xb8);\n\t\t\t\tv.setUint32(i, this._titleA, true);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * 10.1.53.64 i386.\n\t */\n\tclass extends PatchTitle32 {\n\t\tprivate _addr_ = 0;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tfor (const [shdr, i, d] of this._findFuzzyCode(\n\t\t\t\tTITLE_I386['10.1']\n\t\t\t)) {\n\t\t\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\t\t\tconst addr = shdr.shAddr + i;\n\t\t\t\tconst ptr = v.getUint32(i + 12, true);\n\t\t\t\tconst len = v.getUint32(i + 4, true);\n\t\t\t\tconst str = this._readCstr(ptr);\n\t\t\t\tif (!str || str.length !== len || !titleMatchA.test(str)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (this._addr_) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis._addr_ = addr;\n\t\t\t}\n\t\t\treturn !!this._addr_;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst addr = this._addr_;\n\t\t\tconst shdr = this._theShdrForAddress(addr);\n\t\t\tconst v = new DataView(shdr.data);\n\t\t\tconst i = addr - shdr.shAddr;\n\t\t\tv.setUint32(i + 12, this._titleA, true);\n\t\t\tv.setUint32(i + 4, this._titleL, true);\n\t\t}\n\t},\n\n\t/**\n\t * 11.2.202.228 i386.\n\t */\n\tclass extends PatchTitle32 {\n\t\tprivate _addr_ = 0;\n\n\t\tprivate _ebx_ = 0;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tfor (const [shdr, i, d] of this._findFuzzyCode(\n\t\t\t\tTITLE_I386['11.2']\n\t\t\t)) {\n\t\t\t\tconst addr = shdr.shAddr + i;\n\t\t\t\tconst ebx = this._findEbx(addr);\n\t\t\t\tif (ebx === null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\t\t\tconst ptr = ebx + v.getInt32(i + 2, true);\n\t\t\t\tconst len = v.getUint32(i + 14, true);\n\t\t\t\tconst str = this._readCstr(ptr);\n\t\t\t\tif (!str || str.length !== len || !titleMatchA.test(str)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (this._addr_) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis._addr_ = addr;\n\t\t\t\tthis._ebx_ = ebx;\n\t\t\t}\n\t\t\treturn !!this._addr_;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst addr = this._addr_;\n\t\t\tconst ebx = this._ebx_;\n\t\t\tconst shdr = this._theShdrForAddress(addr);\n\t\t\tconst v = new DataView(shdr.data);\n\t\t\tconst i = addr - shdr.shAddr;\n\t\t\tv.setInt32(i + 2, this._titleA - ebx, true);\n\t\t\tv.setUint32(i + 14, this._titleL, true);\n\t\t}\n\t}\n] as (new (elf: Elf32, titleA: number, titleL: number) => PatchTitle32)[];\n"],"mappings":"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","ignoreList":[]}