Программа крэшится до точки входа, на стадии загрузки
Имеется крохотная программка на MSVC 2015 без CRT. Полный код с проектом лежит на
гитхабе (компиляется только релизная версия, для дебажной требуется всякие опции поотключать, чтоб линковалось). Всё делается под Windows 7 x64.
Компилирую программу под 64 бита, запускаю — работает. Какое-то время пользуюсь. В один прекрасный момент очередной запуск внезапно обваливается со знаменитым 0xC0000005. И тут начинается самое интересное: с этого момента
все последующие запуски будут выдавать этот 0xC0000005. Не помогает даже перезагрузка системы. Стоит лишь переименовать файл, или как-то его модифицировать (вплоть до правки одного байта хекс-редактором, скажем, инкремент таймштампа в PE-заголовке), или даже просто сменить дату/время модификации, он магическим образом снова начинает запускаться и работать. Потом в какой-то момент ему надоедает, он выкидывает очередной 0xC0000005, после которого см. пункт 1.
Если же я пытаюсь отладить и понять, откуда вообще берётся исключение, отладчик швыряет меня в какие-то дебри системных библиотек, в которых я ни бум-бум. Насколько я смог понять, исключение возникает ещё ДО того, как управление передаётся хотя бы первому байту моего кода. Во всяком случае, моих адресов в стеке нет, а бряки, поставленные на начало wWinMainCRTStartup не срабатывают.
Вот как выглядит ошибка:
Unhandled exception at 0x000000013F4B1000 in hideconsole_hdls_nocrt.exe: 0xC0000005: Access violation executing location 0x000000013F4B1000
А это — стек-трейс:
000000013f4b1000()
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()
Асмовый код в точке падения:
BaseThreadInitThunk:
0000000076E559C0 sub rsp,28h
0000000076E559C4 test ecx ,ecx
0000000076E559C6 jne BaseThreadInitThunk+16h (076E559D6h)
0000000076E559C8 mov rcx,r8
0000000076E559CB call rdx
Падает, собственно, CALL. rdx тут равен вот этому самому 0x000000013F4B1000, а по этому адресу светятся одни вопросики. Видимо, несуществующая страница, отсюда и access denied. Но как он пришёл к такому состоянию, я не могу понять, не хватает опыта низкоуровневой отладки.
Когда я ради эксперимента переделал проект на CRT-шный, проблемы прекратились, то есть обходной путь найден. Но мне хочется разобраться:
1) Что это за падение? Чем оно может быть вызвано и как его избежать? И почему оно работает-работает, а потом вдруг решает, что с него хватит?
2) Каким-таким волшебным образом система запоминает падучесть программы? Я подозреваю сбой в каком-нибудь prefetch-е, но не знаю, как проверить. Возобновление работы после "обновления" файла явно намекает на какие-то технологии кэширования. Однако в каталоге c:\Windows\Prefetch\ нет ни одного файла с именем, начинающемся на имя моего исполняемого файла.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re: Программа крэшится до точки входа, на стадии загрузки
От:
enigmas
Дата: 26.02.18 13:34
Оценка:
Здравствуйте, CaptainFlint, Вы писали:
CF>Когда я ради эксперимента переделал проект на CRT-шный, проблемы прекратились, то есть обходной путь найден. Но мне хочется разобраться:
CF>1) Что это за падение? Чем оно может быть вызвано и как его избежать? И почему оно работает-работает, а потом вдруг решает, что с него хватит?
CF>2) Каким-таким волшебным образом система запоминает падучесть программы? Я подозреваю сбой в каком-нибудь prefetch-е, но не знаю, как проверить. Возобновление работы после "обновления" файла явно намекает на какие-то технологии кэширования. Однако в каталоге c:\Windows\Prefetch\ нет ни одного файла с именем, начинающемся на имя моего исполняемого файла.
Варианты:
1. Что то в TLS Callback. Посмотрите, есть ли колбеки в файле, если есть, удалите, чтобы исключить их влияние.
2. Если TLS Callback нет, или после их удаления все равно падает, возможно, кто-то инжектится в процесс (например, тот же Windows Defender или другой антивирус). Попробуйте антивирус отключить, полностью.
Re[2]: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, enigmas, Вы писали:
E>1. Что то в TLS Callback. Посмотрите, есть ли колбеки в файле, если есть, удалите, чтобы исключить их влияние.
Как это посмотреть? TLS Directory в PE-заголовке пустая, это оно?
Сам я точно никаких коллбеков не делал, весь проект — это тупой CreateProcess с ожиданием завершения. Код на полстранички. В проекте тоже ничего необычного не выставлял. По-моему, только entry point (иначе без CRT и не собрать).
E>2. Если TLS Callback нет, или после их удаления все равно падает, возможно, кто-то инжектится в процесс (например, тот же Windows Defender или другой антивирус). Попробуйте антивирус отключить, полностью.
Ок, попробую. Сейчас, после экспериментов оно пока работает, а принудительно вызывать этот сбой не получается.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, CaptainFlint.
Судя по содержимому kernel32!BaseThreadInitThunk в Windows 7, call rdx — это прыжок на
точку входа в стартовую функцию потока, т.е. это обычно или threadstartex, или main/WinMain.
Похоже, что или какой-то чужой поток вклинился в работу exe, или кто-то нечаянно подпортил
содержимое регистров при старте процесса (такое в теории может быть при установленных
антивирусах, фаерволах, DLP и т.п. программах).
Можно еще открыть крэш-дамп в WinDBG и выполнить такую команду:
dps @rsp L300
(просмотр "сырого" стека)
или
dps начало конец
(начало и конец стека вытаскиваются командой !teb, см. поля StackBase и StackLimit).
Ну а дальше в стеке попытаться найти "виновника" проблемы, т.е. какой-то
сторонний модуль или функцию.
Re[2]: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, okman, Вы писали:
O>Судя по содержимому kernel32!BaseThreadInitThunk в Windows 7, call rdx — это прыжок на
O>точку входа в стартовую функцию потока, т.е. это обычно или threadstartex, или main/WinMain.
O>Похоже, что или какой-то чужой поток вклинился в работу exe, или кто-то нечаянно подпортил
O>содержимое регистров при старте процесса (такое в теории может быть при установленных
O>антивирусах, фаерволах, DLP и т.п. программах).
Поймал падение, отключил антивирь, падение никуда не делось.
Загрузил файл в WinDbg, стартанул до крэша. В списке загруженных модулей перечислены только Майкрософтовские.
Список USER32 00000000`77870000 00000000`7796a000 Thu Nov 10 19:33:04 2016 (5824a140) 00100335 C:\Windows\system32\USER32.dll
kernel32 00000000`77970000 00000000`77a8f000 Wed Sep 13 18:30:49 2017 (59b94f29) 00120369 PDB c:\symbols\kernel32.pdb\52715E2CB2604B7C837FA92AE3E5021A2\kernel32.pdb
ntdll 00000000`77a90000 00000000`77c3a000 Wed Sep 13 18:29:40 2017 (59b94ee4) 001b3ef7 PDB c:\symbols\ntdll.pdb\28027EB4F08E4E5589A0FA880169FA0C2\ntdll.pdb
image00000001_3f050000 00000001`3f050000 00000001`3f055000 Tue Feb 20 01:12:30 2018 (5a8b4bce) 00000000 image00000001`3f050000
KERNELBASE 000007fe`fd7a0000 000007fe`fd80a000 Wed Sep 13 18:30:50 2017 (59b94f2a) 0006d049 C:\Windows\system32\KERNELBASE.dll
msvcrt 000007fe`fdb40000 000007fe`fdbdf000 Fri Dec 16 11:37:19 2011 (4eeb033f) 000a708a C:\Windows\system32\msvcrt.dll
USP10 000007fe`fdf90000 000007fe`fe05b000 Wed Aug 16 18:29:58 2017 (599464f6) 000c6d6d C:\Windows\system32\USP10.dll
IMM32 000007fe`fe060000 000007fe`fe08e000 Tue Jul 14 04:28:32 2009 (4a5bdf40) 0003550d C:\Windows\system32\IMM32.DLL
GDI32 000007fe`fe090000 000007fe`fe0f7000 Fri Sep 08 18:30:48 2017 (59b2b7a8) 00065bd8 C:\Windows\system32\GDI32.dll
LPK 000007fe`fe100000 000007fe`fe10e000 Thu Oct 12 03:56:05 2017 (59debda5) 00013228 C:\Windows\system32\LPK.dll
MSCTF 000007fe`fe680000 000007fe`fe789000 Wed Sep 13 18:29:09 2017 (59b94ec5) 0010978f C:\Windows\system32\MSCTF.dll
O>Можно еще открыть крэш-дамп в WinDBG и выполнить такую команду:
O>dps @rsp L300
O>(просмотр "сырого" стека)
O>или
O>dps начало конец
O>(начало и конец стека вытаскиваются командой !teb, см. поля StackBase и StackLimit).
O>Ну а дальше в стеке попытаться найти "виновника" проблемы, т.е. какой-то
O>сторонний модуль или функцию.
Увы, виновников не видать. Стек начиная с Base (00140000) забит нулями вверх вплоть до RtlUserThreadStart:
0:000> dps @rsp L300
00000000`0013fe08 00000000`779859cd kernel32!BaseThreadInitThunk+0xd
00000000`0013fe10 00000000`00000000
00000000`0013fe18 00000000`00000000
00000000`0013fe20 00000000`00000000
00000000`0013fe28 00000000`00000000
00000000`0013fe30 00000000`00000000
00000000`0013fe38 00000000`77aba561 ntdll!RtlUserThreadStart+0x1d
00000000`0013fe40 00000000`00000000
<много нулей скиппед>
0:000> !teb
TEB at 000007fffffde000
ExceptionList: 0000000000000000
StackBase: 0000000000140000
StackLimit: 000000000013c000
SubSystemTib: 0000000000000000
FiberData: 0000000000001e00
ArbitraryUserPointer: 0000000000000000
Self: 000007fffffde000
EnvironmentPointer: 0000000000000000
ClientId: 0000000000003c98 . 0000000000007df0
RpcHandle: 0000000000000000
Tls Storage: 000007fffffde058
PEB Address: 000007fffffd7000
LastErrorValue: 14007
LastStatusValue: c0150008
Count Owned Locks: 0
HardErrorMode: 0
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[3]: Программа крэшится до точки входа, на стадии загрузки
Немножко дополнительной инфы. Я скопировал фейлящийся файл под новым именем (чтобы он перестал фейлиться), тоже загнал в дебаггер и сравнил поведение. В самом начале, в ntdll:RtlUserThreadStart адрес моего кода должен храниться в RCX (потом копируется в RDX). Собственно, при нормальном запуске там правильный адрес (== адресу начала загруженного EXE-модуля + смещение 0x1000), при сбойном — неправильный. Но что любопытно, когда я инициализирую запуск (выставил в Иде останов на самой ранней стадии), RIP указывает на самую первую инструкцию RtlUserThreadStart, и RCX отображается такой, каким должен быть, а в списке загруженных модулей присутствует только мой одинокий EXE. Стоит мне сделать один шаг (инструкция — sub rsp, 48h), как список модулей дополняется стандартными DLL, а RCX неожиданно меняется на фигню (и подсвечивается как модифицированный). В нормальном сценарии запуска с модулями происходит то же самое, но RCX на первом шаге не меняется.
Не знаю, какие можно из этого сделать выводы, но на всякий случай решил написать. Может, конечно, это неточность отладчика (скажем, он уверен, что RCX обязан указывать на начало кода, так что вместо чтения реального значения подставляет туда нужный адрес, а потом опа, оказывается, там с самого начала было что-то другое).
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[3]: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, CaptainFlint, Вы писали:
CF>Поймал падение, отключил антивирь, падение никуда не делось.
CF>...
Можно попробовать копнуть глубже, если есть желание...
Случись у меня такая проблема, я бы попробовал запустить "сбойную" версию приложения из WinDBG и
поставить точку останова на ntdll!NtTestAlert. А затем, когда она сработает, поискал бы в стеке структуру
CONTEXT — она лежит обычно на самом дне стека и в ней хранятся значения регистров для прыжка на
точку входа, т.е. для RtlUserThreadStart и main/WinMain. Если на входе в NtTestAlert внутри структуры
CONTEXT значение RCX уже указывает не на main/WinMain, либо Rip указывает на что-то другое вместо
RtlUserThreadStart, значит, с вероятностью 99.9%, в запуск процесса вмешиваются "третьи силы".
Если RCX меняется уже после NtTestAlert, т.е. например между NtTestAlert и входом в RtlUserThreadStart, то
это значит, что значение меняется какой-то асинхронной процедурой (APC), т.к. они как раз и доставляются в
этот момент. И этим механизмом частенько пользуются антивирусы и тому подобный софт для внедрения в процессы
своего кода. Иногда и в "отключенном" состоянии тоже.
Re[4]: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, okman, Вы писали:
O>Можно попробовать копнуть глубже, если есть желание...
Желание есть, но пока не хватает понимания…
O>Случись у меня такая проблема, я бы попробовал запустить "сбойную" версию приложения из WinDBG и
O>поставить точку останова на ntdll!NtTestAlert. А затем, когда она сработает, поискал бы в стеке структуру
O>CONTEXT — она лежит обычно на самом дне стека и в ней хранятся значения регистров для прыжка на
O>точку входа, т.е. для RtlUserThreadStart и main/WinMain. <…>
Не могу сообразить, как найти начало структуры CONTEXT. "На самом дне стека" — это где? Прямо от Stack Base? На момент ntdll!NtTestAlert стек выглядит так:
Скрытый текст 0:000> !teb
TEB at 000007fffffdd000
ExceptionList: 0000000000000000
StackBase: 00000000001b0000
StackLimit: 00000000001ac000
SubSystemTib: 0000000000000000
FiberData: 0000000000001e00
ArbitraryUserPointer: 0000000000000000
Self: 000007fffffdd000
EnvironmentPointer: 0000000000000000
ClientId: 0000000000002200 . 0000000000003104
RpcHandle: 0000000000000000
Tls Storage: 000007fffffdd058
PEB Address: 000007fffffdf000
LastErrorValue: 14007
LastStatusValue: c0150008
Count Owned Locks: 0
HardErrorMode: 0
0:000> dps @rsp 00000000001b0000
00000000`001af418 00000000`76f8a474 ntdll!LdrpInitialize+0xa4
00000000`001af420 00000000`00000000
00000000`001af428 00000000`76f9f3b1 ntdll!InitSecurityCookie+0x1d
00000000`001af430 00000000`001af4e0
00000000`001af438 00000000`00000000
00000000`001af440 00000000`00000000
00000000`001af448 00000000`00000000
00000000`001af450 00000000`00000000
00000000`001af458 00000000`76ffc125 ntdll! ?? ::FNODOBFM::`string'+0x22c35
00000000`001af460 00000000`00000000
00000000`001af468 00000000`00000000
00000000`001af470 00000000`00000000
00000000`001af478 00000000`00000000
00000000`001af480 00000000`00000000
00000000`001af488 00000000`76f8a36e ntdll!LdrInitializeThunk+0xe
00000000`001af490 00000000`001af4e0
00000000`001af498 00000000`00000000
00000000`001af4a0 000007ff`fffdf000
00000000`001af4a8 00000000`00000000
00000000`001af4b0 00000000`00000000
00000000`001af4b8 00000000`00000000
00000000`001af4c0 00000000`00000000
00000000`001af4c8 00000000`00000000
00000000`001af4d0 00000000`00000000
00000000`001af4d8 00000000`00000000
00000000`001af4e0 00000000`00000000
00000000`001af4e8 00000000`00000000
00000000`001af4f0 00000000`00000000
00000000`001af4f8 00000000`00000000
00000000`001af500 00000000`00000000
00000000`001af508 00000000`00000000
00000000`001af510 00001f80`0010001b
00000000`001af518 00000000`00000033
00000000`001af520 00000200`002b0000
00000000`001af528 00000000`00000000
00000000`001af530 00000000`00000000
00000000`001af538 00000000`00000000
00000000`001af540 00000000`00000000
00000000`001af548 00000000`00000000
00000000`001af550 00000000`00000000
00000000`001af558 00000000`00000000
00000000`001af560 00000001`3fb31000
00000000`001af568 000007ff`fffdf000
00000000`001af570 00000000`00000000
00000000`001af578 00000000`001af9b8
00000000`001af580 00000000`00000000
00000000`001af588 00000000`00000000
00000000`001af590 00000000`00000000
00000000`001af598 00000000`00000000
00000000`001af5a0 00000000`00000000
00000000`001af5a8 00000000`00000000
00000000`001af5b0 00000000`00000000
00000000`001af5b8 00000000`00000000
00000000`001af5c0 00000000`00000000
00000000`001af5c8 00000000`00000000
00000000`001af5d0 00000000`00000000
00000000`001af5d8 00000000`76f8a540 ntdll!RtlUserThreadStart
00000000`001af5e0 00000000`0000027f
00000000`001af5e8 00000000`00000000
00000000`001af5f0 00000000`00000000
00000000`001af5f8 0000ffff`00001f80
00000000`001af600 00000000`00000000
00000000`001af608 00000000`00000000
00000000`001af610 00000000`00000000
00000000`001af618 00000000`00000000
00000000`001af620 00000000`00000000
00000000`001af628 00000000`00000000
00000000`001af630 00000000`00000000
00000000`001af638 00000000`00000000
00000000`001af640 00000000`00000000
00000000`001af648 00000000`00000000
00000000`001af650 00000000`00000000
00000000`001af658 00000000`00000000
00000000`001af660 00000000`00000000
00000000`001af668 00000000`00000000
00000000`001af670 00000000`00000000
00000000`001af678 00000000`00000000
00000000`001af680 00000000`00000000
00000000`001af688 00000000`00000000
00000000`001af690 00000000`00000000
00000000`001af698 00000000`00000000
00000000`001af6a0 00000000`00000000
00000000`001af6a8 00000000`00000000
00000000`001af6b0 00000000`00000000
00000000`001af6b8 00000000`00000000
00000000`001af6c0 00000000`00000000
00000000`001af6c8 00000000`00000000
00000000`001af6d0 00000000`00000000
00000000`001af6d8 00000000`00000000
00000000`001af6e0 00000000`00000000
00000000`001af6e8 00000000`00000000
00000000`001af6f0 00000000`00000000
00000000`001af6f8 00000000`00000000
00000000`001af700 00000000`00000000
00000000`001af708 00000000`00000000
00000000`001af710 00000000`00000000
00000000`001af718 00000000`00000000
00000000`001af720 00000000`00000000
00000000`001af728 00000000`00000000
00000000`001af730 00000000`00000000
00000000`001af738 00000000`00000000
00000000`001af740 00000000`00000000
00000000`001af748 00000000`00000000
00000000`001af750 00000000`00000000
00000000`001af758 00000000`00000000
00000000`001af760 00000000`00000000
00000000`001af768 00000000`00000000
00000000`001af770 00000000`00000000
00000000`001af778 00000000`00000000
00000000`001af780 00000000`00000000
00000000`001af788 00000000`00000000
00000000`001af790 00000000`00000000
00000000`001af798 00000000`00000000
00000000`001af7a0 00000000`00000000
00000000`001af7a8 00000000`00000000
00000000`001af7b0 00000000`00000000
00000000`001af7b8 00000000`00000000
00000000`001af7c0 00000000`00000000
00000000`001af7c8 00000000`00000000
00000000`001af7d0 00000000`00000000
00000000`001af7d8 00000000`00000000
00000000`001af7e0 00000000`00000000
00000000`001af7e8 00000000`00000000
00000000`001af7f0 00000000`00000000
00000000`001af7f8 00000000`00000000
00000000`001af800 00000000`00000000
00000000`001af808 00000000`00000000
00000000`001af810 00000000`00000000
00000000`001af818 00000000`00000000
00000000`001af820 00000000`00000000
00000000`001af828 00000000`00000000
00000000`001af830 00000000`00000000
00000000`001af838 00000000`00000000
00000000`001af840 00000000`00000000
00000000`001af848 00000000`00000000
00000000`001af850 00000000`00000000
00000000`001af858 00000000`00000000
00000000`001af860 00000000`00000000
00000000`001af868 00000000`00000000
00000000`001af870 00000000`00000000
00000000`001af878 00000000`00000000
00000000`001af880 00000000`00000000
00000000`001af888 00000000`00000000
00000000`001af890 00000000`00000000
00000000`001af898 00000000`00000000
00000000`001af8a0 00000000`00000000
00000000`001af8a8 00000000`00000000
00000000`001af8b0 00000000`00000000
00000000`001af8b8 00000000`00000000
00000000`001af8c0 00000000`00000000
00000000`001af8c8 00000000`00000000
00000000`001af8d0 00000000`00000000
00000000`001af8d8 00000000`00000000
00000000`001af8e0 00000000`00000000
00000000`001af8e8 00000000`00000000
00000000`001af8f0 00000000`00000000
00000000`001af8f8 00000000`00000000
00000000`001af900 00000000`00000000
00000000`001af908 00000000`00000000
00000000`001af910 00000000`00000000
00000000`001af918 00000000`00000000
00000000`001af920 00000000`00000000
00000000`001af928 00000000`00000000
00000000`001af930 00000000`00000000
00000000`001af938 00000000`00000000
00000000`001af940 00000000`00000000
00000000`001af948 00000000`00000000
00000000`001af950 00000000`00000000
00000000`001af958 00000000`00000000
00000000`001af960 00000000`00000000
00000000`001af968 00000000`00000000
00000000`001af970 00000000`00000000
00000000`001af978 00000000`00000000
00000000`001af980 00000000`00000000
00000000`001af988 00000000`00000000
00000000`001af990 00000000`00000000
00000000`001af998 00000000`00000000
00000000`001af9a0 00000000`00000000
00000000`001af9a8 00000000`00000000
00000000`001af9b0 00000000`00000000
00000000`001af9b8 00000000`00000000
00000000`001af9c0 00000000`00000000
00000000`001af9c8 00000000`00000000
00000000`001af9d0 00000000`00000000
00000000`001af9d8 00000000`00000000
00000000`001af9e0 00000000`00000000
00000000`001af9e8 00000000`00000000
00000000`001af9f0 00000000`00000000
00000000`001af9f8 00000000`00000000
00000000`001afa00 00000000`00000000
00000000`001afa08 00000000`00000000
00000000`001afa10 00000000`00000000
00000000`001afa18 00000000`00000000
00000000`001afa20 00000000`00000000
00000000`001afa28 00000000`00000000
00000000`001afa30 00000000`00000000
00000000`001afa38 00000000`00000000
00000000`001afa40 00000000`00000000
00000000`001afa48 00000000`00000000
00000000`001afa50 00000000`00000000
00000000`001afa58 00000000`00000000
00000000`001afa60 00000000`00000000
00000000`001afa68 00000000`00000000
00000000`001afa70 00000000`00000000
00000000`001afa78 00000000`00000000
00000000`001afa80 00000000`00000000
00000000`001afa88 00000000`00000000
00000000`001afa90 00000000`00000000
00000000`001afa98 00000000`00000000
00000000`001afaa0 00000000`00000000
00000000`001afaa8 00000000`00000000
00000000`001afab0 00000000`00000000
00000000`001afab8 00000000`00000000
00000000`001afac0 00000000`00000000
00000000`001afac8 00000000`00000000
00000000`001afad0 00000000`00000000
00000000`001afad8 00000000`00000000
00000000`001afae0 00000000`00000000
00000000`001afae8 00000000`00000000
00000000`001afaf0 00000000`00000000
00000000`001afaf8 00000000`00000000
00000000`001afb00 00000000`00000000
00000000`001afb08 00000000`00000000
00000000`001afb10 00000000`00000000
00000000`001afb18 00000000`00000000
00000000`001afb20 00000000`00000000
00000000`001afb28 00000000`00000000
00000000`001afb30 00000000`00000000
00000000`001afb38 00000000`00000000
00000000`001afb40 00000000`00000000
00000000`001afb48 00000000`00000000
00000000`001afb50 00000000`00000000
00000000`001afb58 00000000`00000000
00000000`001afb60 00000000`00000000
00000000`001afb68 00000000`00000000
00000000`001afb70 00000000`00000000
00000000`001afb78 00000000`00000000
00000000`001afb80 00000000`00000000
00000000`001afb88 00000000`00000000
00000000`001afb90 00000000`00000000
00000000`001afb98 00000000`00000000
00000000`001afba0 00000000`00000000
00000000`001afba8 00000000`00000000
00000000`001afbb0 00000000`00000000
00000000`001afbb8 00000000`00000000
00000000`001afbc0 00000000`00000000
00000000`001afbc8 00000000`00000000
00000000`001afbd0 00000000`00000000
00000000`001afbd8 00000000`00000000
00000000`001afbe0 00000000`00000000
00000000`001afbe8 00000000`00000000
00000000`001afbf0 00000000`00000000
00000000`001afbf8 00000000`00000000
00000000`001afc00 00000000`00000000
00000000`001afc08 00000000`00000000
00000000`001afc10 00000000`00000000
00000000`001afc18 00000000`00000000
00000000`001afc20 00000000`00000000
00000000`001afc28 00000000`00000000
00000000`001afc30 00000000`00000000
00000000`001afc38 00000000`00000000
00000000`001afc40 00000000`00000000
00000000`001afc48 00000000`00000000
00000000`001afc50 00000000`00000000
00000000`001afc58 00000000`00000000
00000000`001afc60 00000000`00000000
00000000`001afc68 00000000`00000000
00000000`001afc70 00000000`00000000
00000000`001afc78 00000000`00000000
00000000`001afc80 00000000`00000000
00000000`001afc88 00000000`00000000
00000000`001afc90 00000000`00000000
00000000`001afc98 00000000`00000000
00000000`001afca0 00000000`00000000
00000000`001afca8 00000000`00000000
00000000`001afcb0 00000000`00000000
00000000`001afcb8 00000000`00000000
00000000`001afcc0 00000000`00000000
00000000`001afcc8 00000000`00000000
00000000`001afcd0 00000000`00000000
00000000`001afcd8 00000000`00000000
00000000`001afce0 00000000`00000000
00000000`001afce8 00000000`00000000
00000000`001afcf0 00000000`00000000
00000000`001afcf8 00000000`00000000
00000000`001afd00 00000000`00000000
00000000`001afd08 00000000`00000000
00000000`001afd10 00000000`00000000
00000000`001afd18 00000000`00000000
00000000`001afd20 00000000`00000000
00000000`001afd28 00000000`00000000
00000000`001afd30 00000000`00000000
00000000`001afd38 00000000`00000000
00000000`001afd40 00000000`00000000
00000000`001afd48 00000000`00000000
00000000`001afd50 00000000`00000000
00000000`001afd58 00000000`00000000
00000000`001afd60 00000000`00000000
00000000`001afd68 00000000`00000000
00000000`001afd70 00000000`00000000
00000000`001afd78 00000000`00000000
00000000`001afd80 00000000`00000000
00000000`001afd88 00000000`00000000
00000000`001afd90 00000000`00000000
00000000`001afd98 00000000`00000000
00000000`001afda0 00000000`00000000
00000000`001afda8 00000000`00000000
00000000`001afdb0 00000000`00000000
00000000`001afdb8 00000000`00000000
00000000`001afdc0 00000000`00000000
00000000`001afdc8 00000000`00000000
00000000`001afdd0 00000000`00000000
00000000`001afdd8 00000000`00000000
00000000`001afde0 00000000`00000000
00000000`001afde8 00000000`00000000
00000000`001afdf0 00000000`00000000
00000000`001afdf8 00000000`00000000
00000000`001afe00 00000000`00000000
00000000`001afe08 00000000`00000000
00000000`001afe10 00000000`00000000
00000000`001afe18 00000000`00000000
00000000`001afe20 00000000`00000000
00000000`001afe28 00000000`00000000
00000000`001afe30 00000000`00000000
00000000`001afe38 00000000`00000000
00000000`001afe40 00000000`00000000
00000000`001afe48 00000000`00000000
00000000`001afe50 00000000`00000000
00000000`001afe58 00000000`00000000
00000000`001afe60 00000000`00000000
00000000`001afe68 00000000`00000000
00000000`001afe70 00000000`00000000
00000000`001afe78 00000000`00000000
00000000`001afe80 00000000`00000000
00000000`001afe88 00000000`00000000
00000000`001afe90 00000000`00000000
00000000`001afe98 00000000`00000000
00000000`001afea0 00000000`00000000
00000000`001afea8 00000000`00000000
00000000`001afeb0 00000000`00000000
00000000`001afeb8 00000000`00000000
00000000`001afec0 00000000`00000000
00000000`001afec8 00000000`00000000
00000000`001afed0 00000000`00000000
00000000`001afed8 00000000`00000000
00000000`001afee0 00000000`00000000
00000000`001afee8 00000000`00000000
00000000`001afef0 00000000`00000000
00000000`001afef8 00000000`00000000
00000000`001aff00 00000000`00000000
00000000`001aff08 00000000`00000000
00000000`001aff10 00000000`00000000
00000000`001aff18 00000000`00000000
00000000`001aff20 00000000`00000000
00000000`001aff28 00000000`00000000
00000000`001aff30 00000000`00000000
00000000`001aff38 00000000`00000000
00000000`001aff40 00000000`00000000
00000000`001aff48 00000000`00000000
00000000`001aff50 00000000`00000000
00000000`001aff58 00000000`00000000
00000000`001aff60 00000000`00000000
00000000`001aff68 00000000`00000000
00000000`001aff70 00000000`00000000
00000000`001aff78 00000000`00000000
00000000`001aff80 00000000`00000000
00000000`001aff88 00000000`00000000
00000000`001aff90 00000000`00000000
00000000`001aff98 00000000`00000000
00000000`001affa0 00000000`00000000
00000000`001affa8 00000000`00000000
00000000`001affb0 00000000`00000000
00000000`001affb8 00000000`00000000
00000000`001affc0 00000000`00000000
00000000`001affc8 00000000`00000000
00000000`001affd0 00000000`00000000
00000000`001affd8 00000000`00000000
00000000`001affe0 00000000`00000000
00000000`001affe8 00000000`00000000
00000000`001afff0 00000000`00000000
00000000`001afff8 00000000`00000000
00000000`001b0000 00000000`00000020
Если верить winnt.h и команде "dt _CONTEXT", структура зело жирная из-за всяких XMM-регистров и занимает 0x4d0 байт. Такой шматок во всём стеке может поместиться лишь где-то в промежутке от StackBase (1b0000) до вызова ntdll!RtlUserThreadStart, но как видно из дампа, там практически одни только нули, лишь перед самым вызовом сидят два ненулевых значения, ни одно из которых на адрес точки входа и близко не походит (а в моём случае RCX всё-таки указывает куда-то поблизости от реальной точки, а не в открытый космос, не говоря уж о том, что RCX находится не у самого края структуры, а в серёдке).
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[5]: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, CaptainFlint, Вы писали:
CF>Не могу сообразить, как найти начало структуры CONTEXT. "На самом дне стека" — это где? Прямо от Stack Base?
Да, не совсем точно выразился. Вот на примере notepad.exe:
Запускаю из WinDBG процесс C:\Windows\notepad.exe, отладчик останавливается в ntdll!LdrpDoDebuggerBreak,
ставлю точку останова:
bp ntdll!NtTestAlert
и возобновляю выполнение — g
отладчик останавливается:
Breakpoint 0 hit
ntdll!NtTestAlert:
00007ff8`97c33510 4c8bd1 mov r10,rcx
получаем полный стек текущего потока:
!teb
TEB at 000000b194fed000
ExceptionList: 0000000000000000
StackBase: 000000b194d20000
StackLimit: 000000b194d0f000
dp 000000b194d0f000 000000b194d20000
и далее, просматривая полученную "портянку" снизу-вверх, — а там пока одни нули, — ищем
значения 0010001b (ContextFlags), 33 и 2b (сегментные регистры в x64). В моем случае получилось вот что:
...
000000b1`94d1f300 00000000`00000000 00000000`00000000
000000b1`94d1f310 00000000`00000000 00000000`00000000
000000b1`94d1f320 00000000`00000000 00000000`00000000
000000b1`94d1f330 00000000`00000000 00000000`00000000
000000b1`94d1f340 00000000`00000000 00000000`00000000
000000b1`94d1f350 00001f80`0010001b 00000000`00000033
000000b1`94d1f360 00000200`002b0000 00000000`00000000
000000b1`94d1f370 00000000`00000000 00000000`00000000
000000b1`94d1f380 00000000`00000000 00000000`00000000
000000b1`94d1f390 00000000`00000000 00000000`00000000
000000b1`94d1f3a0 00007ff6`e26193e0 000000b1`94fec000
000000b1`94d1f3b0 00000000`00000000 000000b1`94d1f7f8
000000b1`94d1f3c0 00000000`00000000 00000000`00000000
000000b1`94d1f3d0 00000000`00000000 00000000`00000000
000000b1`94d1f3e0 00000000`00000000 00000000`00000000
...
Далее проверяем, что это структура CONTEXT. От поля со значением 0010001b нужно отмотать некоторое
количество байт назад (т.к. поле ContextFlags в структуре CONTEXT лежит не в самом начале).
Замечу, что на x64 структура CONTEXT всегда лежит на границе 16 байт:
dt nt!_CONTEXT 000000b1`94d1f320
Надо, чтобы получилось вот так:
...
+0x030 ContextFlags : 0x10001b
...
Остальные поля, т.е. SegCs, SegSs, Rcx, Rsp, Rip и т.д., тоже
должны иметь "осмысленные" значения:
+0x038 SegCs : 0x33
...
+0x042 SegSs : 0x2b
+0x080 Rcx : 0x00007ff6`e26193e0
+0x088 Rdx : 0x000000b1`94fec000
...
+0x098 Rsp : 0x000000b1`94d1f7f8
...
+0x0f8 Rip : 0x00007ff8`97bfef90
Здесь в SegCs и SegSs будут жестко прошитые константы — 33 и 2b,
в Rcx — адрес main/WinMain (проверить можно командой u адрес),
в Rip — адрес RtlUserThreadStart, а в Rdx — адрес PEB (проверить
можно командой !peb и сравнить).
Если там явный мусор — надо искать CONTEXT дальше (т.е. по тексту вверх).
Re: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, CaptainFlint, Вы писали:
CF>Если же я пытаюсь отладить и понять, откуда вообще берётся исключение, отладчик швыряет меня в какие-то дебри системных библиотек, в которых я ни бум-бум. Насколько я смог понять, исключение возникает ещё ДО того, как управление передаётся хотя бы первому байту моего кода. Во всяком случае, моих адресов в стеке нет, а бряки, поставленные на начало wWinMainCRTStartup не срабатывают.
CF>Вот как выглядит ошибка:
CF>CF>Unhandled exception at 0x000000013F4B1000 in hideconsole_hdls_nocrt.exe: 0xC0000005: Access violation executing location 0x000000013F4B1000
CF>А это — стек-трейс:
CF>CF>000000013f4b1000()
CF>kernel32.dll!BaseThreadInitThunk()
CF>ntdll.dll!RtlUserThreadStart()
CF>Асмовый код в точке падения:
CF>CF>BaseThreadInitThunk:
CF>0000000076E559C0 sub rsp,28h
CF>0000000076E559C4 test ecx ,ecx
CF>0000000076E559C6 jne BaseThreadInitThunk+16h (076E559D6h)
CF>0000000076E559C8 mov rcx,r8
CF>0000000076E559CB call rdx
CF>
CF>Падает, собственно, CALL. rdx тут равен вот этому самому 0x000000013F4B1000, а по этому адресу светятся одни вопросики. Видимо, несуществующая страница, отсюда и access denied. Но как он пришёл к такому состоянию, я не могу понять, не хватает опыта низкоуровневой отладки.
На уровне предположения: внешний процесс создал нить с точкой входа в 0x000000013F4B1000, не рассчитав отсутствие в целевом процессе какой-то DLL. Надо при падении посмотреть является ли текущая нить главной нитью этого процесса, для WinDbg команда просмотра нитей с их стеками: ~*k
Если еще удастся поймать падение — сделайте полный дамп для анализа (из WinDbg: .dump /mfh /b dump.cab).
Re[6]: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, okman, Вы писали:
O>Да, не совсем точно выразился. Вот на примере notepad.exe:
Благодарю, получилось. RCX в CONTEXT уже указывает на фигню.
Дамп команд с выводом 0:000> !teb
TEB at 000007fffffdd000
ExceptionList: 0000000000000000
StackBase: 00000000001b0000
StackLimit: 00000000001ac000
SubSystemTib: 0000000000000000
FiberData: 0000000000001e00
ArbitraryUserPointer: 0000000000000000
Self: 000007fffffdd000
EnvironmentPointer: 0000000000000000
ClientId: 0000000000002200 . 0000000000003104
RpcHandle: 0000000000000000
Tls Storage: 000007fffffdd058
PEB Address: 000007fffffdf000
LastErrorValue: 14007
LastStatusValue: c0150008
Count Owned Locks: 0
HardErrorMode: 0
0:000> dp 00000000001ac000 00000000001b0000
00000000`001ac000 00000000`00000000 00000000`00000000
00000000`001ac010 00000000`00000000 00000000`00000000
00000000`001ac020 00000000`00000000 00000000`00000000
00000000`001ac030 00000000`00000000 00000000`00000000
00000000`001ac040 00000000`00000000 00000000`00000000
00000000`001ac050 00000000`00000000 00000000`00000000
00000000`001ac060 00000000`00000000 00000000`00000000
00000000`001ac070 00000000`00000000 00000000`00000000
00000000`001ac080 00000000`00000000 00000000`00000000
00000000`001ac090 00000000`00000000 00000000`00000000
00000000`001ac0a0 00000000`00000000 00000000`00000000
00000000`001ac0b0 00000000`00000000 00000000`00000000
00000000`001ac0c0 00000000`00000000 00000000`00000000
00000000`001ac0d0 00000000`00000000 00000000`00000000
00000000`001ac0e0 00000000`00000000 00000000`00000000
00000000`001ac0f0 00000000`00000000 00000000`00000000
00000000`001ac100 00000000`00000000 00000000`00000000
00000000`001ac110 00000000`00000000 00000000`00000000
00000000`001ac120 00000000`00000000 00000000`00000000
00000000`001ac130 00000000`00000000 00000000`00000000
00000000`001ac140 00000000`00000000 00000000`00000000
00000000`001ac150 00000000`00000000 00000000`00000000
00000000`001ac160 00000000`00000000 00000000`00000000
00000000`001ac170 00000000`00000000 00000000`00000000
00000000`001ac180 00000000`00000000 00000000`00000000
00000000`001ac190 00000000`00000000 00000000`00000000
00000000`001ac1a0 00000000`00000000 00000000`00000000
00000000`001ac1b0 00000000`00000000 00000000`00000000
00000000`001ac1c0 00000000`00000000 00000000`00000000
00000000`001ac1d0 00000000`00000000 00000000`00000000
00000000`001ac1e0 00000000`00000000 00000000`00000000
00000000`001ac1f0 00000000`00000000 00000000`00000000
00000000`001ac200 00000000`00000000 00000000`00000000
00000000`001ac210 00000000`00000000 00000000`00000000
00000000`001ac220 00000000`00000000 00000000`00000000
00000000`001ac230 00000000`00000000 00000000`00000000
00000000`001ac240 00000000`00000000 00000000`00000000
00000000`001ac250 00000000`00000000 00000000`00000000
00000000`001ac260 00000000`00000000 00000000`00000000
00000000`001ac270 00000000`00000000 00000000`00000000
00000000`001ac280 00000000`00000000 00000000`00000000
00000000`001ac290 00000000`00000000 00000000`00000000
00000000`001ac2a0 00000000`00000000 00000000`00000000
00000000`001ac2b0 00000000`00000000 00000000`00000000
00000000`001ac2c0 00000000`00000000 00000000`00000000
00000000`001ac2d0 00000000`00000000 00000000`00000000
00000000`001ac2e0 00000000`00000000 00000000`00000000
00000000`001ac2f0 00000000`00000000 00000000`00000000
00000000`001ac300 00000000`00000000 00000000`00000000
00000000`001ac310 00000000`00000000 00000000`00000000
00000000`001ac320 00000000`00000000 00000000`00000000
00000000`001ac330 00000000`00000000 00000000`00000000
00000000`001ac340 00000000`00000000 00000000`00000000
00000000`001ac350 00000000`00000000 00000000`00000000
00000000`001ac360 00000000`00000000 00000000`00000000
00000000`001ac370 00000000`00000000 00000000`00000000
00000000`001ac380 00000000`00000000 00000000`00000000
00000000`001ac390 00000000`00000000 00000000`00000000
00000000`001ac3a0 00000000`00000000 00000000`00000000
00000000`001ac3b0 00000000`00000000 00000000`00000000
00000000`001ac3c0 00000000`00000000 00000000`00000000
00000000`001ac3d0 00000000`00000000 00000000`00000000
00000000`001ac3e0 00000000`00000000 00000000`00000000
00000000`001ac3f0 00000000`00000000 00000000`00000000
00000000`001ac400 00000000`00000000 00000000`00000000
00000000`001ac410 00000000`00000000 00000000`00000000
00000000`001ac420 00000000`00000000 00000000`00000000
00000000`001ac430 00000000`00000000 00000000`00000000
00000000`001ac440 00000000`00000000 00000000`00000000
00000000`001ac450 00000000`00000000 00000000`00000000
00000000`001ac460 00000000`00000000 00000000`00000000
00000000`001ac470 00000000`00000000 00000000`00000000
00000000`001ac480 00000000`00000000 00000000`00000000
00000000`001ac490 00000000`00000000 00000000`00000000
00000000`001ac4a0 00000000`00000000 00000000`00000000
00000000`001ac4b0 00000000`00000000 00000000`00000000
00000000`001ac4c0 00000000`00000000 00000000`00000000
00000000`001ac4d0 00000000`00000000 00000000`00000000
00000000`001ac4e0 00000000`00000000 00000000`00000000
00000000`001ac4f0 00000000`00000000 00000000`00000000
00000000`001ac500 00000000`00000000 00000000`00000000
00000000`001ac510 00000000`00000000 00000000`00000000
00000000`001ac520 00000000`00000000 00000000`00000000
00000000`001ac530 00000000`00000000 00000000`00000000
00000000`001ac540 00000000`00000000 00000000`00000000
00000000`001ac550 00000000`00000000 00000000`00000000
00000000`001ac560 00000000`00000000 00000000`00000000
00000000`001ac570 00000000`00000000 00000000`00000000
00000000`001ac580 00000000`00000000 00000000`00000000
00000000`001ac590 00000000`00000000 00000000`00000000
00000000`001ac5a0 00000000`00000000 00000000`00000000
00000000`001ac5b0 00000000`00000000 00000000`00000000
00000000`001ac5c0 00000000`00000000 00000000`00000000
00000000`001ac5d0 00000000`00000000 00000000`00000000
00000000`001ac5e0 00000000`00000000 00000000`00000000
00000000`001ac5f0 00000000`00000000 00000000`00000000
00000000`001ac600 00000000`00000000 00000000`00000000
00000000`001ac610 00000000`00000000 00000000`00000000
00000000`001ac620 00000000`00000000 00000000`00000000
00000000`001ac630 00000000`00000000 00000000`00000000
00000000`001ac640 00000000`00000000 00000000`00000000
00000000`001ac650 00000000`00000000 00000000`00000000
00000000`001ac660 00000000`00000000 00000000`00000000
00000000`001ac670 00000000`00000000 00000000`00000000
00000000`001ac680 00000000`00000000 00000000`00000000
00000000`001ac690 00000000`00000000 00000000`00000000
00000000`001ac6a0 00000000`00000000 00000000`00000000
00000000`001ac6b0 00000000`00000000 00000000`00000000
00000000`001ac6c0 00000000`00000000 00000000`00000000
00000000`001ac6d0 00000000`00000000 00000000`00000000
00000000`001ac6e0 00000000`00000000 00000000`00000000
00000000`001ac6f0 00000000`00000000 00000000`00000000
00000000`001ac700 00000000`00000000 00000000`00000000
00000000`001ac710 00000000`00000000 00000000`00000000
00000000`001ac720 00000000`00000000 00000000`00000000
00000000`001ac730 00000000`00000000 00000000`00000000
00000000`001ac740 00000000`00000000 00000000`00000000
00000000`001ac750 00000000`00000000 00000000`00000000
00000000`001ac760 00000000`00000000 00000000`00000000
00000000`001ac770 00000000`00000000 00000000`00000000
00000000`001ac780 00000000`00000000 00000000`00000000
00000000`001ac790 00000000`00000000 00000000`00000000
00000000`001ac7a0 00000000`00000000 00000000`00000000
00000000`001ac7b0 00000000`00000000 00000000`00000000
00000000`001ac7c0 00000000`00000000 00000000`00000000
00000000`001ac7d0 00000000`00000000 00000000`00000000
00000000`001ac7e0 00000000`00000000 00000000`00000000
00000000`001ac7f0 00000000`00000000 00000000`00000000
00000000`001ac800 00000000`00000000 00000000`00000000
00000000`001ac810 00000000`00000000 00000000`00000000
00000000`001ac820 00000000`00000000 00000000`00000000
00000000`001ac830 00000000`00000000 00000000`00000000
00000000`001ac840 00000000`00000000 00000000`00000000
00000000`001ac850 00000000`00000000 00000000`00000000
00000000`001ac860 00000000`00000000 00000000`00000000
00000000`001ac870 00000000`00000000 00000000`00000000
00000000`001ac880 00000000`00000000 00000000`00000000
00000000`001ac890 00000000`00000000 00000000`00000000
00000000`001ac8a0 00000000`00000000 00000000`00000000
00000000`001ac8b0 00000000`00000000 00000000`00000000
00000000`001ac8c0 00000000`00000000 00000000`00000000
00000000`001ac8d0 00000000`00000000 00000000`00000000
00000000`001ac8e0 00000000`00000000 00000000`00000000
00000000`001ac8f0 00000000`00000000 00000000`00000000
00000000`001ac900 00000000`00000000 00000000`00000000
00000000`001ac910 00000000`00000000 00000000`00000000
00000000`001ac920 00000000`00000000 00000000`00000000
00000000`001ac930 00000000`00000000 00000000`00000000
00000000`001ac940 00000000`00000000 00000000`00000000
00000000`001ac950 00000000`00000000 00000000`00000000
00000000`001ac960 00000000`00000000 00000000`00000000
00000000`001ac970 00000000`00000000 00000000`00000000
00000000`001ac980 00000000`00000000 00000000`00000000
00000000`001ac990 00000000`00000000 00000000`00000000
00000000`001ac9a0 00000000`00000000 00000000`00000000
00000000`001ac9b0 00000000`00000000 00000000`00000000
00000000`001ac9c0 00000000`00000000 00000000`00000000
00000000`001ac9d0 00000000`00000000 00000000`00000000
00000000`001ac9e0 00000000`00000000 00000000`00000000
00000000`001ac9f0 00000000`00000000 00000000`00000000
00000000`001aca00 00000000`00000000 00000000`00000000
00000000`001aca10 00000000`00000000 00000000`00000000
00000000`001aca20 00000000`00000000 00000000`00000000
00000000`001aca30 00000000`00000000 00000000`76fb21c9
00000000`001aca40 00000000`00000000 00000000`00000000
00000000`001aca50 00000000`00000000 00000000`00000000
00000000`001aca60 00000000`00000000 00000000`00000000
00000000`001aca70 000007ff`fffdf000 00000000`00000002
00000000`001aca80 00000000`00000002 00000000`76fb20c0
00000000`001aca90 00000000`00030000 00000000`ffffffff
00000000`001acaa0 00000000`00003064 00000000`00000000
00000000`001acab0 00000000`76fb1e80 00000000`00000000
00000000`001acac0 00000000`00000000 00000000`00000000
00000000`001acad0 00000000`00000002 00000000`00000000
00000000`001acae0 000007ff`fffdf000 000007ff`fffdd000
00000000`001acaf0 00000000`00000002 00000000`001acbd8
00000000`001acb00 00000000`001acbe8 00000000`76fb1f49
00000000`001acb10 ffffffff`fffffffc 00000000`00000001
00000000`001acb20 00000000`00030000 00000000`001acbc8
00000000`001acb30 00000000`001acbc4 00000000`00000003
00000000`001acb40 00000000`00000000 00000000`001acc88
00000000`001acb50 00000000`00031790 00000000`00000000
00000000`001acb60 00000000`00000003 00000000`001accb0
00000000`001acb70 00000000`000004b4 00000000`76fb2ca6
00000000`001acb80 00000000`00000000 00000000`001acbc8
00000000`001acb90 00000000`001acbc4 00000000`001accb0
00000000`001acba0 00000000`001acbe0 00000000`001acbe4
00000000`001acbb0 00000000`00000001 00000000`00000002
00000000`001acbc0 000004b4`00000000 00000000`00031790
00000000`001acbd0 00000000`00000000 00000000`00000000
00000000`001acbe0 f46857d4`00000001 00000003`00000020
00000000`001acbf0 00000000`00000000 00000003`00000002
00000000`001acc00 00000000`00000002 00000000`00000000
00000000`001acc10 00000000`00000000 00000000`00000001
00000000`001acc20 00000000`00000000 00000000`00000000
00000000`001acc30 00000000`00000000 00000000`76fb312e
00000000`001acc40 00000000`001ace00 00000000`001ace48
00000000`001acc50 00000000`001ace80 00000000`00000000
00000000`001acc60 00000000`001accb0 00000000`76fb21c9
00000000`001acc70 00000000`00000000 00000000`00000000
00000000`001acc80 00000000`00000000 00000000`00140012
00000000`001acc90 00000000`001ad180 00000000`00000000
00000000`001acca0 000007ff`fffdf000 00000000`00000002
00000000`001accb0 00000000`00000002 00000000`76fb20c0
00000000`001accc0 00000000`00030000 00000000`ffffffff
00000000`001accd0 00000000`00003064 00000000`00000000
00000000`001acce0 00000000`76fb1e80 00000000`00000000
00000000`001accf0 00000000`00000000 00000000`00000000
00000000`001acd00 00000000`00000002 00000000`00000000
00000000`001acd10 000007ff`fffdf000 000007ff`fffdd000
00000000`001acd20 00000000`00000002 00000000`001ace08
00000000`001acd30 00000000`001ace18 00000000`76fb1f49
00000000`001acd40 ffffffff`fffffffc 00000000`00000001
00000000`001acd50 00000000`00030000 00000000`001acdf8
00000000`001acd60 00000000`001acdf4 00000000`00000003
00000000`001acd70 00000000`00000000 00000000`001aceb8
00000000`001acd80 00000000`00031790 00000000`00000000
00000000`001acd90 00000000`00000003 00000000`001acee0
00000000`001acda0 00000000`000004b4 00000000`76fb2ca6
00000000`001acdb0 00000000`00000000 00000000`001acdf8
00000000`001acdc0 00000000`001acdf4 00000000`001acee0
00000000`001acdd0 00000000`001ace10 00000000`001ace14
00000000`001acde0 00000000`00000001 00000000`00000002
00000000`001acdf0 000004b4`00000003 00000000`00031790
00000000`001ace00 00000000`00000000 00000000`00000000
00000000`001ace10 3306012e`00000001 00000003`00000020
00000000`001ace20 00000000`00000000 00000003`00000002
00000000`001ace30 00000000`00000002 00000000`001ada70
00000000`001ace40 00000000`00000000 00000000`00000001
00000000`001ace50 00000000`00000000 00000000`00000000
00000000`001ace60 00000000`00000000 00000000`76fb312e
00000000`001ace70 00000000`001ad030 00000000`001ad078
00000000`001ace80 00000000`001ad0b0 00000000`000008e0
00000000`001ace90 00000000`001acee0 00000000`00000000
00000000`001acea0 00000000`002b0230 00000000`00000000
00000000`001aceb0 00000000`00000000 00000000`003c003a
00000000`001acec0 00000000`001ada70 00000000`00000000
00000000`001aced0 00000000`00000080 00000000`001acff0
00000000`001acee0 00000000`00000070 00000000`00000000
00000000`001acef0 00000000`00000000 00000000`00000000
00000000`001acf00 00000000`00000000 00000000`00000000
00000000`001acf10 00000000`00000000 00000000`00000000
00000000`001acf20 00000000`00000000 00000000`00000000
00000000`001acf30 00000000`00000000 00000000`00000000
00000000`001acf40 00000000`00000000 00000000`00000000
00000000`001acf50 00000000`00020000 00000000`001acf90
00000000`001acf60 00000000`001acf90 00000000`001acf90
00000000`001acf70 00000000`00000002 00000000`00000002
00000000`001acf80 00000000`001ad030 00000000`00000000
00000000`001acf90 00000000`001a0000 00000000`001ad1b8
00000000`001acfa0 00000000`3f09c772 00000000`00000000
00000000`001acfb0 00000000`00000080 00000000`00000000
00000000`001acfc0 00000000`00000000 00000000`001ad360
00000000`001acfd0 00000000`00000000 00000000`001ad350
00000000`001acfe0 00000000`00000000 00000000`76fb35ba
00000000`001acff0 00000000`00000002 00000000`00000000
00000000`001ad000 00000000`00000000 00000000`001ad068
00000000`001ad010 00000000`001ad0b0 00000000`001ad518
00000000`001ad020 00000000`fffd0000 000007ff`fffd0032
00000000`001ad030 00000000`003c003a 00000000`001ada70
00000000`001ad040 00000000`00000000 00000000`00000000
00000000`001ad050 00000000`00000000 00000000`00000001
00000000`001ad060 00000000`00000000 00000000`0080003a
00000000`001ad070 00000000`001ad190 00000000`00000000
00000000`001ad080 00000000`77072890 00000000`001ad1c8
00000000`001ad090 00000000`00031790 00000000`00000000
00000000`001ad0a0 00000000`00000003 00000000`001ad1f0
00000000`001ad0b0 00000000`00000000 00000000`00000000
00000000`001ad0c0 00000000`00000000 00000000`00000000
00000000`001ad0d0 00000000`00000000 00000000`00000000
00000000`001ad0e0 00000000`00000000 00000000`00000000
00000000`001ad0f0 00000000`00000000 00000000`00000000
00000000`001ad100 00000000`00000000 00000000`00000000
00000000`001ad110 00000000`00000000 00000000`00000000
00000000`001ad120 d69702de`00200000 00000000`001ad170
00000000`001ad130 00000000`001ad170 00000000`001ad170
00000000`001ad140 00000000`00000020 00000000`00000020
00000000`001ad150 00000000`00000000 00000000`00000001
00000000`001ad160 00000000`00000000 00000000`00000000
00000000`001ad170 00000000`00000000 00000000`76fb312e
00000000`001ad180 00000000`001ad340 00000000`001ad388
00000000`001ad190 0057005c`003a0043 006f0064`006e0069
00000000`001ad1a0 0073005c`00730077 00650074`00730079
00000000`001ad1b0 00000000`002b6bb0 00000000`76f8c9c0
00000000`001ad1c0 004c0044`002e0032 00000000`0000004c
00000000`001ad1d0 00000000`00000000 00000000`00000000
00000000`001ad1e0 00000000`7708d520 00000000`76f99b0f
00000000`001ad1f0 00000000`00000000 00000000`001ad370
00000000`001ad200 00000000`00000002 00000000`001ad360
00000000`001ad210 00000000`3f09c6f2 00000000`00000000
00000000`001ad220 000007fe`ff280000 00000000`001ad5a8
00000000`001ad230 00000000`001ad558 00000000`00000001
00000000`001ad240 00000000`00000000 00000000`001ae3e0
00000000`001ad250 00000000`00000000 00000000`76fb3658
00000000`001ad260 00000000`00000001 00000000`001ad2a0
00000000`001ad270 00000000`001ad2a0 00000000`001ad2a0
00000000`001ad280 00000000`001ad350 00000000`001ad348
00000000`001ad290 00000000`00000000 00000000`00000000
00000000`001ad2a0 00000000`00000000 00000000`07040003
00000000`001ad2b0 00000000`001ad360 00000000`002b78c8
00000000`001ad2c0 00000000`00000000 00000000`001ad558
00000000`001ad2d0 00000000`00000001 00000000`00000001
00000000`001ad2e0 00000000`001ad558 00000000`00000001
00000000`001ad2f0 00000000`c0150000 00000000`76fb3b82
00000000`001ad300 00000000`001ae3e0 00000000`00000001
00000000`001ad310 00000000`001ad5a8 00000000`00000000
00000000`001ad320 00000000`001ad350 00000000`001ad348
00000000`001ad330 00000000`001ad340 00000000`00000000
00000000`001ad340 00000000`002b78c0 00000000`76fb21c9
00000000`001ad350 00000000`00000000 00000000`00000000
00000000`001ad360 00000000`003c003a 00000000`001ada70
00000000`001ad370 00000000`002b6bb0 00000000`00000000
00000000`001ad380 000007ff`fffdf000 00000000`00000002
00000000`001ad390 00000000`00000002 00000000`76fb20c0
00000000`001ad3a0 00000000`00030000 00000000`ffffffff
00000000`001ad3b0 00000000`00003064 00000000`00000000
00000000`001ad3c0 00000000`76fb1e80 00000000`000016e0
00000000`001ad3d0 00000000`002b78d0 00000000`002b0274
00000000`001ad3e0 00000000`00000002 00000000`0000007f
00000000`001ad3f0 000007ff`fffdf000 000007ff`fffdd000
00000000`001ad400 00000000`00000002 00000000`001ad4e8
00000000`001ad410 00000000`001ad4f8 00000000`76fb1f49
00000000`001ad420 ffffffff`fffffffc 00000000`00000001
00000000`001ad430 00000000`00030000 00000000`001ad4d8
00000000`001ad440 00000000`001ad4d4 00000000`00000003
00000000`001ad450 00000000`00000000 00000000`001ad598
00000000`001ad460 00000000`00031790 00000000`00000000
00000000`001ad470 00000000`00000003 00000000`001ad5c0
00000000`001ad480 00000000`000004b4 00000000`76fb2ca6
00000000`001ad490 00000000`00000000 00000000`001ad4d8
00000000`001ad4a0 00000000`001ad4d4 00000000`001ad5c0
00000000`001ad4b0 00000000`001ad4f0 00000000`001ad4f4
00000000`001ad4c0 00000000`00000001 00000000`00000001
00000000`001ad4d0 000004b4`001ad5a8 00000000`00031790
00000000`001ad4e0 00000000`00000000 00000000`00000000
00000000`001ad4f0 e6debadd`00000001 00000003`00000020
00000000`001ad500 00000000`00000000 00000003`00000002
00000000`001ad510 00000000`00000002 00000000`00000000
00000000`001ad520 00000000`00000000 00000000`00000001
00000000`001ad530 00000000`00000000 00000000`00000000
00000000`001ad540 00000000`00000000 00000000`76fb312e
00000000`001ad550 00000000`001ad710 00000000`001ad758
00000000`001ad560 00000000`001ad790 00000000`76fb3658
00000000`001ad570 00000000`001ad5c0 00000000`00000000
00000000`001ad580 00000000`00000000 00000000`00000000
00000000`001ad590 00000000`001ad5c0 00000000`0010000e
00000000`001ad5a0 00000000`002b8470 00000000`003c003a
00000000`001ad5b0 00000000`001ada70 00000000`002b7acb
00000000`001ad5c0 00000000`00000070 00000000`00000000
00000000`001ad5d0 00000000`00000000 00000000`00000000
00000000`001ad5e0 00000000`00000000 00000000`00000000
00000000`001ad5f0 00000000`00000000 00000000`00000000
00000000`001ad600 00000000`00000000 00000000`00000000
00000000`001ad610 00000000`00000000 00000000`00000000
00000000`001ad620 00000000`00000000 00000000`00000000
00000000`001ad630 ffffffff`00020000 00000000`001ad670
00000000`001ad640 00000000`001ad670 00000000`001ad670
00000000`001ad650 00000000`00000002 00000000`00000002
00000000`001ad660 00000000`50140163 00000000`76fcd0a0
00000000`001ad670 00000000`002b0000 00000000`002b7d8b
00000000`001ad680 00000000`3f09dc52 00000000`00000000
00000000`001ad690 00000000`00000001 00000000`00000000
00000000`001ad6a0 00000000`00000000 00000000`001ada40
00000000`001ad6b0 00000000`00000000 00000000`001ada30
00000000`001ad6c0 00000000`00000000 00000000`76fb35ba
00000000`001ad6d0 00000000`00000005 00000000`00000000
00000000`001ad6e0 00000000`00000000 00000000`00000000
00000000`001ad6f0 00000000`001ad790 00000000`07040003
00000000`001ad700 00000000`00000030 00000000`002b84c8
00000000`001ad710 00000000`00000001 00000000`002b0000
00000000`001ad720 00000000`50000163 00000000`76fcd0a0
00000000`001ad730 00000000`002b84ca 00000000`002b84cb
00000000`001ad740 00000000`002b84c0 00000000`00000000
00000000`001ad750 00000000`001ad801 00000000`00000006
00000000`001ad760 00000000`000000aa 00000000`07040003
00000000`001ad770 00000000`00000900 00000000`002b8528
00000000`001ad780 00000000`00000001 00000000`002b0000
00000000`001ad790 00000000`5000016b 00000000`76fa478a
00000000`001ad7a0 00000000`002b852a 00000000`002b852b
00000000`001ad7b0 00000000`002b8520 00000000`00000000
00000000`001ad7c0 0000007f`00000001 00000000`00000093
00000000`001ad7d0 00000000`00000017 00000000`00000006
00000000`001ad7e0 00000000`00000000 00000000`00000000
00000000`001ad7f0 05000003`00000004 00000000`00000000
00000000`001ad800 00000000`002b8520 00000000`002b8530
00000000`001ad810 00000000`001ad850 00000000`002b8530
00000000`001ad820 00000000`002b84d0 00000000`0000007f
00000000`001ad830 0000007f`002b0230 00000000`00000017
00000000`001ad840 000007fe`fd57d6c0 00000000`00000093
00000000`001ad850 00000000`002b0000 00000000`00000900
00000000`001ad860 00000000`002b0230 00000000`002b8530
00000000`001ad870 00000000`00000030 00000000`002b0230
00000000`001ad880 000007ff`fffdf000 00000000`00000a80
00000000`001ad890 00000000`b40400b0 00000000`76fe2365
00000000`001ad8a0 00000000`002b0230 00000000`0000007f
00000000`001ad8b0 00000000`002b9fd0 00000000`76fd2bf7
00000000`001ad8c0 00000000`7708d520 00000000`002b9fd0
00000000`001ad8d0 00000000`002b8fc0 00000000`00000000
00000000`001ad8e0 00000000`00000000 00000000`002b0000
00000000`001ad8f0 00000000`002b0158 00000000`76fb8600
00000000`001ad900 00000000`07040003 00000000`76faddd8
00000000`001ad910 00000000`002b0000 00000000`50000163
00000000`001ad920 00000000`002b9010 00000000`07040003
00000000`001ad930 00000000`00000030 00000000`002b8e58
00000000`001ad940 00000000`00000001 00000000`002b0000
00000000`001ad950 00000000`50000163 00000000`76fcd0a0
00000000`001ad960 00000000`002b8e5a 00000000`002b8e5b
00000000`001ad970 00000000`002b8e50 00000000`00000000
00000000`001ad980 00000000`50000101 00000000`00000006
00000000`001ad990 00000000`00000111 00000000`002b0158
00000000`001ad9a0 00000000`00fbda00 00000000`00000000
00000000`001ad9b0 05000003`00000004 00000000`00000000
00000000`001ad9c0 00000000`002b8e50 00000000`002b8e60
00000000`001ad9d0 00000000`0000007f 00000000`002b8e60
00000000`001ad9e0 00000000`0000007f 00000000`00000006
00000000`001ad9f0 0000007f`0000007f 00000000`00000111
00000000`001ada00 00000000`002b7760 00000000`07040003
00000000`001ada10 00000000`00000020 00000000`002b8eb8
00000000`001ada20 00000000`00000001 00000000`002b0000
00000000`001ada30 00000000`50000163 00000000`76fcd0a0
00000000`001ada40 00000000`002b8eba 00000000`002b8ebb
00000000`001ada50 00000000`002b8eb0 00000000`00000000
00000000`001ada60 00000000`002b0201 00000000`00000005
00000000`001ada70 00000000`0000010c 00000000`002b8e60
00000000`001ada80 00000000`002b9000 00000000`00000000
00000000`001ada90 05000003`002b0204 00000000`00000000
00000000`001adaa0 00000000`002b8eb0 00000000`002b8ec0
00000000`001adab0 05000000`0000007f 00000000`002b8ec0
00000000`001adac0 00000000`12040117 00000000`00000005
00000000`001adad0 0000007f`00000038 00000000`0000010c
00000000`001adae0 00000000`06040002 00000000`00000005
00000000`001adaf0 00000000`002b8e70 00000000`00000000
00000000`001adb00 00000000`00000008 00000000`002b8ec0
00000000`001adb10 00000000`00000030 00000000`002b0230
00000000`001adb20 00000000`002b0000 00000000`000010f0
00000000`001adb30 00000000`002b8ec0 00000000`002b0274
00000000`001adb40 00000000`002b0230 00000000`0000007f
00000000`001adb50 00000000`00000030 00000000`00000060
00000000`001adb60 00000000`00000000 00000000`001adc50
00000000`001adb70 00000000`002b0230 00000000`00000006
00000000`001adb80 00000000`00000000 00000000`ff0400fb
00000000`001adb90 00000000`00000001 00000000`00000002
00000000`001adba0 00000000`14040111 00000000`06040002
00000000`001adbb0 00000000`002b0000 00000000`77023771
00000000`001adbc0 00000000`06040002 00000000`50000163
00000000`001adbd0 00000000`002b0000 00000000`77023771
00000000`001adbe0 00000000`770703c8 00000000`00000000
00000000`001adbf0 00000000`00000000 00000000`002b0000
00000000`001adc00 00000000`002b0000 00000000`00000020
00000000`001adc10 00000000`00000000 00000000`76faddd8
00000000`001adc20 00000000`002b0000 00000000`50000163
00000000`001adc30 00000000`00000020 00000000`00000050
00000000`001adc40 00000000`00000000 00000000`001add30
00000000`001adc50 00000000`00000000 00000000`50000163
00000000`001adc60 00000000`00000000 00000000`770244e8
00000000`001adc70 00000000`00000001 00000000`002b8e60
00000000`001adc80 00000000`00000030 00000000`40000062
00000000`001adc90 00000000`002b0000 00000000`77023771
00000000`001adca0 00000000`002b0000 00000000`50000163
00000000`001adcb0 00000000`002b0000 000007ff`50000163
00000000`001adcc0 00000000`00000000 00000000`76fc797c
00000000`001adcd0 00000000`002b0000 00000000`50000063
00000000`001adce0 00000000`002b0000 00000000`00000004
00000000`001adcf0 00000000`00000001 00000000`00000020
00000000`001add00 00000000`40000062 00000000`002b0000
00000000`001add10 00000000`002b0000 00000000`50000163
00000000`001add20 00000000`002b0000 00000000`77031d0d
00000000`001add30 00000000`00000000 00000000`76e53762
00000000`001add40 00000000`00000000 00000000`76fc0000
00000000`001add50 00000000`002b0001 00000000`002b8ec0
00000000`001add60 00000000`001addc8 00000000`40000062
00000000`001add70 00000000`00000000 00000000`76faf4e3
00000000`001add80 00000000`00000000 00000000`00000030
00000000`001add90 00000000`00000000 00000000`00000000
00000000`001adda0 00000000`76d40000 00000000`76e53697
00000000`001addb0 00000000`00000000 00000000`00000000
00000000`001addc0 00000000`00000000 00000000`00000004
00000000`001addd0 00000000`001addf4 00000000`001ade18
00000000`001adde0 00000000`00000000 00000000`00000000
00000000`001addf0 00000000`00020019 00000000`00000000
00000000`001ade00 00000000`00000030 00000000`00020019
00000000`001ade10 00000000`00000034 00000000`00000000
00000000`001ade20 00000000`00000000 00000000`00000008
00000000`001ade30 00000001`3f720000 00000000`00000000
00000000`001ade40 00000000`00000000 00000000`00000030
00000000`001ade50 00000000`00000030 00000000`001ae120
00000000`001ade60 00000000`00000040 00000000`00000000
00000000`001ade70 00000000`00000000 00000000`006a006a
00000000`001ade80 00000000`76ede9b0 00000000`0000dd00
00000000`001ade90 00000000`00000000 00000000`00000030
00000000`001adea0 00000000`00000030 00000000`001ae120
00000000`001adeb0 00000000`00000040 00000000`00000000
00000000`001adec0 00000000`00000000 00000000`76f86eac
00000000`001aded0 00000000`00000001 00000000`76f86f4e
00000000`001adee0 00000000`00000003 00000000`001adf20
00000000`001adef0 00000000`770703c8 00000000`00000000
00000000`001adf00 00000000`00000000 00000000`76faf4e3
00000000`001adf10 000007ff`fffdd000 00000000`00000148
00000000`001adf20 00000000`00000000 00000000`76faddd8
00000000`001adf30 00000000`770703c8 00000000`76e53ee5
00000000`001adf40 00000000`00000000 00000000`002b0000
00000000`001adf50 00000000`001ae160 00000000`00000020
00000000`001adf60 00000000`00000090 00000000`001adf84
00000000`001adf70 00000000`002b0000 00000000`40000062
00000000`001adf80 00000010`00000002 00000000`001adfd0
00000000`001adf90 00000000`001ae1d8 00000000`00000000
00000000`001adfa0 00000000`00000000 00000000`00000034
00000000`001adfb0 00000000`00000000 00000000`001ae0f0
00000000`001adfc0 00000000`00000034 00000000`001ae0f4
00000000`001adfd0 00000004`00000000 00000000`00000004
00000000`001adfe0 00000000`00000000 00000000`00000030
00000000`001adff0 00000000`00000000 00000000`00000030
00000000`001ae000 00000000`00000000 00000000`76ede8a0
00000000`001ae010 00000000`00000040 00000000`00000000
00000000`001ae020 00000000`00000000 00000000`00007500
00000000`001ae030 00000000`00000000 00000000`00000030
00000000`001ae040 00000000`00000000 00000000`00000000
00000000`001ae050 00000000`00000040 00000000`00000000
00000000`001ae060 00000000`3ef41f4a 00000000`001ae118
00000000`001ae070 00000000`001ae160 00000000`00000000
00000000`001ae080 00000000`001ae1d8 00000000`00000000
00000000`001ae090 00000000`76edea20 00000000`00000000
00000000`001ae0a0 00000000`001ae1e0 00000000`76d40000
00000000`001ae0b0 00000000`001ae1d0 00000000`76e53ff2
00000000`001ae0c0 00000000`00000000 00000000`76e539d5
00000000`001ae0d0 00000000`002b8ec0 00000000`00020019
00000000`001ae0e0 00000000`001ae170 00000000`001ae0f4
00000000`001ae0f0 00000004`00000004 00000000`00000000
00000000`001ae100 00000000`00000000 00000000`00000000
00000000`001ae110 00000000`00220020 00000000`76edea20
00000000`001ae120 00000000`00000000 00000000`76e54183
00000000`001ae130 00000000`00000000 00000000`00000000
00000000`001ae140 00000000`00000000 00000000`00000000
00000000`001ae150 00000000`00000004 00000000`76e56864
00000000`001ae160 00000000`00000000 00000000`00000034
00000000`001ae170 00000000`00000000 00000000`001ae1e0
00000000`001ae180 00000000`001ae1d8 00000000`001ae1d0
00000000`001ae190 00000000`00000001 00000000`00000001
00000000`001ae1a0 ffffffff`00000000 00000000`00000034
00000000`001ae1b0 00000000`76dc9c58 000007ff`fffdd000
00000000`001ae1c0 00000000`00000003 00000000`76d5a6dd
00000000`001ae1d0 00000000`00000004 00000000`00000000
00000000`001ae1e0 00000000`00000004 00000000`00000000
00000000`001ae1f0 ffffffff`fffffffc 00000000`00000001
00000000`001ae200 00000000`00030000 00000000`001ae2a8
00000000`001ae210 00000000`001ae2a4 00000000`00000003
00000000`001ae220 00000000`002b0000 00000000`001ae368
00000000`001ae230 00000000`00000001 00000000`00000030
00000000`001ae240 00000000`001ae2b0 000007fe`fcf41725
00000000`001ae250 00000000`002b0000 00000000`50000163
00000000`001ae260 00000000`002b0000 00000000`77031d0d
00000000`001ae270 00000000`00000000 00000000`00000000
00000000`001ae280 00000000`002b26e0 000007fe`fcf39a82
00000000`001ae290 000007fe`fcf80aa0 00000000`00000000
00000000`001ae2a0 00000000`3f09e9f2 000007fe`fcf3ad9b
00000000`001ae2b0 00000000`00000000 00000000`00000005
00000000`001ae2c0 00000000`00000000 00000000`001ae380
00000000`001ae2d0 00000000`001ae3f0 00000000`00000000
00000000`001ae2e0 00000000`002b6cf4 00000000`76f861b3
00000000`001ae2f0 00000000`00000001 000007fe`fcf3ade1
00000000`001ae300 00000000`001ae3f8 000007fe`fcf42871
00000000`001ae310 000007fe`fcf80a01 00000000`00000000
00000000`001ae320 00000000`00000000 000007fe`fcf423cd
00000000`001ae330 00000000`00000000 00000000`002b6cf4
00000000`001ae340 00000000`00000000 00000000`00000000
00000000`001ae350 00000000`00000000 000007fe`fcf401a2
00000000`001ae360 00000000`002b6bb0 00000000`00000000
00000000`001ae370 00000000`002b6cf0 00000000`00000000
00000000`001ae380 00000000`003c003a 00000000`001ae400
00000000`001ae390 00000000`002b6cf4 00000000`00000000
00000000`001ae3a0 00000000`00000000 000007fe`fcf23312
00000000`001ae3b0 00000000`00000001 00000000`76d40000
00000000`001ae3c0 00000000`76dd2700 00000000`00000000
00000000`001ae3d0 00000000`00000000 00000000`76d5b4e4
00000000`001ae3e0 000007fe`fd560000 00000000`00000005
00000000`001ae3f0 00000000`00000000 00000000`76f866d8
00000000`001ae400 0057005c`003a0043 006f0064`006e0069
00000000`001ae410 0073005c`00730077 00650074`00730079
00000000`001ae420 005c0032`0033006d 0033004d`004d0049
00000000`001ae430 00000000`00000000 00000000`00000000
00000000`001ae440 00000000`0000000a 00000000`76fb20c0
00000000`001ae450 00000000`00040000 00000000`ffffffff
00000000`001ae460 00000000`000002f8 00000000`00000000
00000000`001ae470 00000000`76fb1e80 00000000`0000082c
00000000`001ae480 00000000`03fb59d5 ffffffff`fa330010
00000000`001ae490 00000000`0000000a 000007fe`fd01afeb
00000000`001ae4a0 00000000`00000000 00000000`00000005
00000000`001ae4b0 00000000`00000000 00000000`76dca2b0
00000000`001ae4c0 00000000`00000000 00000000`7701b0e8
00000000`001ae4d0 00000000`00000000 00000000`00000008
00000000`001ae4e0 00000000`001ae910 00000000`001ae520
00000000`001ae4f0 00000000`001ae5c0 00000000`001ae518
00000000`001ae500 00000000`00000020 00000000`00220020
00000000`001ae510 000007fe`ffffffff 00000000`00040000
00000000`001ae520 00000000`00000030 00000000`00000000
00000000`001ae530 00000000`001ae508 00000000`00000040
00000000`001ae540 00000000`00000000 00000000`76faf4e3
00000000`001ae550 00000000`001ae600 00000000`000005a0
00000000`001ae560 00000000`00000001 00000000`76d5b5d3
00000000`001ae570 00670065`0052005c 00000000`76e61a36
00000000`001ae580 0061004d`c0150008 006e0069`00680063
00000000`001ae590 006f0053`005c0065 00610077`00740066
00000000`001ae5a0 00000000`00000000 00000000`76e88a3e
00000000`001ae5b0 00000000`00000000 00000000`00000000
00000000`001ae5c0 00730077`00000000 005c0054`004e0020
00000000`001ae5d0 00000000`001ae910 00000000`00000008
00000000`001ae5e0 00000000`00000000 0047005c`006e006f
00000000`001ae5f0 0049005f`00450052 00690074`0069006e
00000000`001ae600 007a0069`006c0061 00000000`00000065
00000000`001ae610 00000000`00000000 00000000`76dd2700
00000000`001ae620 00000000`00000001 00000000`76d5a282
00000000`001ae630 00000000`00000000 00000000`76d40000
00000000`001ae640 00000000`00000000 00000000`00000000
00000000`001ae650 00000000`001ae910 00000000`00000008
00000000`001ae660 00000000`00000000 00000000`00000060
00000000`001ae670 00000000`00000240 00000000`001ae760
00000000`001ae680 00000000`002b0000 00000000`00000000
00000000`001ae690 00026161`00000000 003f8873`00001000
00000000`001ae6a0 0043e5ff`00000000 00000000`00010000
00000000`001ae6b0 00000000`00010000 000007ff`fffeffff
00000000`001ae6c0 00000000`000000ff 00000000`77023708
00000000`001ae6d0 00000000`097f033b 00000000`00530a70
00000000`001ae6e0 00000000`003b0000 00000000`00000018
00000000`001ae6f0 00000000`00531e50 fffff900`c0050000
00000000`001ae700 00000000`00000318 00000000`00532090
00000000`001ae710 00000000`00000000 00000000`00000000
00000000`001ae720 00000000`00000318 00000000`00532100
00000000`001ae730 00000000`00000014 00000000`00532170
00000000`001ae740 00000000`00000000 00000000`00000000
00000000`001ae750 00000000`00000000 00000000`00000000
00000000`001ae760 00000000`00000000 00000000`00000000
00000000`001ae770 00000000`00000318 00000000`00532200
00000000`001ae780 00000000`00000318 00000000`005322e0
00000000`001ae790 00000000`00000318 00000000`00532350
00000000`001ae7a0 00000000`00000402 00000000`00532000
00000000`001ae7b0 00000000`00000318 00000000`005323c0
00000000`001ae7c0 00000000`00000318 00000000`00532270
00000000`001ae7d0 00000000`00000000 00000000`00000000
00000000`001ae7e0 00000000`00000318 00000000`00532190
00000000`001ae7f0 00000000`00000288 00000000`00532430
00000000`001ae800 00000000`00000082 00000000`00532490
00000000`001ae810 00000000`00000000 00000000`00000000
00000000`001ae820 00000000`00000000 00000000`00000000
00000000`001ae830 00000000`00000000 00000000`00000000
00000000`001ae840 00000000`00000000 00000000`00000000
00000000`001ae850 00000000`00000000 00000000`00000000
00000000`001ae860 00000000`00000000 00000000`00000000
00000000`001ae870 00000000`00000000 00000000`00000000
00000000`001ae880 00000000`00000000 00000000`00000000
00000000`001ae890 00000000`00000000 00000000`00000000
00000000`001ae8a0 000007fe`00000000 00000000`00000000
00000000`001ae8b0 00000000`00000000 00000000`00000000
00000000`001ae8c0 00000000`00000000 00000000`00000000
00000000`001ae8d0 00000000`00000000 00000000`00000000
00000000`001ae8e0 00000000`00000000 00000000`00000000
00000000`001ae8f0 00000000`0000033f 00000000`00531f20
00000000`001ae900 00000000`00000319 00000000`00531f90
00000000`001ae910 000007fe`fd062490 00000000`00000000
00000000`001ae920 00730065`0053005c 006e006f`00690073
00000000`001ae930 005c0031`005c0073 0064006e`00690057
00000000`001ae940 00000073`0077006f 00000000`001ae998
00000000`001ae950 000007fe`fd062490 00000000`00004b88
00000000`001ae960 00000000`0000001c 00000000`76f8fa3b
00000000`001ae970 00000000`00000000 00000000`002b0000
00000000`001ae980 000007fe`ff21beb4 00000000`00000001
00000000`001ae990 000007fe`ff1a0000 000007fe`fcf2cb60
00000000`001ae9a0 00000000`001ae9c0 00000000`001aeb40
00000000`001ae9b0 00000000`00000000 00000000`0000000e
00000000`001ae9c0 00000000`0080000e 00000000`001aeb54
00000000`001ae9d0 00000000`001e001c 00000000`001ae9f4
00000000`001ae9e0 00000006`0000011c 00001db1`00000001
00000000`001ae9f0 00650053`00000002 00630069`00760072
00000000`001aea00 00610050`00200065 00310020`006b0063
00000000`001aea10 61684374`65470000 74646957`43424172
00000000`001aea20 00000000`00497368 00000000`00000000
00000000`001aea30 00000000`002b6cf0 00000000`00000000
00000000`001aea40 00000000`00140012 00000000`00000000
00000000`001aea50 00000000`3f09e032 00000000`770603f0
00000000`001aea60 00000000`00000000 00000000`00000005
00000000`001aea70 00000000`00000000 00000000`00000000
00000000`001aea80 00000000`00000004 00000000`76f9d3ea
00000000`001aea90 000007fe`ff225940 000007fe`ff1a0000
00000000`001aeaa0 00000000`002b6720 00000000`76f86604
00000000`001aeab0 00000000`00000400 00000000`001aeac0
00000000`001aeac0 000007fe`00000000 000007ff`003c003a
00000000`001aead0 00000000`76fb4bc0 000007fe`fcf233d0
00000000`001aeae0 00000000`00000001 000007fe`fcf2ce89
00000000`001aeaf0 00000001`fffdd000 03020382`00010100
00000000`001aeb00 000007fe`b4f89a62 00000000`00000000
00000000`001aeb10 00000000`00000001 000007fe`ff1bcea9
00000000`001aeb20 0057005c`003a0043 006f0064`006e0069
00000000`001aeb30 0073005c`00730077 00650074`00730079
00000000`001aeb40 005c0032`0033006d 0033004d`004d0049
00000000`001aeb50 004c0044`002e0032 6b636150`0000004c
00000000`001aeb60 00000000`00003120 00000000`00000000
00000000`001aeb70 00000000`00000001 000007fe`ff21babb
00000000`001aeb80 00000000`002b53a0 000007fe`ff1a1410
00000000`001aeb90 00000000`00000001 000007fe`fcf2ab1a
00000000`001aeba0 00000000`00000001 000007fe`ff21bc59
00000000`001aebb0 00000000`00000000 03010301`03010301
00000000`001aebc0 03010301`03010301 000007fe`ff1bd19a
00000000`001aebd0 00000000`00000005 00000000`00000000
00000000`001aebe0 0000ac1d`e89a4843 00000000`00000001
00000000`001aebf0 000007fe`ff1a0000 000007fe`ff21bd97
00000000`001aec00 00000000`00000001 00000000`770603f0
00000000`001aec10 03020302`03020302 03020302`03020302
00000000`001aec20 00000000`00000001 00000000`00000005
00000000`001aec30 00000000`00000000 00000000`ffffffff
00000000`001aec40 00000000`00000000 00000000`00000008
00000000`001aec50 00000000`002b4c58 00000000`76fcdaaa
00000000`001aec60 00000000`00000004 00000000`00001000
00000000`001aec70 00000000`00000af8 000007fe`fee114e4
00000000`001aec80 00000000`00000014 00000000`002b4bb8
00000000`001aec90 00000000`00000030 00000000`00000004
00000000`001aeca0 00000000`001aec80 00000000`00000240
00000000`001aecb0 00000000`00000000 00000000`00000000
00000000`001aecc0 00000000`002b4c58 00000000`76d5a4e0
00000000`001aecd0 01d3afc1`70d77641 00000000`770603f0
00000000`001aece0 00000000`002b4dd0 00000000`00000004
00000000`001aecf0 00000000`76d40000 00000000`76d5a466
00000000`001aed00 01d3afc1`70d77641 000003dc`d07c51e0
00000000`001aed10 00000000`001af4e0 00000000`002b4c00
00000000`001aed20 00000000`770603f0 00000000`76d5a2c5
00000000`001aed30 0000ac1d`e89a5075 00000000`00000000
00000000`001aed40 00000000`00000000 00000000`00000001
00000000`001aed50 00000000`002b4c00 00000000`76f96cb9
00000000`001aed60 00000000`770603f0 00000000`00000000
00000000`001aed70 00000000`76d5a2a0 00000000`770603f0
00000000`001aed80 00000000`00000004 00000000`00000000
00000000`001aed90 00000000`002b3560 00000000`001aedd0
00000000`001aeda0 00000000`00000001 43c51546`00000005
00000000`001aedb0 00000000`002b4c00 00000000`76d5a2a0
00000000`001aedc0 00000000`00000000 00000000`76f97e29
00000000`001aedd0 00000000`00000048 00000000`00000001
00000000`001aede0 00000000`00000000 00000000`00000000
00000000`001aedf0 00000000`00000070 ffffffff`ffffffff
00000000`001aee00 ffffffff`ffffffff 00000000`76f96c88
00000000`001aee10 00000000`76f96cb9 00000000`00001000
00000000`001aee20 00000001`3f722000 00000000`00000000
00000000`001aee30 00000001`3f722230 00000000`0000003c
00000000`001aee40 00000001`3f722208 00000000`00000000
00000000`001aee50 00000000`001aeea0 00000000`002b3a60
00000000`001aee60 00000000`00000000 00000000`76e40000
00000000`001aee70 00000000`002b5520 00000000`002b53a0
00000000`001aee80 00000000`002b5090 00000000`002b4dd0
00000000`001aee90 00000000`002b4c00 ffffffff`ffffffff
00000000`001aeea0 ffffffff`ffffffff 00000000`76f97cf6
00000000`001aeeb0 00000000`76f97e29 00000000`76f861b3
00000000`001aeec0 00000000`001aef40 00000000`00000000
00000000`001aeed0 00000000`00000080 00000001`3f7200c8
00000000`001aeee0 00000000`3f09e392 00000000`77007975
00000000`001aeef0 00000000`00000000 00000000`001af4e0
00000000`001aef00 00000000`770603f0 000007ff`fffdf000
00000000`001aef10 00000000`7708d650 00000000`7708d520
00000000`001aef20 00000000`00000000 00000000`76f9fbfd
00000000`001aef30 00000000`001af4e0 00000000`00000000
00000000`001aef40 00000000`00000000 00000000`00000000
00000000`001aef50 00000000`00000004 00000000`00000000
00000000`001aef60 00000000`00000000 00000000`00000000
00000000`001aef70 00000000`00000000 00000000`00000000
00000000`001aef80 00000000`00000001 00000000`0060005e
00000000`001aef90 00000000`002b331a 00000001`3f7200c8
00000000`001aefa0 00000000`02080062 00000000`002b2ae0
00000000`001aefb0 00000000`00000000 00000000`00000000
00000000`001aefc0 00000000`0060005e 00000000`002b331a
00000000`001aefd0 00000000`00000000 00000000`001af4e0
00000000`001aefe0 00000000`003c0028 00000000`002b3490
00000000`001aeff0 00000000`00000000 00000000`00000000
00000000`001af000 00000000`00000028 00000000`00000030
00000000`001af010 00000000`00000008 00000000`77060320
00000000`001af020 00000000`00000040 00000000`00000000
00000000`001af030 00000000`00000000 00000000`76e40000
00000000`001af040 00000000`0000000c 00000000`00000000
00000000`001af050 00000000`76f60000 00000000`00000000
00000000`001af060 000007ff`fffdd000 00000000`76f600e0
00000000`001af070 00000000`00160014 00000000`7ffe0030
00000000`001af080 00000000`00000000 00000000`00000000
00000000`001af090 00000000`00000000 00000000`00000000
00000000`001af0a0 00000000`00000000 00000000`00000000
00000000`001af0b0 00000000`00000060 00000000`00000000
00000000`001af0c0 00000000`00000000 00000000`00000000
00000000`001af0d0 00000000`00000000 00000000`00000000
00000000`001af0e0 00000000`00000000 00000000`00000000
00000000`001af0f0 00000000`00000000 00000000`00000000
00000000`001af100 00000000`00000000 00000000`00000000
00000000`001af110 00000000`00000000 00000000`00000000
00000000`001af120 00000000`00000000 00000000`00000000
00000000`001af130 003f003f`00010362 00000000`003f003f
00000000`001af140 00000000`00000000 00000000`00000000
00000000`001af150 000007ff`fffc0244 000007ff`fffc064a
00000000`001af160 000007ff`fffc0646 00000000`00000000
00000000`001af170 003f003f`000104e3 00000000`003f003f
00000000`001af180 00000000`00000000 00000000`00000000
00000000`001af190 000007ff`fffb001c 000007ff`fffb0222
00000000`001af1a0 000007ff`fffb021e 00000000`00000000
00000000`001af1b0 000007ff`fffd0654 000007ff`fffd1a56
00000000`001af1c0 00000000`00000000 00000000`00000000
00000000`001af1d0 00000000`00000000 00000000`00000000
00000000`001af1e0 00000000`00000000 00000000`00000000
00000000`001af1f0 00000000`00000000 00000000`00000000
00000000`001af200 00000000`00000000 00000000`00000000
00000000`001af210 00000000`00000000 00000000`00000000
00000000`001af220 00000000`00000000 00000000`00000000
00000000`001af230 00000000`00000000 00000000`00000000
00000000`001af240 00000000`00000000 00000000`00000000
00000000`001af250 00000000`00000000 00000000`00000000
00000000`001af260 00000000`00000000 00000000`00000000
00000000`001af270 00000000`00000000 00000000`00000000
00000000`001af280 00000000`00000000 00000000`00000000
00000000`001af290 00000000`00000000 00000000`00000000
00000000`001af2a0 00000000`00000000 00000000`00000000
00000000`001af2b0 00000000`00000000 00000000`00000000
00000000`001af2c0 00000000`00000000 00000000`00000000
00000000`001af2d0 00000000`00000000 00000000`00000000
00000000`001af2e0 00000000`00000000 00000000`00000000
00000000`001af2f0 00000000`00000000 00000000`00000000
00000000`001af300 00000000`00000000 00000000`00000000
00000000`001af310 00000000`00000000 00000000`00000000
00000000`001af320 00000000`00000000 00000000`00000000
00000000`001af330 00000000`00000000 00000000`00000000
00000000`001af340 00000000`00000000 00000000`00000000
00000000`001af350 00000000`00000000 00000000`00000000
00000000`001af360 00000000`00000000 00000000`00000000
00000000`001af370 00000000`00000000 00000000`00000000
00000000`001af380 00000000`00000000 00000000`00000000
00000000`001af390 00000000`00000000 00000000`00000000
00000000`001af3a0 00000000`00000000 00000000`00000000
00000000`001af3b0 00000000`00000000 00000000`00000000
00000000`001af3c0 00000000`00000000 00000000`00000000
00000000`001af3d0 00000000`3f09e632 00000000`00000000
00000000`001af3e0 00000000`76fb4510 00000000`00000001
00000000`001af3f0 00000000`76f60000 00000000`00000000
00000000`001af400 000007ff`fffdd000 00000000`00000000
00000000`001af410 000007ff`fffdf000 00000000`76f8a474
00000000`001af420 00000000`00000000 00000000`76f9f3b1
00000000`001af430 00000000`001af4e0 00000000`00000000
00000000`001af440 00000000`00000000 00000000`00000000
00000000`001af450 00000000`00000000 00000000`76ffc125
00000000`001af460 00000000`00000000 00000000`00000000
00000000`001af470 00000000`00000000 00000000`00000000
00000000`001af480 00000000`00000000 00000000`76f8a36e
00000000`001af490 00000000`001af4e0 00000000`00000000
00000000`001af4a0 000007ff`fffdf000 00000000`00000000
00000000`001af4b0 00000000`00000000 00000000`00000000
00000000`001af4c0 00000000`00000000 00000000`00000000
00000000`001af4d0 00000000`00000000 00000000`00000000
00000000`001af4e0 00000000`00000000 00000000`00000000
00000000`001af4f0 00000000`00000000 00000000`00000000
00000000`001af500 00000000`00000000 00000000`00000000
00000000`001af510 00001f80`0010001b 00000000`00000033
00000000`001af520 00000200`002b0000 00000000`00000000
00000000`001af530 00000000`00000000 00000000`00000000
00000000`001af540 00000000`00000000 00000000`00000000
00000000`001af550 00000000`00000000 00000000`00000000
00000000`001af560 00000001`3fb31000 000007ff`fffdf000
00000000`001af570 00000000`00000000 00000000`001af9b8
00000000`001af580 00000000`00000000 00000000`00000000
00000000`001af590 00000000`00000000 00000000`00000000
00000000`001af5a0 00000000`00000000 00000000`00000000
00000000`001af5b0 00000000`00000000 00000000`00000000
00000000`001af5c0 00000000`00000000 00000000`00000000
00000000`001af5d0 00000000`00000000 00000000`76f8a540
00000000`001af5e0 00000000`0000027f 00000000`00000000
00000000`001af5f0 00000000`00000000 0000ffff`00001f80
00000000`001af600 00000000`00000000 00000000`00000000
00000000`001af610 00000000`00000000 00000000`00000000
00000000`001af620 00000000`00000000 00000000`00000000
00000000`001af630 00000000`00000000 00000000`00000000
00000000`001af640 00000000`00000000 00000000`00000000
00000000`001af650 00000000`00000000 00000000`00000000
00000000`001af660 00000000`00000000 00000000`00000000
00000000`001af670 00000000`00000000 00000000`00000000
00000000`001af680 00000000`00000000 00000000`00000000
00000000`001af690 00000000`00000000 00000000`00000000
00000000`001af6a0 00000000`00000000 00000000`00000000
00000000`001af6b0 00000000`00000000 00000000`00000000
00000000`001af6c0 00000000`00000000 00000000`00000000
00000000`001af6d0 00000000`00000000 00000000`00000000
00000000`001af6e0 00000000`00000000 00000000`00000000
00000000`001af6f0 00000000`00000000 00000000`00000000
00000000`001af700 00000000`00000000 00000000`00000000
00000000`001af710 00000000`00000000 00000000`00000000
00000000`001af720 00000000`00000000 00000000`00000000
00000000`001af730 00000000`00000000 00000000`00000000
00000000`001af740 00000000`00000000 00000000`00000000
00000000`001af750 00000000`00000000 00000000`00000000
00000000`001af760 00000000`00000000 00000000`00000000
00000000`001af770 00000000`00000000 00000000`00000000
00000000`001af780 00000000`00000000 00000000`00000000
00000000`001af790 00000000`00000000 00000000`00000000
00000000`001af7a0 00000000`00000000 00000000`00000000
00000000`001af7b0 00000000`00000000 00000000`00000000
00000000`001af7c0 00000000`00000000 00000000`00000000
00000000`001af7d0 00000000`00000000 00000000`00000000
00000000`001af7e0 00000000`00000000 00000000`00000000
00000000`001af7f0 00000000`00000000 00000000`00000000
00000000`001af800 00000000`00000000 00000000`00000000
00000000`001af810 00000000`00000000 00000000`00000000
00000000`001af820 00000000`00000000 00000000`00000000
00000000`001af830 00000000`00000000 00000000`00000000
00000000`001af840 00000000`00000000 00000000`00000000
00000000`001af850 00000000`00000000 00000000`00000000
00000000`001af860 00000000`00000000 00000000`00000000
00000000`001af870 00000000`00000000 00000000`00000000
00000000`001af880 00000000`00000000 00000000`00000000
00000000`001af890 00000000`00000000 00000000`00000000
00000000`001af8a0 00000000`00000000 00000000`00000000
00000000`001af8b0 00000000`00000000 00000000`00000000
00000000`001af8c0 00000000`00000000 00000000`00000000
00000000`001af8d0 00000000`00000000 00000000`00000000
00000000`001af8e0 00000000`00000000 00000000`00000000
00000000`001af8f0 00000000`00000000 00000000`00000000
00000000`001af900 00000000`00000000 00000000`00000000
00000000`001af910 00000000`00000000 00000000`00000000
00000000`001af920 00000000`00000000 00000000`00000000
00000000`001af930 00000000`00000000 00000000`00000000
00000000`001af940 00000000`00000000 00000000`00000000
00000000`001af950 00000000`00000000 00000000`00000000
00000000`001af960 00000000`00000000 00000000`00000000
00000000`001af970 00000000`00000000 00000000`00000000
00000000`001af980 00000000`00000000 00000000`00000000
00000000`001af990 00000000`00000000 00000000`00000000
00000000`001af9a0 00000000`00000000 00000000`00000000
00000000`001af9b0 00000000`00000000 00000000`00000000
00000000`001af9c0 00000000`00000000 00000000`00000000
00000000`001af9d0 00000000`00000000 00000000`00000000
00000000`001af9e0 00000000`00000000 00000000`00000000
00000000`001af9f0 00000000`00000000 00000000`00000000
00000000`001afa00 00000000`00000000 00000000`00000000
00000000`001afa10 00000000`00000000 00000000`00000000
00000000`001afa20 00000000`00000000 00000000`00000000
00000000`001afa30 00000000`00000000 00000000`00000000
00000000`001afa40 00000000`00000000 00000000`00000000
00000000`001afa50 00000000`00000000 00000000`00000000
00000000`001afa60 00000000`00000000 00000000`00000000
00000000`001afa70 00000000`00000000 00000000`00000000
00000000`001afa80 00000000`00000000 00000000`00000000
00000000`001afa90 00000000`00000000 00000000`00000000
00000000`001afaa0 00000000`00000000 00000000`00000000
00000000`001afab0 00000000`00000000 00000000`00000000
00000000`001afac0 00000000`00000000 00000000`00000000
00000000`001afad0 00000000`00000000 00000000`00000000
00000000`001afae0 00000000`00000000 00000000`00000000
00000000`001afaf0 00000000`00000000 00000000`00000000
00000000`001afb00 00000000`00000000 00000000`00000000
00000000`001afb10 00000000`00000000 00000000`00000000
00000000`001afb20 00000000`00000000 00000000`00000000
00000000`001afb30 00000000`00000000 00000000`00000000
00000000`001afb40 00000000`00000000 00000000`00000000
00000000`001afb50 00000000`00000000 00000000`00000000
00000000`001afb60 00000000`00000000 00000000`00000000
00000000`001afb70 00000000`00000000 00000000`00000000
00000000`001afb80 00000000`00000000 00000000`00000000
00000000`001afb90 00000000`00000000 00000000`00000000
00000000`001afba0 00000000`00000000 00000000`00000000
00000000`001afbb0 00000000`00000000 00000000`00000000
00000000`001afbc0 00000000`00000000 00000000`00000000
00000000`001afbd0 00000000`00000000 00000000`00000000
00000000`001afbe0 00000000`00000000 00000000`00000000
00000000`001afbf0 00000000`00000000 00000000`00000000
00000000`001afc00 00000000`00000000 00000000`00000000
00000000`001afc10 00000000`00000000 00000000`00000000
00000000`001afc20 00000000`00000000 00000000`00000000
00000000`001afc30 00000000`00000000 00000000`00000000
00000000`001afc40 00000000`00000000 00000000`00000000
00000000`001afc50 00000000`00000000 00000000`00000000
00000000`001afc60 00000000`00000000 00000000`00000000
00000000`001afc70 00000000`00000000 00000000`00000000
00000000`001afc80 00000000`00000000 00000000`00000000
00000000`001afc90 00000000`00000000 00000000`00000000
00000000`001afca0 00000000`00000000 00000000`00000000
00000000`001afcb0 00000000`00000000 00000000`00000000
00000000`001afcc0 00000000`00000000 00000000`00000000
00000000`001afcd0 00000000`00000000 00000000`00000000
00000000`001afce0 00000000`00000000 00000000`00000000
00000000`001afcf0 00000000`00000000 00000000`00000000
00000000`001afd00 00000000`00000000 00000000`00000000
00000000`001afd10 00000000`00000000 00000000`00000000
00000000`001afd20 00000000`00000000 00000000`00000000
00000000`001afd30 00000000`00000000 00000000`00000000
00000000`001afd40 00000000`00000000 00000000`00000000
00000000`001afd50 00000000`00000000 00000000`00000000
00000000`001afd60 00000000`00000000 00000000`00000000
00000000`001afd70 00000000`00000000 00000000`00000000
00000000`001afd80 00000000`00000000 00000000`00000000
00000000`001afd90 00000000`00000000 00000000`00000000
00000000`001afda0 00000000`00000000 00000000`00000000
00000000`001afdb0 00000000`00000000 00000000`00000000
00000000`001afdc0 00000000`00000000 00000000`00000000
00000000`001afdd0 00000000`00000000 00000000`00000000
00000000`001afde0 00000000`00000000 00000000`00000000
00000000`001afdf0 00000000`00000000 00000000`00000000
00000000`001afe00 00000000`00000000 00000000`00000000
00000000`001afe10 00000000`00000000 00000000`00000000
00000000`001afe20 00000000`00000000 00000000`00000000
00000000`001afe30 00000000`00000000 00000000`00000000
00000000`001afe40 00000000`00000000 00000000`00000000
00000000`001afe50 00000000`00000000 00000000`00000000
00000000`001afe60 00000000`00000000 00000000`00000000
00000000`001afe70 00000000`00000000 00000000`00000000
00000000`001afe80 00000000`00000000 00000000`00000000
00000000`001afe90 00000000`00000000 00000000`00000000
00000000`001afea0 00000000`00000000 00000000`00000000
00000000`001afeb0 00000000`00000000 00000000`00000000
00000000`001afec0 00000000`00000000 00000000`00000000
00000000`001afed0 00000000`00000000 00000000`00000000
00000000`001afee0 00000000`00000000 00000000`00000000
00000000`001afef0 00000000`00000000 00000000`00000000
00000000`001aff00 00000000`00000000 00000000`00000000
00000000`001aff10 00000000`00000000 00000000`00000000
00000000`001aff20 00000000`00000000 00000000`00000000
00000000`001aff30 00000000`00000000 00000000`00000000
00000000`001aff40 00000000`00000000 00000000`00000000
00000000`001aff50 00000000`00000000 00000000`00000000
00000000`001aff60 00000000`00000000 00000000`00000000
00000000`001aff70 00000000`00000000 00000000`00000000
00000000`001aff80 00000000`00000000 00000000`00000000
00000000`001aff90 00000000`00000000 00000000`00000000
00000000`001affa0 00000000`00000000 00000000`00000000
00000000`001affb0 00000000`00000000 00000000`00000000
00000000`001affc0 00000000`00000000 00000000`00000000
00000000`001affd0 00000000`00000000 00000000`00000000
00000000`001affe0 00000000`00000000 00000000`00000000
00000000`001afff0 00000000`00000000 00000000`00000000
00000000`001b0000 00000000`00000020
0:000> dt _CONTEXT 001af4e0
ntdll!_CONTEXT
+0x000 P1Home : 0
+0x008 P2Home : 0
+0x010 P3Home : 0
+0x018 P4Home : 0
+0x020 P5Home : 0
+0x028 P6Home : 0
+0x030 ContextFlags : 0x10001b
+0x034 MxCsr : 0x1f80
+0x038 SegCs : 0x33
+0x03a SegDs : 0
+0x03c SegEs : 0
+0x03e SegFs : 0
+0x040 SegGs : 0
+0x042 SegSs : 0x2b
+0x044 EFlags : 0x200
+0x048 Dr0 : 0
+0x050 Dr1 : 0
+0x058 Dr2 : 0
+0x060 Dr3 : 0
+0x068 Dr6 : 0
+0x070 Dr7 : 0
+0x078 Rax : 0
+0x080 Rcx : 0x00000001`3fb31000
+0x088 Rdx : 0x000007ff`fffdf000
+0x090 Rbx : 0
+0x098 Rsp : 0x1af9b8
+0x0a0 Rbp : 0
+0x0a8 Rsi : 0
+0x0b0 Rdi : 0
+0x0b8 R8 : 0
+0x0c0 R9 : 0
+0x0c8 R10 : 0
+0x0d0 R11 : 0
+0x0d8 R12 : 0
+0x0e0 R13 : 0
+0x0e8 R14 : 0
+0x0f0 R15 : 0
+0x0f8 Rip : 0x76f8a540
+0x100 FltSave : _XSAVE_FORMAT
+0x100 Header : [2] _M128A
+0x120 Legacy : [8] _M128A
+0x1a0 Xmm0 : _M128A
+0x1b0 Xmm1 : _M128A
+0x1c0 Xmm2 : _M128A
+0x1d0 Xmm3 : _M128A
+0x1e0 Xmm4 : _M128A
+0x1f0 Xmm5 : _M128A
+0x200 Xmm6 : _M128A
+0x210 Xmm7 : _M128A
+0x220 Xmm8 : _M128A
+0x230 Xmm9 : _M128A
+0x240 Xmm10 : _M128A
+0x250 Xmm11 : _M128A
+0x260 Xmm12 : _M128A
+0x270 Xmm13 : _M128A
+0x280 Xmm14 : _M128A
+0x290 Xmm15 : _M128A
+0x300 VectorRegister : [26] _M128A
+0x4a0 VectorControl : 0
+0x4a8 DebugControl : 0
+0x4b0 LastBranchToRip : 0
+0x4b8 LastBranchFromRip : 0
+0x4c0 LastExceptionToRip : 0
+0x4c8 LastExceptionFromRip : 0
0:000> !peb
PEB at 000007fffffdf000
InheritedAddressSpace: No
ReadImageFileExecOptions: No
BeingDebugged: Yes
ImageBaseAddress: 000000013f720000
Ldr 000000007708d640
Ldr.Initialized: Yes
Ldr.InInitializationOrderModuleList: 00000000002b3690 . 00000000002b6bd0
Ldr.InLoadOrderModuleList: 00000000002b3560 . 00000000002b7560
Ldr.InMemoryOrderModuleList: 00000000002b3570 . 00000000002b7570
Base TimeStamp Module
13f720000 5a8b4bce Feb 20 01:12:30 2018 C:\Programs\CaptainFlintSW\hideconsole_hdls.exe
76f60000 59b94ee4 Sep 13 18:29:40 2017 C:\Windows\SYSTEM32\ntdll.dll
76e40000 59b94f29 Sep 13 18:30:49 2017 C:\Windows\system32\kernel32.dll
7fefcf20000 59b94f2a Sep 13 18:30:50 2017 C:\Windows\system32\KERNELBASE.dll
76d40000 5824a140 Nov 10 19:33:04 2016 C:\Windows\system32\USER32.dll
7fefd010000 59b2b7a8 Sep 08 18:30:48 2017 C:\Windows\system32\GDI32.dll
7fefda20000 59debda5 Oct 12 03:56:05 2017 C:\Windows\system32\LPK.dll
7feff1a0000 599464f6 Aug 16 18:29:58 2017 C:\Windows\system32\USP10.dll
7fefee10000 4eeb033f Dec 16 11:37:19 2011 C:\Windows\system32\msvcrt.dll
7fefd560000 4a5bdf40 Jul 14 04:28:32 2009 C:\Windows\system32\IMM32.DLL
7fefd0a0000 59b94ec5 Sep 13 18:29:09 2017 C:\Windows\system32\MSCTF.dll
SubSystemData: 0000000000000000
ProcessHeap: 00000000002b0000
ProcessParameters: 00000000002b26e0
CurrentDirectory: 'C:\Program Files (x86)\Windows Kits\10\Debuggers\'
WindowTitle: 'C:\Programs\CaptainFlintSW\hideconsole_hdls.exe'
ImageFile: 'C:\Programs\CaptainFlintSW\hideconsole_hdls.exe'
CommandLine: 'C:\Programs\CaptainFlintSW\hideconsole_hdls.exe'
DllPath: 'C:\Programs\CaptainFlintSW;;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Windows Kits\10\Debuggers\x64;C:\Programs\Perl\site\bin;C:\Programs\Perl\bin;C:\Programs\Python\;C:\Programs\Python\Scripts\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\EmEditor;C:\Program Files\Diskeeper Corporation\Undelete\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\Windows Phone TShell\;C:\Program Files\OnlyOffice\converter;C:\Program Files\TortoiseGit\bin;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Tools;C:\Programs\Sysinternals;C:\Programs\Git\bin'
Environment: 00000000002b1380
=::=::\
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\CaptainFlint\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=KVLASOV
ComSpec=C:\Windows\system32\cmd.exe
DEVMGR_SHOW_NONPRESENT_DEVICES=1
EMAIL=T:\AppData\The Bat!
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Users\CaptainFlint
LOCALAPPDATA=C:\Users\CaptainFlint\AppData\Local
LOGONSERVER=\\KVLASOV
NUMBER_OF_PROCESSORS=8
OS=Windows_NT
Path=C:\Program Files (x86)\Windows Kits\10\Debuggers\x64;C:\Programs\Perl\site\bin;C:\Programs\Perl\bin;C:\Programs\Python\;C:\Programs\Python\Scripts\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\EmEditor;C:\Program Files\Diskeeper Corporation\Undelete\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\Windows Phone TShell\;C:\Program Files\OnlyOffice\converter;C:\Program Files\TortoiseGit\bin;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Tools;C:\Programs\Sysinternals;C:\Programs\Git\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.py;.pyw
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 60 Stepping 3, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=3c03
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\CAPTAI~1\AppData\Local\Temp
TMP=C:\Users\CAPTAI~1\AppData\Local\Temp
USERDOMAIN=KVlasov
USERNAME=CaptainFlint
USERPROFILE=C:\Users\CaptainFlint
VBOX_MSI_INSTALL_PATH=C:\Program Files\Oracle\VirtualBox\
VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\
VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\
VS140COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\
VSSDK140Install=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VSSDK\
WINDBG_DIR=C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
windir=C:\Windows
windows_tracing_flags=3
windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log
0:000> ~*k
. 0 Id: 2200.3104 Suspend: 1 Teb: 000007ff`fffdd000 Unfrozen
# Child-SP RetAddr Call Site
00 00000000`001af418 00000000`76f8a474 ntdll!NtTestAlert
01 00000000`001af420 00000000`76f8a36e ntdll!LdrpInitialize+0xa4
02 00000000`001af490 00000000`00000000 ntdll!LdrInitializeThunk+0xe
Эх, как бы эти "третьи силы" теперь ущучить… желательно без ядерного отладчика и без "раздевания" системы от всех установленных программ…
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[2]: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, EreTIk, Вы писали:
ETI>На уровне предположения: внешний процесс создал нить с точкой входа в 0x000000013F4B1000, не рассчитав отсутствие в целевом процессе какой-то DLL. Надо при падении посмотреть является ли текущая нить главной нитью этого процесса, для WinDbg команда просмотра нитей с их стеками: ~*k
Поток один-единственный. (Разве что до бряка успевает создасться, нагадить и завершиться.) Да и как-то странно было бы, что для некоторых запусков (и после модификации файла) эти потоки не создаются (иначе в "нормальных условиях" я бы всегда получал RCX, указывающий не на мою точку входа, а на что-то внешнее, и лишь потом — ещё раз останов уже с моей точкой).
ETI>Если еще удастся поймать падение — сделайте полный дамп для анализа (из WinDbg: .dump /mfh /b dump.cab).
Падение я зафиксировал, для основной работы просто скопировал файлы под другим именем, а "сбойный" оставил без модификаций для дальнейшего анализа.
Вот дамп:
https://yadi.sk/d/Od9aQ5hD3SqNxd
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[3]: Программа крэшится до точки входа, на стадии загрузки
CF>Падение я зафиксировал, для основной работы просто скопировал файлы под другим именем, а "сбойный" оставил без модификаций для дальнейшего анализа.
Кто и как (какой функцией) запускает этот процесс?
Re[4]: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, EreTIk, Вы писали:
CF>>Падение я зафиксировал, для основной работы просто скопировал файлы под другим именем, а "сбойный" оставил без модификаций для дальнейшего анализа.
ETI>Кто и как (какой функцией) запускает этот процесс?
Как минимум, прямой вызов CreateProcess (фактически, я натравил рабочую копию этой же программулины на запуск "сломанной" копии, а там у меня применяется CreateProcess). Также попробовал запустить через альтернативный вариант этой же прожки, где CreateProcess дёргается с другими параметрами (без перезачи STD-хэндлов и с bInheritHandles==FALSE), результат аналогичный (если что, код второй прожки
тут ).
Среди других способов я не могу с уверенностью сказать, какой API применяется в них, но это: запуск из перлового скрипта (оператор "бэктик" для запуска с чтением вывода stdout), из Total Commander (double-click, Enter), из Проводника, из cmd.exe, из Task Scheduler'а (запуск с повышенными привилегиями при логине — не для этой конкретной программы, но для другой, тоже без CRT, с которой тоже иногда проявляется подобный крэш), из WinDbg (Open executable, Debug -> Go).
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[2]: Программа крэшится до точки входа, на стадии загрузки
От:
кт
Дата: 28.02.18 12:31
Оценка:
Здравствуйте, CaptainFlint, Вы писали:
CF>>Асмовый код в точке падения:
CF>>CF>>BaseThreadInitThunk:
CF>>0000000076E559C0 sub rsp,28h
CF>>0000000076E559C4 test ecx ,ecx
CF>>0000000076E559C6 jne BaseThreadInitThunk+16h (076E559D6h)
CF>>0000000076E559C8 mov rcx,r8
CF>>0000000076E559CB call rdx
CF>>
CF>>Падает, собственно, CALL. rdx тут равен вот этому самому 0x000000013F4B1000, а по этому адресу светятся одни вопросики. Видимо, несуществующая страница, отсюда и access denied. Но как он пришёл к такому состоянию, я не могу понять, не хватает опыта низкоуровневой отладки.
Что-то код выглядит странновато. Вроде sub rsp,28h показывает, что при вызове будет 5 параметров. Но параметры передаются через RCX, RDX, R8, R9 и пятый через стек.
А здесь получается, что запускается подпрограмма как 2-ой параметр? Непонятно. А чуть ниже есть еще какие-нибудь вызовы?
Re[3]: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, кт, Вы писали:
кт>Что-то код выглядит странновато. Вроде sub rsp,28h показывает, что при вызове будет 5 параметров. Но параметры передаются через RCX, RDX, R8, R9 и пятый через стек.
кт>А здесь получается, что запускается подпрограмма как 2-ой параметр? Непонятно. А чуть ниже есть еще какие-нибудь вызовы?
Вот полный код функции:
BaseThreadInitThunk:
0000000076E559C0 sub rsp,28h
0000000076E559C4 test ecx ,ecx
0000000076E559C6 jne BaseThreadInitThunk+16h (076E559D6h)
0000000076E559C8 mov rcx,r8
0000000076E559CB call rdx
0000000076E559CD mov ecx ,eax
0000000076E559CF call qword ptr [__imp_RtlExitUserThread (076EDCE88h)]
0000000076E559D5 int 3
0000000076E559D6 test byte ptr [7FFE02D0h],10h
0000000076E559DE je BaseThreadInitThunk+4Fh (076E55A0Fh)
0000000076E559E0 mov rax,qword ptr gs :[30h]
0000000076E559E9 mov rcx,qword ptr [rax+60h]
0000000076E559ED mov rcx,qword ptr [rcx+10h]
0000000076E559F1 call qword ptr [__imp_RtlImageNtHeader (076EDC7C0h)]
0000000076E559F7 test rax,rax
0000000076E559FA je TlsGetValue+178FBh (076E78E9Bh)
0000000076E55A00 mov ecx ,8000h
0000000076E55A05 test word ptr [rax+5Eh],cx
0000000076E55A09 je TlsGetValue+178FBh (076E78E9Bh)
0000000076E55A0F xor eax ,eax
0000000076E55A11 add rsp,28h
0000000076E55A15 ret
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[4]: Программа крэшится до точки входа, на стадии загрузки
От:
кт
Дата: 28.02.18 13:51
Оценка:
Здравствуйте, CaptainFlint, Вы писали:
CF>Вот полный код функции:
CF>CF>BaseThreadInitThunk:
CF>0000000076E559C0 sub rsp,28h
CF>0000000076E559C4 test ecx ,ecx
CF>0000000076E559C6 jne BaseThreadInitThunk+16h (076E559D6h)
CF>0000000076E559C8 mov rcx,r8
CF>0000000076E559CB call rdx
CF>0000000076E559CD mov ecx ,eax
CF>0000000076E559CF call qword ptr [__imp_RtlExitUserThread (076EDCE88h)]
CF>0000000076E559D5 int 3
CF>0000000076E559D6 test byte ptr [7FFE02D0h],10h
CF>0000000076E559DE je BaseThreadInitThunk+4Fh (076E55A0Fh)
CF>0000000076E559E0 mov rax,qword ptr gs :[30h]
CF>0000000076E559E9 mov rcx,qword ptr [rax+60h]
CF>0000000076E559ED mov rcx,qword ptr [rcx+10h]
CF>0000000076E559F1 call qword ptr [__imp_RtlImageNtHeader (076EDC7C0h)]
CF>0000000076E559F7 test rax,rax
CF>0000000076E559FA je TlsGetValue+178FBh (076E78E9Bh)
CF>0000000076E55A00 mov ecx ,8000h
CF>0000000076E55A05 test word ptr [rax+5Eh],cx
CF>0000000076E55A09 je TlsGetValue+178FBh (076E78E9Bh)
CF>0000000076E55A0F xor eax ,eax
CF>0000000076E55A11 add rsp,28h
CF>0000000076E55A15 ret
CF>
Тогда понятно. Но это может не причина, а уже далекое следствие
По-моему эта функция делает две вещи, в зависимости от 1-ого параметра 0/1. Она или собственно запускает программу или проверяет можно ли ее запустить (т.е. у нее правильный ли заголовок).
Тогда call rdx — это и есть сам запуск программы. Т.е. это всего лишь вызов входной точки в заголовке EXE. А вот почему такой адрес при вызове — это вопрос.
Кстати, Entry Point в заголовке EXE, наверное, не такой?
Может запретить загружать EXE по любым адресам?
Re[5]: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, кт, Вы писали:
кт>Тогда понятно. Но это может не причина, а уже далекое следствие
На момент создания темы я этого не знал, отписал то, до чего смог сам докопаться.
кт>По-моему эта функция делает две вещи, в зависимости от 1-ого параметра 0/1. Она или собственно запускает программу или проверяет можно ли ее запустить (т.е. у нее правильный ли заголовок).
кт>Тогда call rdx — это и есть сам запуск программы. Т.е. это всего лишь вызов входной точки в заголовке EXE. А вот почему такой адрес при вызове — это вопрос.
кт>Кстати, Entry Point в заголовке EXE, наверное, не такой?
Тут в параллельной ветке уже добрались до того, что ещё до процитированной функции адрес точки входа должен лежать в RCX (в RDX он копируется уже потом), а по факту там лежит что-то другое (хотя и близкорасположенное), указывающее на несуществующую страницу. Причины пока неясны.
кт>Может запретить загружать EXE по любым адресам?
Да, у меня тоже такая мысль возникла. Я уже перекомпилял с соответствующей опцией и вставил этот вариант для постоянного использования, но надо ждать, пока воспроизведётся (если воспроизведётся). Но даже если это починит проблему, хочется понять, что происходит. Починить-то я смог и банальным возвратом CRT.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[6]: Программа крэшится до точки входа, на стадии загрузки
От:
кт
Дата: 01.03.18 02:48
Оценка:
Здравствуйте, CaptainFlint, Вы писали:
кт>>Тогда понятно. Но это может не причина, а уже далекое следствие
CF>На момент создания темы я этого не знал, отписал то, до чего смог сам докопаться.
кт>>По-моему эта функция делает две вещи, в зависимости от 1-ого параметра 0/1. Она или собственно запускает программу или проверяет можно ли ее запустить (т.е. у нее правильный ли заголовок).
кт>>Тогда call rdx — это и есть сам запуск программы. Т.е. это всего лишь вызов входной точки в заголовке EXE. А вот почему такой адрес при вызове — это вопрос.
кт>>Кстати, Entry Point в заголовке EXE, наверное, не такой?
CF>Тут в параллельной ветке уже добрались до того, что ещё до процитированной функции адрес точки входа должен лежать в RCX (в RDX он копируется уже потом), а по факту там лежит что-то другое (хотя и близкорасположенное), указывающее на несуществующую страницу. Причины пока неясны.
кт>>Может запретить загружать EXE по любым адресам?
CF>Да, у меня тоже такая мысль возникла. Я уже перекомпилял с соответствующей опцией и вставил этот вариант для постоянного использования, но надо ждать, пока воспроизведётся (если воспроизведётся). Но даже если это починит проблему, хочется понять, что происходит. Починить-то я смог и банальным возвратом CRT.
Не считаю себя параноиком. Но здесь почему-то мерещится что-то вирусообразное.
Уж больно место нехорошее. Типа подмена вызова программы своим вызовом, но потом что-то идет не так.
Если бы я писал вирус понезаметнее, постарался бы исправить код как раз в этой точке.
Re[7]: Программа крэшится до точки входа, на стадии загрузки
Здравствуйте, CaptainFlint, Вы писали:
CF>...
CF>Эх, как бы эти "третьи силы" теперь ущучить… желательно без ядерного отладчика и без "раздевания" системы от всех установленных программ…
Кажется, я начинаю догадываться, в чем может быть дело.
У приложения нет секции .reloc (релоков), т.е. исполняемый модуль не поддерживает загрузку по произвольному адресу:
(все лишнее поскипано)
> !dh hideconsole_hdls
SECTION HEADER #1
.text name
0 file pointer to relocation table
0 number of relocations
SECTION HEADER #2
.rdata name
SECTION HEADER #3
.pdata name
SECTION HEADER #4
.rsrc name
Но при этом указаны флаги 'Dynamic base' и 'High entropy VA supported', работа которых основывается как раз
на релокациях исполняемого модуля в памяти по рандомным адресам:
OPTIONAL HEADER VALUES
8160 DLL characteristics
High entropy VA supported
Dynamic base
NX compatible
Terminal server aware
Также важно, что в заголовке не указан флаг 'Relocations stripped' (см. опцию /FIXED компоновщика), по которому
система могла бы точно понять, что приложение должно загружаться по строго фиксированному адресу:
FILE HEADER VALUES
22 characteristics
Executable
App can handle >2gb addresses
-> нету здесь больше ничего :)
Косвенно на проблему указывает это: "когда я ради эксперимента переделал проект на CRT-шный, проблемы прекратились".
Как я понимаю, CRT добавляет секцию .reloc.
И еще одно наблюдение (подсмотрено в дампе).
Команда !dh выдает 13f310000 image base, т.е. 13f310000 — предпочтительный адрес загрузки модуля в память.
Сам модуль был загружен (и релоцирован) по адресу 13f720000 (команда lmv m hideconsole_hdls).
А исключение возникло при попытке доступа к адресу 13fb31000 (см. !analyze -v).
Так вот, 13f720000 — 13f310000 = 410000.
Но что интересно, 13fb31000 — 13f720000 = 411000.
Т.е. разница между предпочтительным и реальным адресом загрузки модуля такая же, как между реальным адресом
загрузки и адресом, где произошло исключение. 1000 не в счет, это оффсет от начала загрузки модуля до точки входа.
Вот только я уж и не знаю, баг ли это в системе или в Visual Studio, которая позволяет
задавать "противоречивые" настройки компоновки...
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить