1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Фейковая таблица импорта

Тема в разделе "WASM.BEGINNERS", создана пользователем piligmindo, 29 фев 2020.

  1. piligmindo

    piligmindo Member

    Публикаций:
    0
    Регистрация:
    31 дек 2018
    Сообщения:
    42
    Что значит сабж? Можно сделать случайный вызов функций WinAPI, но они все равно будут все отображены в таблице импорта? Вне зависимости от того, будут ли каждая из них вызываться или нет.

    И как сделать фейковую таблицу импорта?
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    2.553
    Ну, если делать на уровне исходников С/С++, то тут достаточно добавить следующую строчку в код, и функция попадет в таблицу импорта и не будет вызвана:
    Код (Text):
    1. static void* ptr = (void*)ApiName;
     
    piligmindo нравится это.
  3. piligmindo

    piligmindo Member

    Публикаций:
    0
    Регистрация:
    31 дек 2018
    Сообщения:
    42
    А как, в таком случае, происходит автоматическая генерация всегда разной таблицы импорта?
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    2.553
    В самом простом случае делаешь список апишек, выбираешь псевдослучайные элементы из списка, вставляешь такой шаблон кода (как я описал) куда-нить в исходники, профит. Более сложные генераторы используют правила, например вместе с CreateFile будут добавляться ReadFile или WriteFile и CloseHandle, тк наличие в импорте CreateFile без остальных апишек будет выглядить подозрительно. Это канеш утрированный пример, но все же должно быть понятно.
     
  5. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.098
    Фасм может рандом сид высосать из внешнего файла и подтянуть согласно ему случайных апи в секцию virtual, так они автоматически попадут в импорт.
     
    piligmindo нравится это.
  6. Rel

    Rel Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    2.553
    В плюсах можно "высосать" сид например захешировав строки из__DATE__ и __TIME__. Но проще сделать например скрипт на Питоне, который всё нагенерит.
     
    piligmindo нравится это.
  7. piligmindo

    piligmindo Member

    Публикаций:
    0
    Регистрация:
    31 дек 2018
    Сообщения:
    42
    А, это на уровне исходников... Я просто думал, что можно сделать так, что бы при каждом новом запуске уже откомпилированного приложения была новая таблица импорта:)
    --- Сообщение объединено, 29 фев 2020 ---
    А зачем такие сложные способы получения случайного числа, если просто можно вызвать GetTickCount?
     
  8. Rel

    Rel Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    2.553
    На этапе компиляции ты не можешь вызвать GetTickCount.
     
  9. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.258
    Такое нужно только для одной цели - сбить аверский эвристик по импорту. В импорт генерится шум, в более сложном случае этим можно сбить и динамику.
     
  10. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    610
    Я в своем пакере брал инклюды фасма, а при каждой упаковке генерил рандом импорт из них ... еще заблеченые импорты убирал котороые pe studio блечит
     
  11. Rel

    Rel Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    2.553
    Еще вариант брать прям из таблицы импорта, например питоном генерить и парсить таблицы импорта с помощью библиотеки pefile. Еще вариант взять импорты из файлов Rohitab Api Monitor, там, если ничего не путаю, все импорты в формате xml прописаны, включая типы параметров и возврата функций.