Проблемы с патчами.

Тема в разделе "WASM.BEGINNERS", создана пользователем Clerk, 30 июл 2010.

  1. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    352
    А по-человечески, по-простому - никак? ))
    Можно ли как-то пересобрать секцию импорта и чуть поправить exe-файл, чтобы получить, то о чем я спросил выше? Да или нет, если уж в лом расписывать?
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    GRAFik,

    > с помощью правки секции импорта в exe-файле - подгрузить свою DLL

    Если модуль есть в импорте то он само собой вначале загружается. Более точно - отображается, затем если загрузчик успешно отработает будет доставка сообщений, что и есть загрузка.

    > если функций в секции импорта немного, то можно, а если много, то можно, но это будет долго

    Что долго я хз. Менять IAT это палевное дело, лучше переписать EP, даже если в самом модуле есть защита(протектор), то после загрузки можно восстановить область и подменить файловое чтение(протекторы обычно сравнивают память с файлом).
    --- Сообщение объединено, 17 окт 2020 ---
    GRAFik,

    Смотри пример https://exelab.ru/f/?action=vthread&forum=5&topic=26358&page=1#18

    - сборку могу поискать если интересно.
     
    GRAFik нравится это.
  3. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    352
    Инди, спасибо !!!
    Вы не представляете как это приятно, получить поддержку и одобрение от самого Инди)), что типа, товарищ, в теории вы мыслите правильно - работать такой алгоритм будет, другой вопрос - будет ли в таком решении смысл или лучше и быстее сделать по-другому варианту, но - это уже вопрос целесообразности данного варианта решения и об этом я тоже упоминал в своем вопросе? Для меня тут главный вопрос: будет ли в теории такое работать? Вот можете же, когда захотите - понятно и доходчиво все объясняснить)).
    Долго - это, когда допустим, у тебя есть exe-файл у которого в секции импорта 1000 функций и править вручную туеву хучу абсолютных адресов, чтобы пересобрать секцию импорта и получить рабочий файл - это, знаете ли, еще то удовольствие)).
    Ну про это я тоже упоминал. Это как сделать дамп с кривой секцией импорта, у меня это будет работать, а на другом компьютере - не факт.
    Да конечно интересно. Другой вопрос смогу ли я в этом разобраться, если там еще и защита какая-то присутствует. Чем черт не шутит, может когда-нибудь с вами статью какую-нибудь напишим? ))
     
    Последнее редактирование: 17 окт 2020
  4. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    174
    то есть получается что можно заинжектить свою DLL ?
     
  5. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    GRAFik, что-то непонятно какова конечная цель? Для чего это нужно? Просто можно обойтись "малой кровью" если к примеру нужно просто загрузить нужную dll.
    Если это просто академический интерес, то можно добавить один IMAGE_IMPORT_DESCRIPTOR, если место позволяет. Если нет то перенести все структуры в свободное место и там добавить. В крайнем случае добавить секцию и там сформировать.
    Альтернативно можно просто создать DLL в папке с приложением которая будет подгружать нужную DLL и редиректить ей вызовы. Есть еще специальный раздел реестра который позволяет задать загружаемые либы.
     
  6. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    GRAFik,

    Там пример не удалён оказывается.

    Задача не понятна. Обычно IAT не трогается, палево тк прямой статик импорт. Если же загрузка идёт динамически после начала выполнения EP, то можно сбить ав вирту, далее безопасно загрузить, для этого впрыскивается код как можно ближе к EP. В идеале она должна пересобираться(ребилдиться). Но в любом случае это изменение модуля, в частности кодовых секций(IAT обычно там же), а такое не нравится ав и даёт generic детекты.

    Импорт лучше никогда не трогать, во первых это сложно(менять сложные структуры пе), во вторых не нужно. С импортом могут быть проблемы, многие механизмы его меняют в динамике, мод совместимости и тп. И какое будет поведение на других системах не особо то предсказать можно, тк модуль чёрный подгружается.

    Впрочем сама идея тухлая, защита эту загрузку зарубит, в частности контр суммами(x64). Только если теоретически рассматривать.
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.707
    GRAFik,
    Вставлю свои 5 копеек. Импорт не всегда идет через имена функций, возможен импорт по ординалам, "отложенный" импорт, bound import https://wasm.in/threads/import-x64.32146/
     
    hiddy нравится это.
  8. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    352
    Всем кто откликнулся огромное спасибо !!!
    Я аж прям растерялся немного, от такого внимания к своей персоне. ))

    Ох, Thetrik, вы бы чего попроще спросили? )) Вот как бы вы мне на этот же самый вопрос ответили? Зачем вы компилируете exe-файлы в хексредакторе, когда это гораздо проще сделать в FASM или в VS? )) Вот и я примерно, за тем же самым. ))
    Ну а если чуть посерьезней, то хочется, видимо, иногда какого-то уважения за знания, которые есть, к примеру, у вас или были у того же КК, да и чтобы, наверное, не теряться перед какими-то сложными exe-файлами, а знать, что можно с ними сделать в той или иной ситуации. Ну вот как-то, где-то примерно так. И еще не забывайте, что я вам обещал когда-нибудь "постучать" на почту или в личку с интересным предложением - вот, готовлюсь. ))
    Нифига себе 5 копеек, да тут целый мешок золота, а я ходил спотыкался и в упор не замечал. )) Спасибо за информацию.

    P.S. Кстати, о "птичках" тут в теме, в 17 посте, небольшой спор возник, я заинтересовался, вник и пришел к выводу, что с Mikl___'ом бесполезно спорить по вопросам касающимся ассемблера. )) Но считаю, что правильнее было бы написать, что, товарищ, вы не правы и когда-нибудь вы к этому выводу придете сами. А то у людей может сложится впечатление, что раз Mikl___ молчит - значит сомневается. ))
     
  9. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    352
    Всем привет.
    После прочтения статей Mikl___ Import x64 и Thetrik "Hello world" в машинных кодах (дай им бог здоровья, а Thetrik'у я бы, вообще, памятник при жизни поставил, за его "высший пилотаж" на Бейсике и Фасме" =)) ), пришел к выводу, что можно написать программу, которая будет пересчитывать секцию импорта и добавлять туда свои DLL со своими функциями. И тогда, в принципе, будет не важно сколько функций прописано в импорте две, три или миллион - все будет пересчитываться на автоматике. Потом подумал, что наверняка есть уже готовые подобные программы и я просто, буду заново изобретать свой велосипед. )) Может кто подскажет названия таких программ (может на Гитхабе или еще где)?

    P.S. Предвосхищая вопрос Thetrik'а: что-то непонятно какова конечная цель? Для чего это нужно? )) Хочу сказать, что информации по обычным классическим инжектам много и есть даже с готовым кодом, а вариант с пересчетом секции импорта мне как-то не встречался - хотел разобраться и поэксперементировать.
     
  10. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    готовый софт не даст ответа на последний вопрос, пробуйте написать что-то свое для этого.
     
    Последнее редактирование: 21 окт 2020
  11. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    352
    Ну я немного все же "погрузился в тему", поэтому для меня польза будет, я думаю. Должен быть такой софт.
    А что касается своего софта, то может позже, сейчас хочу упор на изучении теории сделать. Да и все равно, перед тем как писать что-то свое, нужно проанализировать что, вообще, есть и как оно примерно устроено/работает? Хороший пример в этом смысле RamMerLabs. Перепробовал все что есть из просмотрщиков PE-файлов и его ни один не устроил - решил написать свой.
     
  12. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    559
    А патчи исполняемых файлов тоже считаются?
    --- Сообщение объединено, 13 дек 2020 ---
    В общем вопрос? Киберпанк вышел! Он с использует AVX и SEE4.2 и SSE4.1. AVX используется совсем немного и его вырезать. А можно ли вырезать SEE4.2 и SSE4.1? Заменив их на просто SSE!
     
  13. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    174
    вряд ли
     
  14. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Ну идёт блок на исполнение в буфер, какая разница какая инструкция sse mmx etc intel man's. Если она не выполняет выборку то интереса не представляет, уходит в буфер и выбирается следующая.

    Декодеру длин нет разницы какой набор и кодировка.
     
  15. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    559
    Думаю таки можно заменить SEE4.2 и SSE4.1 на SEE2 и SSE3, чтобы на старых атлона и феномах можно было игру запустить, вроде как на самых мощных феномах, при минимальных настройках и хорошей видеокарте можно получить достаточно хороший ФПС.
    Технология такая, какая используется в моём проекте X-Ray extensions 2. Находим нужные инструкции и заменяем её на аналогичные, из более старого набора SSE, если надо вешаем соплю, для этого добавляем новую секцию. Конечно быстродействие упадёт, но такое решение более быстрое чем просто эмуляция этих инструкций. За одно можно ещё какие-то баги фиксить, и добавлять свои фичи.
    Но пока утилита AddCode.exe не умеет работать с PE-файлами х64. Так что это всё потом. Хотя может CD PROJEKT RED может и сами сделают версию для слабых ПК... нет, не сделают!
    --- Сообщение объединено, 14 дек 2020 ---
    Интересная технология используется.
    https://github.com/yamashi/PerformanceOverhaulCyberpunk
    Я так понял, создаётся dll'ка, которая пропатчивает файл игры в момент запуска.
    Хотя у меня получше, я так думаю.