Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1315701740
Думкин_
2011-09-11 04:42
2012.01.01
Игоря Шевченко, С Юбилеем!


2-1316667091
JamesQ
2011-09-22 08:51
2012.01.01
Word+Delphi


2-1316610955
Псарь
2011-09-21 17:15
2012.01.01
Мерцает окно при изменении размеров.


15-1316076889
ProgRAMmer Dimonych
2011-09-15 12:54
2012.01.01
ASLR - проблема в Delphi или Windows?


1-1278968008
Oleg
2010-07-13 00:53
2012.01.01
Закладки PageControl





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский