Посл.ответ |
Сообщение |
Ранг: 51.7 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 01 ноября 2007 22:48 · Личное сообщение · #1
Вопрос совместимости. Есть следующий код к примеру:
push XXXX
push XXXX
push XXXX
push XXXX
jmp esp
Т.е. положили в стек опкод и прыгнули на его выполнение. На всех ли процессорах разрешен запуск кода в стеке? Просто слышал что новые процесоры запрещают это. Правдо ли???
| Сообщение посчитали полезным: |
|
Ранг: 88.3 (постоянный), 3thx Активность: 0.04↘0 Статус: Участник
|
Создано: 01 ноября 2007 22:53 · Личное сообщение · #2
На всякий случай, его еще DEP Windows запрещает.
| Сообщение посчитали полезным: |
Ранг: 309.8 (мудрец), 21thx Активность: 0.17↘0 Статус: Участник
|
Создано: 01 ноября 2007 23:32 · Личное сообщение · #3
push eax
push esp
push PAGE_EXECUTE_READWRITE
push max_size
push esp
call VirtualProtect
pop eax
optimized
----- Shalom ebanats! | Сообщение посчитали полезным: |
Ранг: 12.2 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 02 ноября 2007 00:00 · Личное сообщение · #4
Автор ответь мне на вопрос какая разница гденаходится адрес кода куда мы будем прыгать???
стек ето участок памяти! который содержит чтото! вданном случае участок памяти содержит адрес твоего кода и неимеет значения откуда его читать!
| Сообщение посчитали полезным: |
Ранг: 309.8 (мудрец), 21thx Активность: 0.17↘0 Статус: Участник
|
Создано: 02 ноября 2007 00:03 · Личное сообщение · #5
вообще DEP призван бороться с шелкодесами, чтобы при каком-то переполнении код не мог просто так выйти в стек без того самого call VirtualProtect (вроде SVKP так делает). а стековый полиморфизм просто "попал под раздачу"
----- Shalom ebanats! | Сообщение посчитали полезным: |
Ранг: 9.5 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 02 ноября 2007 00:17 · Личное сообщение · #6
steepf пишет:
Автор ответь мне на вопрос какая разница гденаходится адрес кода куда мы будем прыгать???
Да разница в том, что на страницу памяти может не стоять этрибут PAGE_EXEC. И наступит боооольшой облом. Правда, этот атрибут ПРАВИЛЬНО обрабатывается только начиная с 64-разрядных процессоров.
| Сообщение посчитали полезным: |
 Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 02 ноября 2007 00:26 · Личное сообщение · #7
VA_DOS пишет:
Правда, этот атрибут ПРАВИЛЬНО обрабатывается только начиная с 64-разрядных процессоров.
в 2003 x32 по-моему всё правильно обрабатывается
----- [nice coder and reverser] | Сообщение посчитали полезным: |
 Ранг: 126.7 (ветеран) Активность: 0.14↘0 Статус: Участник #CCh
|
Создано: 02 ноября 2007 00:29 · Поправил: Ice-T · Личное сообщение · #8
гг) поставьте режим "Включить DEP для всех программ и служб..." и исполнгите это:
mov EAX,ESP
sub ESP,04h
push EAX
push 040h
push 1000
push 012E000h
call VirtualProtect
mov dword ptr[ESP],090909090h
call ESP
функо возвращаед 1, но исполнить стек не дает, в обычном же режиме DEP ("для основных программ и служб windows") все работаед норм ))
later:
SLV одепты передале: "SVKP так больше не делоет"
----- invoke OpenFire | Сообщение посчитали полезным: |
Ранг: 2.5 (гость) Активность: 0=0 Статус: Участник
|
Создано: 02 ноября 2007 00:30 · Личное сообщение · #9
32-разрядный проц исполняет код даже в секции без флага EXECUTE (главное, чтобы READ был)
Код на стеке нормально выполняется без VirtualProtect (доступ READ на стек установлен)
64-разрядного проца нету, поэтому ничё сказать не могу =(
Сейчас специально прогу написал, которая выполняет код на стеке и все ОК!
| Сообщение посчитали полезным: |
Ранг: 115.1 (ветеран), 3thx Активность: 0.07↘0 Статус: Участник
|
Создано: 02 ноября 2007 00:31 · Поправил: __ · Личное сообщение · #10
Ice-T пишет:
call ESP
эта команда на Интеле и АМД работает по разному,
насчет push esp не уверен
format PE GUI 4.0
entry start
include '%fasminc%\win32a.inc'
DEP_IGNORE = 0
section '.code' code readable executable
align 4
start:
mov ecx, size
sub esp, ecx
mov esi, L1
mov edi, esp
@@:
lodsb
stosb
loop @B
IF DEP_IGNORE
mov eax, esp
invoke VirtualProtect, eax, size, PAGE_EXECUTE_READWRITE, OldProtect
END IF
mov eax, [MessageBox]
mov ecx, esp
call ecx
IF DEP_IGNORE
mov eax, esp
invoke VirtualProtect, eax, size, [OldProtect], OldProtect
END IF
add esp, size
invoke ExitProcess, 0
L1:
push 0
push 0
push szStack
push 0
call eax
retn
nop
nop
size = $ - L1
section '.data' data readable writeable
szStack db "Stack",0
OldProtect dd ?
section '.idata' import data readable
library kernel32,'KERNEL32.DLL',
user32,'USER32.DLL'
include '%fasminc%\APIA\KERNEL32.INC'
include '%fasminc%\APIA\USER32.INC'
| Сообщение посчитали полезным: |
 Ранг: 126.7 (ветеран) Активность: 0.14↘0 Статус: Участник #CCh
|
Создано: 02 ноября 2007 00:40 · Поправил: Ice-T · Личное сообщение · #11
не суть, результат тот же..... violan when executing
later:
а есле просто запустить, то винда показывает окно, что для защиты от исполнения данных программо закрыто, так что придецо видемо поискать другие пути...
----- invoke OpenFire | Сообщение посчитали полезным: |
Ранг: 2.5 (гость) Активность: 0=0 Статус: Участник
|
Создано: 02 ноября 2007 00:44 · Личное сообщение · #12
Попрубуйте на фасме скомпилить и запустить:
format PE GUI 4.0 at 12340000h
entry start
include "win32ax.inc"
section "MYSECT!" code readable writeable
start:
push ExitProcess
push 0x15FF9090
jmp esp
data import
library kernel32,"kernel32.dll"
include "api\kernel32.inc"
end data
Все OK!
ЗЫ: Настройки DEP я не менял
| Сообщение посчитали полезным: |
 Ранг: 126.7 (ветеран) Активность: 0.14↘0 Статус: Участник #CCh
|
Создано: 02 ноября 2007 00:47 · Личное сообщение · #13
SL7549 дык DEP'у похуй на твою прогу, если ты не менял настройки..
----- invoke OpenFire | Сообщение посчитали полезным: |
Ранг: 9.5 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 02 ноября 2007 00:51 · Личное сообщение · #14
Ice-T пишет:
SL7549 дык DEP'у похуй на твою прогу, если ты не менял настройки..
Зависит от операционки. На 2003 R2 x64, к примеру, DEP включен по дефолу для всех программ.
| Сообщение посчитали полезным: |
Ранг: 115.1 (ветеран), 3thx Активность: 0.07↘0 Статус: Участник
|
Создано: 02 ноября 2007 00:51 · Личное сообщение · #15
Ice-T пишет:
не суть, результат тот же..... violan when executing
даже если поставить
DEP_IGNORE = 1
и перекомпилить?
| Сообщение посчитали полезным: |
Ранг: 2.5 (гость) Активность: 0=0 Статус: Участник
|
Создано: 02 ноября 2007 00:53 · Личное сообщение · #16
Щас зашел в настройки DEP и ничего нельзя изменить! Раньше все было OK!
И внизу написано:
Маздай пишет:
Чтобы использовать эти параметры, необходимо
иметь права администратора компьютера и использовать файл
boot.ini
Пользователь Администратор не имеет прав админа?
У меня boot.ini нету?
LOL
| Сообщение посчитали полезным: |
Ранг: 9.5 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 02 ноября 2007 00:55 · Личное сообщение · #17
SL7549 пишет:
64-разрядного проца нету, поэтому ничё сказать не могу =(
А я пробовал - на 64-разрядном вываливается в Access Violation независимо от настроек DEP
| Сообщение посчитали полезным: |
 Ранг: 126.7 (ветеран) Активность: 0.14↘0 Статус: Участник #CCh
|
Создано: 02 ноября 2007 00:55 · Личное сообщение · #18
__ ->> да, даже есле поставеть DEP_IGNORE = 1 и перкомпелить...
----- invoke OpenFire | Сообщение посчитали полезным: |
Ранг: 2.5 (гость) Активность: 0=0 Статус: Участник
|
Создано: 02 ноября 2007 01:02 · Личное сообщение · #19
Все против 64-битных процов!
32-битные тоже на помойку (чтоб винду не видеть)
Все за 16-битные! (Respect 8086&80286!)
MS-DOS 1.00-6.22 Forever!
Windowz 1.0-Vista в помойку!
ЗЫ А на висте как с настройками DEP?
| Сообщение посчитали полезным: |
Ранг: 115.1 (ветеран), 3thx Активность: 0.07↘0 Статус: Участник
|
Создано: 02 ноября 2007 01:09 · Личное сообщение · #20
Ice-T пишет:
да, даже есле поставеть DEP_IGNORE = 1 и перкомпелить
даже не верится что ms что-то сменила, к сожалению проверить в данный момент не могу,
когда раньше тестил VirtualProtect помогал
| Сообщение посчитали полезным: |
Ранг: 2.5 (гость) Активность: 0=0 Статус: Участник
|
Создано: 02 ноября 2007 01:14 · Личное сообщение · #21
Зато мы все узнали новый способ возбуждения DEP =)
| Сообщение посчитали полезным: |
 Ранг: 126.7 (ветеран) Активность: 0.14↘0 Статус: Участник #CCh
|
Создано: 02 ноября 2007 01:25 · Личное сообщение · #22
Ast, вообщем если прога один раз спалилась, то потом херня с ней какая-то... удалил ее из списка, перезагрузил комп, перкомпилил и стек выполнилсо )
з.ы. правельно, что не верицо ))
----- invoke OpenFire | Сообщение посчитали полезным: |
Ранг: 309.8 (мудрец), 21thx Активность: 0.17↘0 Статус: Участник
|
Создано: 02 ноября 2007 11:45 · Личное сообщение · #23
call ESP непохэкк, на моём старом процессоре (целерон на ядре тиалатин) сначала заносился в стек адрес возврата а потом менялся eip и пипец коду)
----- Shalom ebanats! | Сообщение посчитали полезным: |
Ранг: 51.7 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 02 ноября 2007 16:43 · Личное сообщение · #24
Спс. ответившим. буду разбираться
| Сообщение посчитали полезным: |