ImageBase+ImageSize+User32.dll

Тема в разделе "WASM.WIN32", создана пользователем vzlomshek, 9 апр 2009.

  1. vzlomshek

    vzlomshek New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2009
    Сообщения:
    5
    Пробывал освободить там регион памяти,после запуска любой user32 фунции вылетает с ошибкой где то в ntdll,интересно вот,что туда сует user32??
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    сует какуюто свою секцею. так что есле нужен кусок памяти за ImageBase+ImageSize лучше выделить его до загрузки user32
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    PEB.ReadOnlySharedMemoryBase ?
    Это csrss проецирует секцию при коннекте на порт. IsBadReadPtr, HeapCreate, GetLocalTime etc используют эту проекцию.
    Зачем его освобождать ?
     
  4. vzlomshek

    vzlomshek New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2009
    Сообщения:
    5
    Есть криптор,есть .exe без релоков как быть не меняя imagebase в криптованном файле?
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Так я и думал, гуанокриптор. Как и поступают в подобном случае - освободить всё адресное пространство и загрузить модуль. Совет - перед тем, как создавать какойлибо подобный код, должно изучить матчасть. У вас иначе - это стоит дорого, можно попытаться. Так не делается. Релоки по любому настраивать придётся.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    нафига?
    ImageSize ставим с запасом, декодер - PIC, копируем его куда-нить, он расшифрует, и на место закриптованого образа в память запишет исходный.
     
  7. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    n0name
    это подход любителя, а если требуется сделать декодер, который препятствует дампингу памяти, путем частичной расшифровки требуемого куска и обратной шифровки, но с другим ключом ненужного. при этом постоянно осуществляет оптимизацию использования памяти вследствии чего один и тотже код может оказаться в разных блоках памяти в разное время. т.е. не разобравшись с релоками не получится перемещать код достаточно свободно, а такая программа уже есть (я ее как-то написал). алгоритм шифрования может и так себе, но придется попотеть, чтобы собрать весь код воедино, но самое смешное, она может делать это с уже собранными образами. к тому же ОС может случайно загрузить даже exe файл не по тому адресу для которого он откомпилирован или вам не удастся получить из-за каких-либо особенностей системы требуемый буфер по требуемому адресу. тут, извините, проще с релоками.
     
  8. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    max7C4, для подобного криптора этого подхода с головой хватит
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Freeman
    Ага, тока вот почемуту не работает этот подход у товарища ибо память занята :))
     
  10. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    я о подходе n0name.. есле меняешь ImageSize (увеличиваешь на тот размер, который нужен последнюю секцию, напремер), то винда выделяет место под образ до загрузки юзер32, сталобыть на энтрипоинт тупо перенести стаб и покриптованный файл в другое место и сделать UnmapView образа
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Freeman
    Понятно. Кстати можно ведь секцию ту проекцию перенести, исходя из того, что в ней данные статические(не меняются).
    В CsrClientConnectToServer() проверяетсся выполнен ли коннект на порт сервера, ели не выполнен то вызывается CsrpConnectToServer(), последняя создаёт секцию и передаёт её хэндл на порт, после чего csrss проецирует секцию, возвращая адрес проекции. Он загружается в PEB, поля [0x4C % 0x54]. За этой проекцией идёт кодовая страница, которую также проецирует csrss, но адрес её задаётся в реестре, так что лучше её не трогать. Выше лезть смысла нет, так как TEB/PEB которые невозможно из юзермода освободить, да и делать это нельзя. Но также не гарантировано что выше user32 не будет ничего спроецировано, ибо память это равный для всех ресурс. Тоесть можно скопировать блок с текущей проекции в свой и изменить те три поля в PEB, после чего освободить проекцию. Это не должно не на что повлиять.
     
  12. vzlomshek

    vzlomshek New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2009
    Сообщения:
    5
    спасибо всем,закрыто.
    да и Clerk,вижу человек ты знающий,на будующее не знаешь не говори - ок?
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    vzlomshek
    Не пойму про что это ты. Я ведь вопрос не задал, в таком случае больше тебе отвечать не буду.
    А вобще надоели эти дурацкие вопросы, где без преминения функций гадалки не решить. Наверно щас создам топик про то, как разбирать ошибки. Большая часть вопросов тут сводится к неспособности автора анализировать исключение.
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    vzlomshek
    Вам сюда товарищ http://wasm.ru/forum/viewtopic.php?pid=309734#p309734