Форум: "Прочее";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];
ВнизASLR - проблема в Delphi или Windows? Найти похожие ветки
← →
ProgRAMmer Dimonych © (2011-09-15 12:54) [0]Пытаюсь скомпилировать приложение, которое бы каждый раз загружалось по разным адресам. Прописал
{$DYNAMICBASE ON}
Флаг ASLR в EXEшнике выставляется. Секция .reloc тоже имеется какая-никакая. Но при каждом запуске hInstance оказывается равным $00400000. Я что-то неправильно понимаю касательно ASLR или стоит заглянуть в какие-нибудь ещё настройки?
Delphi 2010, Windows 7 x64
← →
CRLF (2011-09-15 14:54) [1]Process Explorer для скомпиленного таким образом экзешника выдаёт: "Adress space load randomization: Disabled".
← →
han_malign (2011-09-16 09:33) [2]потому что некоторые размеро-фобы(включая MS) режут из PE для EXE Relocation таблицу...
← →
ProgRAMmer Dimonych © (2011-09-16 10:05) [3]> [1] CRLF (15.09.11 14:54)
> Process Explorer для скомпиленного таким образом экзешника
> выдаёт: "Adress space load randomization: Disabled".
Самое противное - что у меня как раз-таки пишет "Enabled". Но ImageBase остаётся стандартным и ужасно равным прописанному в заголовке.
> [2] han_malign (16.09.11 09:33)
> потому что некоторые размеро-фобы(включая MS) режут из PE
> для EXE Relocation таблицу...
Релоки в моём EXEшнике есть, секция почти 64 КБ в длину и в PE Explorer"е отчётливо видно минимум 170 релоков, в основном для секции .text
-----
Так можно ли как-нибудь заставить загрузчик помещать всё-таки программу по условно-рандомному адресу? Или я неправильно понял идею ASLR?
← →
han_malign (2011-09-16 13:05) [4]For a component to support ASLR, all components that it loads must also support ASLR. For example, if A.exe consumes B.dll and C.dll, all three must support ASLR.
← →
ProgRAMmer Dimonych © (2011-09-16 13:23) [5]> [4] han_malign (16.09.11 13:05)
> For a component to support ASLR, all components that it
> loads must also support ASLR. For example, if A.exe consumes
> B.dll and C.dll, all three must support ASLR.
Это видел. Но вот в чём загвоздка: приложение не юзает ничего нестандартного (специально тестовое набросал, чтобы исключить влияние посторонних факторов). Более того, для пущей уверенности набросал минимальное приложение на FASM, импортирующее только GetModuleHandleW (kernel32.dll), MessageBoxW и wsprintfW (user32.dll) - тоже всегда грузит по одному и тому же адресу :( Флаг ASLR проверил самолично - на месте.
← →
Игорь Шевченко © (2011-09-16 13:30) [6]kernel32.dll, user32.dll - они не support нифига
← →
sniknik © (2011-09-16 13:40) [7]http://decker.no-ip.org/forum/index.php?showtopic=26342
> началась с того, что я поставил SP1 для Windows 7 ... и сразу же заметил работу этого ASLR ...
а до этого не работало.
???
← →
ProgRAMmer Dimonych © (2011-09-16 14:04) [8]> [7] sniknik © (16.09.11 13:40)
> http://decker.no-ip.org/forum/index.php?showtopic=26342
> > началась с того, что я поставил SP1 для Windows 7 ...
> и сразу же заметил работу этого ASLR ...
> а до этого не работало.
>
> ???
Хм, а вполне возможно. Следов установки SP1 не обнаружил.
Но ведь ASLR же, кажется, ещё с Висты тянется. Есть какая-нибудь возможность заставить Семёрку использовать ASLR без установки SP1?
> [6] Игорь Шевченко © (16.09.11 13:30)
> kernel32.dll, user32.dll - они не support нифига
Но ведь тогда автоматически весь софт не support?
← →
Игорь Шевченко © (2011-09-16 15:05) [9]
> Но ведь тогда автоматически весь софт не support?
почему ? есть программы, которым эти DLL не нужны, наверное.
Я правда не понимаю, нафиг эта возможность вообще существует и какой от нее практический смысл, потому что DLL все равно перебазируются при загрузке, если их предпочтительный адрес занят.
← →
DVM © (2011-09-16 15:15) [10]
> Игорь Шевченко © (16.09.11 15:05) [9]
> почему ? есть программы, которым эти DLL не нужны, наверное.
Я сталкивался с тем, что если в программе нет ни одного вызова WinApi то она системой вообще не считается за программу. Ругается.
← →
Игорь Шевченко © (2011-09-16 16:36) [11]DVM © (16.09.11 15:15) [10]
.386
.model flat, stdcall
.code
main:
ret
end main
не ругается
← →
Inovet © (2011-09-16 16:52) [12]> [10] DVM © (16.09.11 15:15)
> если в программе нет ни одного вызова WinApi
Интересно, что такая программа может практически полезного делать.
← →
Игорь Шевченко © (2011-09-16 16:54) [13]Inovet © (16.09.11 16:52) [12]
Диски, например, при запуске системы проверять
← →
Inovet © (2011-09-16 17:00) [14]> [13] Игорь Шевченко © (16.09.11 16:54)
> Диски, например, при запуске системы проверять
Имеется ввиду запуск в системе а не до неё, а диски возможно проверять без вызовов АПИ?
← →
Игорь Шевченко © (2011-09-16 17:06) [15]Inovet © (16.09.11 17:00) [14]
Программа autochk.exe не использует ни одной функции из kernel32.dll, user32.dll и т.п., тех, которые реализуют WinAPI
← →
RTFM (2011-09-18 10:54) [16]>>> kernel32.dll, user32.dll - они не support нифига
Бред.
http://blogs.msdn.com/b/michael_howard/archive/2006/05/26/address-space-layout-randomization-in-windows-vista.aspx
Vista:
1. kernel32.dll (0x77c10000)
2. kernel32.dll (0x77350000)
← →
Игорь Шевченко © (2011-09-18 11:22) [17]RTFM (18.09.11 10:54) [16]
> Бред.
Может быть. Исходил из того, что
"system DLLs were carefully based to avoid relocations and bound to speed up loading"
← →
ProgRAMmer Dimonych © (2011-09-19 09:38) [18]> [9] Игорь Шевченко © (16.09.11 15:05)
> Я правда не понимаю, нафиг эта возможность вообще существует
> и какой от нее практический смысл, потому что DLL все равно
> перебазируются при загрузке, если их предпочтительный адрес
> занят.
Вроде как считается круто для защиты от переполнения буфера. Для Delphi-софта эта проблема как-то не так актуальна, конечно, но зато из-за ASLR могут возникать проблемы, если нужно работать с ImageBase"ами и структурой PE-файла (защита всякая).
← →
ProgRAMmer Dimonych © (2011-09-19 09:41) [19]> [10] DVM © (16.09.11 15:15)
> Я сталкивался с тем, что если в программе нет ни одного
> вызова WinApi то она системой вообще не считается за программу.
> Ругается.
С таблицей импорта не сталкивался, а вот под XP SP2 случалось видеть такое поведение, если у программы была пустой секция данных.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.003 c