выгрузка секции

Тема в разделе "WASM.WIN32", создана пользователем BaGiE, 12 сен 2006.

  1. BaGiE

    BaGiE New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2005
    Сообщения:
    84
    Адрес:
    Mordor
    После загрузки PE в память и некоторых действий мне становится не нужна почти вся последняя секция. Каким образом мне можно освободить память и выгрузить эту секцию. Вопрос может и тупой, но я ничего придумать не смог. VirtualFree ясно понятно не работает.

    вот тут сказано что никак, но в это с трудом верится. и может все-таки есть способ? пробовал ставить флаг Discardable но он походу не для этих целей.
     
  2. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Из физической памяти можно выгрузить всё с помощью SetProcessWorkingSetSize(..,-1,-1)
     
  3. BaGiE

    BaGiE New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2005
    Сообщения:
    84
    Адрес:
    Mordor
    всё??? нужно только одну секцию. может кто-нибудь знает все-таки...
     
  4. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Не понятно, зачем тебе это нужно
    Винда сама разберется - если физ.памяти хватает, то и фиг с ней с этой секцией, а если не будет хватать, то эта секция как давно неиспользованная будет первым кандидатом на вылет
     
  5. BaGiE

    BaGiE New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2005
    Сообщения:
    84
    Адрес:
    Mordor
    Может ты и прав, но лучшеб конечно выгружать... Но если никак в нельзя простыми средставами то ладно. Но может кто и знает. Тогда пусть поделится опытом...
     
  6. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    как я понимаю, для чего это тебе могло понадобиться:
    ты добавляешь к упакованному исполняемому файлу секцию, перенаправляешь в неё точку входа, передаёшь управление загрузчику распаковщика и хочешь, чтобы твоя добавленная секция исчезла из памяти. так?
     
  7. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Jupiter
    В таком случае видимо достаточно исправить PE-заголовок, убрав из него описание секции, и саму секцию забить нулями - и пусть себе висит наздоровье ;)

    BaGiE
    Дело в том, что секции являются отображением exe-файла и к ним VirtualFree не применимы. А вот UnMapViewOfFile - пожалуйста, только при этом грохнется не одна секция, а весь образ со всеми вытекающими последствиями :))) Поэтому удалить одну секцию "простыми средставами" нельзя
     
  8. BaGiE

    BaGiE New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2005
    Сообщения:
    84
    Адрес:
    Mordor
    вообще я так делал в своем пакере :)... но тут не пакер, а просто прога, которая содержит много данных, которые не нужны ей после того как она их потрогала.
     
  9. BaGiE

    BaGiE New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2005
    Сообщения:
    84
    Адрес:
    Mordor
    Ну тогда хрен с ней. Выставить флаг Discardable, который, я как понимаю, нужен для того чтобы система в первую очередь выгружала такие секции если необходимо.

    leo
    пасиб, что насправил на путь истинный :)