# головоломка от мыщъх'а

Тема в разделе "WASM.HEAP", создана пользователем kaspersky, 29 июн 2008.

  1. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    сабж. что делает следующий код:

    p1 = GetProcAddress(LoadLibrary("ntdll.dll"),"ZwLoadDriver");
    p2 = GetProcAddress(LoadLibrary("kernel32.dll"),"CreateFileA");
    if (!(((DWORD)p1 ^ (DWORD)p2) & 0xFFFF0000 )) count++;
    if (*(BYTE*)p2 == 0xC8) count++;

    встретил такой код в одной малвари. долго думал. вникал в суть вещей и необъятность непостижимости мира. потом все-таки прозрел. предлагаю остальным поломать головы тоже. исходный код содержал кучу мусора (обфускация, однако), в приведенном примере каждый байт значимый и работающий на идею. вопрос знатокам: что все-таки этот код делает? а ведь он что-то такое делает. причем очень интересное и полезное (для выживания малвари).

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

    удачи в поисках и медитации!
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    xor 11h
    Код (Text):
    1. Юфбукш1xw1юбяуфбофг1юядвысъщ1жфбфц1мыаюябг1RctpetWx}tP1щ1Kf]~puUcxgtc1яхьяубфэфьья=1щъщ1ьфг?1Угябяш1<1дц=1эячфг1ысыяш<ьщгн1цсищгькш1аяег1гсыщэ1ярбсцяэ1аюъсшащьт1юбяуяхщг?
     
  3. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    n0name
    ??? и рядом не лежало.
    во-первых, результат xor'а не сохраняется, во-вторых, приведенный код "воды" не содержит и короче его уже не напишешь.
     
  4. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Код (Text):
    1. Юфбукш1юбяуфбофг1ьсд<ао1ъщ1ярбсрягжщыщ1е<ш1уьвгбщ1яхьятя1'%Ы1хщсюсцяьс1схбфаяу1<1тбсьвъобьяагн1укхфъфьщо1юсэогщ1Gxcedp}P}}~r6яэ1хъо1эяхвъфш1у1г?ж?угябяш1рфц1юяьогщо1уяяриф?1юбщж©э1гвг1tetc.
     
  5. doesn

    doesn New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2007
    Сообщения:
    97
    а что тут полезного для малвари?
     
  6. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    doesn
    что этот код делает?!
    последняя строка - прямая подсказка, по ней я и раскурил, хотя можно и без нее. гм. плохо вы антивири знаете ;)
     
  7. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    разве тут не просто проверка на похученность двух функций и проверка на retn (или что там за опкод? :)) во второй?
     
  8. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    похоже на проверку, что две функции реализованны в одном модуле.

    Вот только не могу сообразить - кому нужно патчить CreateFileA?
     
  9. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Неужели то, что все символы печатные(видимые), позволяет обойти антивири?
     
  10. Guest

    Guest Guest

    Публикаций:
    0
    В первом случае как уже сказали проверка базы модулей, там даже подсказка "!" и "0xFFFF0000" - обрубает мелкие адреса, т.к. при перехвате и подмене функций перехватчики идут в памяти подряд, старшие байты адресов совпадают, ксор должен их занулить, а чтобы проверить зануление старших байтов отбросили младшие. Видимо идет набор очков необходимых для каких-то действий.
     
  11. dag

    dag New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2004
    Сообщения:
    446
    при включеном и выключеном каспере count_до=count_после =)
     
  12. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.564
    Адрес:
    Russia
    kaspersky
    Вот еще код , частенько встречается в троях (серьезно) :
    Код (Text):
    1. FA = (DWORD*)(*(DWORD*)(((WORD)(*((DWORD*)((DWORD)pOT + i*2))))*4 + AT));
    Разгадаешь ? :derisive:
     
  13. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    deleted: передумал
     
  14. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    rmn
    > разве тут не просто проверка на похученность двух функций
    > и проверка на retn (или что там за опкод? :)) во второй?
    нет, не retn :) что проверка на похученность - это уже ближе,
    но... весь вопрос в том, что же все-таки _реально_ тут проверяется?
    пересказывать код словами не надо - это и из кода понятно, особенно
    когда мыщъх вычислил из него все лишнее... нужно знать: когда
    условие (!(((DWORD)p1 ^ (DWORD)p2) & 0xFFFF0000 )) истинно.
    а оно ведь когда-то истино. хотя на первой фазе анализа мыщъх
    думал, что это просто обфускатор прикалывается.... :derisive:)

    twgt
    > Неужели то, что все символы печатные(видимые),
    > позволяет обойти антивири?
    задетектить. а потом обойти.
    там для каждого (ну не для каждого, но для доброго десятка)
    аверов детект и потом либо обход, либо - уход, т.е. отказ от
    вторжения, чтобы не запалили...

    im1111
    > В первом случае как уже сказали проверка базы модулей,
    > там даже подсказка "!" и "0xFFFF0000" - обрубает мелкие адреса,
    > т.к. при перехвате и подмене функций перехватчики идут в памяти
    > подряд, старшие байты адресов совпадают, ксор должен их занулить,
    во! это совершенно правильная мысль!!!
    при определенном перехвате указанных функций
    мы получаем довольно близкие адреса, наблюдая
    различия только в младших байтах, причем перехватчик
    начинается с определенного опкода. остается только
    выяснить у какого именно антивируса такой перехватчик.

    возникает следующая подзадача. аверей много, ставить
    их на свою тачку (даже под виртуалкой) влом и не фиг.
    как быть? :derisive:

    > Видимо идет набор очков необходимых для каких-то действий.
    угу. если выполняется только одно условие - то это подозрение на.
    если выполняются оба - то это 100% детект авера.


    dag
    > при включеном и выключеном каспере count_до=count_после =)
    на кале свет клином не сошелся. кстати, для детекта кала
    там используется NOP dw,[EAX + 00h], который эмулят только
    F-Prot, Kaspersky и NOD32v2, после чего остается только выяснить
    с кем из трех мы имеем дело :derisive:
     
  15. Guest

    Guest Guest

    Публикаций:
    0
    kaspersky всетаки глянь на код выше он тоже очень интересен ;)
     
  16. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    im1111
    не врубаюсь, что значат pOT, AT, FA...
    щас скомпилирую это дело, а то у меня в глазах от кастинга рябит, на асме понять будет проще ;)
     
  17. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Что-то вроде:
    FA - function address
    AT - address table
    pOT - хз, мэйби pointer tO export Table :lol:
     
  18. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    функцийа по орденалу?
     
  19. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.564
    Адрес:
    Russia
    Freeman
    Верно
    Если написать точнее то:
    Код (Text):
    1. FunctAddr = (DWORD*)(*(DWORD*)(((WORD)(*((DWORD*)((DWORD)pOrdinalTable + i*2))))*4 + AddresTable));
    2. TrueFunctAddr = (DWORD*)((DWORD)FunctAddr + Offset)
    Признаюсь придумывал сам давно года 3 назад от нечего делать. Поиск по импорту. Тока щас понимаю, что получилось из этого жесть. Но за-то завораживает )
     
  20. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Эээх, чуть-чуть промазал с ординалтейблом )