XP(sp2), AMD64, DEP & SVKP

Тема в разделе "WASM.WIN32", создана пользователем Asterix, 25 окт 2005.

  1. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Чтобы протестировать DEP написал тест, как и ожидалось с включенным

    DEP он не пашет, но почему пашет SVKProtector, вроде ж и VirtualProtect

    не использует?
    Код (Text):
    1. format PE GUI 4.0
    2. entry start
    3.  
    4. include '%fasminc%\win32a.inc'
    5.  
    6.  
    7. section '.code' code readable executable
    8.  
    9. align 4
    10. start:
    11.     push 0   ; for ExitProcess
    12.     mov ecx, size
    13.     sub esp, ecx
    14.     mov esi, L1
    15.     mov edi, esp
    16. @@:
    17.     lodsb
    18.     stosb
    19.     loop @B
    20.     mov eax, [MessageBox]
    21.     call esp
    22.     add esp, size
    23.     call [ExitProcess]
    24. L1:
    25.     push 0
    26.     push 0
    27.     push szStack
    28.     push 0
    29.     call eax
    30.     retn
    31.     nop ; чтобы соблюсти кратность 4
    32.     nop
    33. size = $ - L1
    34.  
    35.  
    36. section '.data' data readable writeable
    37.  
    38. szStack        db  "Stack",0
    39.  
    40.  
    41. section '.idata' import data readable
    42.  
    43. library kernel32,'KERNEL32.DLL',\
    44.           user32,'USER32.DLL'
    45.  
    46. include '%fasminc%\APIA\KERNEL32.INC'
    47. include '%fasminc%\APIA\USER32.INC'
    [​IMG] _182304541__Stack.exe
     
  2. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    Там есть проверка на известные пакеры.

    "там" это значит в ядре, если кто не понял :)
     
  3. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine


    во дают... :derisive:

    А по каким признакам определяется пакер?
     
  4. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    По сигнатуре.
     
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    А не сильно ли круто держать и проверять такой список сигнатур?
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    такой вариант должен по идее работать с включенным DEP,

    хотя я не пробовал
    Код (Text):
    1. format PE GUI 4.0
    2. entry start
    3.  
    4. include '%fasminc%\win32a.inc'
    5.  
    6.  
    7. section '.code' code readable executable
    8.  
    9. align 4
    10. start:
    11.     push 0   ; for ExitProcess
    12.     mov ecx, size
    13.     sub esp, ecx
    14.     mov esi, L1
    15.     mov edi, esp
    16. @@:
    17.     lodsb
    18.     stosb
    19.     loop @B
    20.     mov eax, esp
    21.     invoke VirtualProtect, eax, size, PAGE_EXECUTE_READWRITE, OldProtect
    22.     mov eax, [MessageBox]
    23.     call esp
    24.     mov eax, esp
    25.     invoke VirtualProtect, eax, size, [OldProtect], OldProtect
    26.     add esp, size
    27.     call [ExitProcess]
    28. L1:
    29.     push 0
    30.     push 0
    31.     push szStack
    32.     push 0
    33.     call eax
    34.     retn
    35.     nop ; чтобы соблюсти кратность 4
    36.     nop
    37. size = $ - L1
    38.  
    39.  
    40. section '.data' data readable writeable
    41.  
    42. szStack        db  "Stack",0
    43. OldProtect     dd  ?
    44.  
    45.  
    46. section '.idata' import data readable
    47.  
    48. library kernel32,'KERNEL32.DLL',\
    49.           user32,'USER32.DLL'
    50.  
    51. include '%fasminc%\APIA\KERNEL32.INC'
    52. include '%fasminc%\APIA\USER32.INC'
     
  7. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"




    M$ поддерживает совместимость со всем дерьмовым софтом криворуких программистов. Причем они эмулируют даже ОШИБКИ СТАРЫХ ВЕРСИЙ ОС!

    По мне, так пусть бы защищенные кривыми протекторами программы не работали (на радость их создателям :).

    Помоему нельзя в целях совместимости захламлять систему всяким говном, но к сожалению M$ придерживается иного подхода.
     
  8. Mario555

    Mario555 New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2004
    Сообщения:
    21
    ужс, они ещё бы сингы вирей и троянов добавили... для совместимости =)))

    Причём в статьях о DEP всё так красиво расписано, а оказывается запаковал вирь свкп и нету DEP`а.
     
  9. Mario555

    Mario555 New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2004
    Сообщения:
    21
    Кстати ещё вопросик по теме DEP`а:

    у меня на host винде (XPSP2) по дефолту грузится ядро ntoskrnl.exe и DEP _не пашет_, на guest винде под VMware (та же XPSP2) по дефолту грузится ядро ntkrnlpa.exe (интересно, с какой радости ? %) ведь у меня 1Гб оперативки, а не более 4-х Гб после которых по идее должно включатся PAE) и при этом DEP там _пашет_. Если host винде вручную указать грузить ядро ntkrnlpa.exe то DEP там включается. Собственно вопрос - почему такое происходит и почему DEP не пашет с ntoskrnl.exe ?



    Добавлено: с варей понятно, там в конфиге сам прописывал paevm = "TRUE" чтоб винда установилась.
     
  10. Inv

    Inv New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2004
    Сообщения:
    20
    А может быть здесь должен быть jmp esp ???



    т.к. Call портит код, занося в стек адрес возврата.
     
  11. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Inv

    если в чем-то сомневаешься проверь код в отладчике :derisive:



    все там правильно
     
  12. Inv

    Inv New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2004
    Сообщения:
    20




    Правильно, так правильно, но тогда объясните плиз почему у меня ни в 98 ни в xp (celeron 1300) не работает а ведь должна вроде?

    Смотрю в отладчике

    call сначала помещает в стек адрес возврата, потом переходит по адресу в регистре,

    ;который уже изменился и мы попадаем на 4 байта выше.
    Код (Text):
    1.  
    2. ;0006FFAC    2F              DAS                      <<-- попалаем сюда
    3. ;0006FFAD    1040 00         ADC BYTE PTR DS:[EAX],AL
    4. ;0006FFB0    6A 00           PUSH 0               <<-- а  должны попасть сюда
    5. ;0006FFB2    6A 00           PUSH 0
    6. ;0006FFB4    68 00204000     PUSH 402000                              ; ASCII "Stack"
    7. ;0006FFB9    6A 00           PUSH 0
    8. ;0006FFBB    FFD0            CALL NEAR EAX
    9. ;0006FFBD    C3              RETN
    10.  


    ну и соответственно как только я заменяю
    Код (Text):
    1.  Call esp
    на
    Код (Text):
    1.  
    2. mov ecx,esp  ; сохраняем в ecx адрес начала нашего кода
    3. call ecx
    4.  


    все работает и везде

    пробовал включить програмный DEP

    ,но он чего-то не работает, код в стеке выполняется, даже если не использоватьь VirtualProtect
     
  13. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Inv

    я вот не пойму с чего это оно должно глючить?

    То-ли windows у тебя неправильная, то-ли проц %)



    Вот у меня в отладчике сразу на входе в функцию (AMD64, XP sp2 x86):
    Код (Text):
    1. <span style="background-color: #eeeeee]0007FFB0   6A 00            PUSH 0</span><!--back-->
    2. 0007FFB2   6A 00            PUSH 0
    3. 0007FFB4   68 00204000      PUSH 402000                              ; ASCII "Stack"
    4. 0007FFB9   6A 00            PUSH 0
    5. 0007FFBB   FFD0             CALL EAX
    6. 0007FFBD   C3               RETN
    7. 0007FFBE   90               NOP
    8. 0007FFBF   90               NOP
    9.  
    10. ----------------------------------------------------
    11.  
    12. 0007FFAC   0040101B  RETURN to Stack.<ModuleEntryPoint>+1B
    13. 0007FFB0   006A006A
    14. 0007FFB4   40200068
    15. 0007FFB8   FF006A00
    16. 0007FFBC   9090C3D0
    17. 0007FFC0   00000000
    18.  
    19.  
     
  14. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576




    согласен, раз глючит то нужно сделать так
     
  15. Inv

    Inv New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2004
    Сообщения:
    20


    В понедельник пойду на работе проверю эту теорию :)



    Если это не только мой глюк тогда это недокументированный

    способ отличить IA32 от AMD64

    может кто на 4 пеньке испытает ???
     
  16. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Inv

    > "пробовал включить програмный DEP, но он чего-то не работает"

    Программный DEP срабатывает только при обработке исключений

    См. WinXP SP2 и выполнение кода на стеке
     
  17. Inv

    Inv New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2004
    Сообщения:
    20
    leo

    спасибо, этот топик я не видел.
     
  18. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Inv




    Если не ошибаюсь, уже испытывали в топе Различия в логике PII и P4
     
  19. Inv

    Inv New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2004
    Сообщения:
    20
    bogrus

    Именно, так.

    я думаю теперь можно расширить и на P3 .

    Всё пора покупать новый комп :)
     
  20. Nothing

    Nothing New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2003
    Сообщения:
    139
    Адрес:
    Russia
    Там есть проверка на известные пакеры.

    "там" это значит в ядре, если кто не понял :)


    Ой, похоже я что-то пропустил... Подскажите, где в ядре происходят эти проверки, и где есть список пакеров которых допускают до августейшего тела?