From c33212c21b779c4a3df0db845ed6a134acc42d9a Mon Sep 17 00:00:00 2001 From: Matiq Date: Tue, 25 Aug 2026 10:29:06 +0300 Subject: [PATCH] =?UTF-8?q?24jj:=20BIGKERNEL=20BODIES=20FOUND=20via=20runt?= =?UTF-8?q?ime=20IAT=20resolve=20=E2=80=94=201803a06a0/180296c80/180323f20?= =?UTF-8?q?/1802dc0e0,=20real=20math=20functions=20with=20x87=20transcende?= =?UTF-8?q?ntal=20pair=20(exp=20family);=20iat=5Fname.py=20v2=20with=20dou?= =?UTF-8?q?ble-deref+PE=20exports?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handoff/BLOCKMAP_529fe0.md | 15 +++++++++++++++ scripts/iat_name.py | 28 ++++++++++++++++++++++------ 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/handoff/BLOCKMAP_529fe0.md b/handoff/BLOCKMAP_529fe0.md index 3f3dafd..f449e1f 100644 --- a/handoff/BLOCKMAP_529fe0.md +++ b/handoff/BLOCKMAP_529fe0.md @@ -473,3 +473,18 @@ ILT-стаб с собственной idx-ячейкой (паковка/про разворачивание обрывается. Тела bigkernel'ов (exp/abs-нелинейность шага 14/17) остаются за пакером — при необходимости снимаются дампом памяти ВОКРУГ вызова в рантайме (STOP + чтение таблиц после инициализации). + +## ДОПОЛНЕНИЕ 24jj: ТЕЛА BIGKERNEL'ОВ НАЙДЕНЫ (рантайм-резолв IAT) + +iat_name.py v2 (SIGSTOP + двойной deref + PE-экспорты) резолвит: +``` +стаб 140b30/140b60 → runtime 1803a06a0 (общий для float/double!) +стаб 1409e0 → runtime 180296c80 +стаб 140ad0 → runtime 180323f20 +стаб 140a40 → runtime 1802dc0e0 +``` +Все — НАСТОЯЩИЕ функции внутри дампа (не импорты!): большие стек-фреймы, +x87 FNU-контроль, AVX2 полиномы, ДВЕ x87-трансцендентные инструкции +(fyl2x/f2xm1 класс = 2^x/exp семейство). Полный декод математики каждого — +отдельная сессия; вход/выход уже известны из контекста вызовов +(in-place над n/2+1 элементами FIR-буфера). diff --git a/scripts/iat_name.py b/scripts/iat_name.py index 6fc7eff..f25ca77 100644 --- a/scripts/iat_name.py +++ b/scripts/iat_name.py @@ -83,6 +83,8 @@ t0=time.time(); host=None while time.time()-t0<30 and not host: host=find_host(); time.sleep(0.002) print('host',host,flush=True) +import signal as sg +os.kill(host,sg.SIGSTOP) fd=os.open('/proc/%d/mem'%host,os.O_RDONLY) # build module map @@ -100,13 +102,27 @@ def owner(addr): return None targets={} -for stub in (0x180140b30,0x180140b60,0x1801409e0,0x180140ad0,0x180140a40): - off=stub-BASE - b=data[off:off+7] - rel=struct.unpack(' IAT slot + print(' L2: tgt=%x' % tgt, flush=True) + if 0x180000000 <= tgt < 0x187000000: + off2=tgt-BASE + b2=data[off2:off2+7] if 0<=off2%x runtime=%x owner=%s' % (stub,tbl,tgt,ow[2] if ow else '?'),flush=True) if ow: