Овощи.

Тема в разделе "WASM.HEAP", создана пользователем Clerk, 9 окт 2010.

  1. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Уважаемый, только вот хамить не зачем - уважайте собеседника.

    Не нравятся предложенные методы, напишите - чем не устраивают. Тот же метод, с использованием стековых или кодовых сигнатур? Да, это частные методы - этим не устраивают? Тогда разбирайте целевую функцию на графы и смотрите наличие адресов возврата из вызовов процедур в стеке. Или это тоже не устраивает?
     
  2. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Утро. Песочница. Внутри уверенно расположился старшеклассник, вокруг него по периметру лежат
    овощи, преимущественно клубни картофеля. Размахивая элитным листингом, он поочередно обращается
    к каждому, выкрикивая разные дерзкие фразы: "ваши способы унылы", "семпл в студию!!", ... продолжает
    кричать, но проезжающий мимо фирменный трактор заглушает остальное. Воцарилась зловещая тишина.
    Картофель был явно не готов к происходящей беседе и старшеклассник, понимая это, ликует!!
    От удовольствия его лицо расплывается в улыбке, осознавая свою гениальность, начинает разводить
    руками по песку. Нащупывает чуть засохший кусок дерьма, незамедлительно бросает (определяющий момент).

    Камера начинает медленно вращаться, на фоне играет < Стекловата, "Новый год" >, срывается снег.
    Главный герой быстро собирает клубни картофеля, заворачивает в элитный листинг и нелепо пытается
    вылезти из старой дырявой песочницы (не похучен даже ZwOpenProcess). Занавес.

    fixed!
     
  3. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    deLight Аплодисменты!
     
  4. fapfap

    fapfap New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    13
    deLight
    ухаха, грац ))
     
  5. ziral2088

    ziral2088 New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2009
    Сообщения:
    283
    deLight
    грац. Задорнов реально отдыхает. У вас талант. ))
     
  6. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Аааа, надо было сразу послушать музон! deLight - это что-то))
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    deLight
    Хех, всё понятно, тока кто тут трактор..:)
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    7mm
    Уважаю собеседника. Вы на этом форуме мало отвечаете на вопросы, поэтому данный топик не вам адресован, а тем кто предлагает извращённые решения тривиальных задач, как частный случай сводя всё к APC и патчам. Таких задач %30 тут.
     
  9. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Clerk
    В этом плане концовка открыта, фантазируйте.

    Скрытый подтекст? Трактор это deLight?
    Вы не по-детски коварны я посмотрю =)
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
  11. IceCrashLdr

    IceCrashLdr New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    193
    Clerk
    Ваша идей действительно интерестная, но вот только все будет зависеть от конкретное реализация функций
    А ведь код может быть сильно разным, хоть в обычных кодесах может и прокатит, не проверял.

    Универсального подхода НЕТ. конечно если кто то не прикрутит МЕГА эмуль...

    П.С.
    Стек могут убить, а потом воскресить , так что идей с подменной адресов возврата и тем более поиском каких то сигнатур ....

    П.С. П.С.
    Clerk
    Как на счет мат части?
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    IceCrashLdr
    Есть и оно работает.

    На счёт матчасти не понятно что описывать, всё просто:
    Код (Text):
    1. o Получение управления при понижении SFN из калбэка.
    2.  
    3. ; Routine() -> ... -> Notify().
    4.  
    5. Initialize:
    6. Graph = CreateGraph(@Routine, NL = 1)
    7.  
    8. Notify:
    9.     Frame:PSTACK_FRAME
    10.     Frame = rEbp
    11.     Do
    12.        if CheckIpBelongToGraph(Graph, Frame.Ip)
    13.        Tls = AllocateTls()
    14.        Tls.Ip = Frame.Ip
    15.        Frame.Ip = @2ndDispatch()
    16.        End
    17.        endif
    18.        Frame = Frame.Next
    19.     Loop END_OF_CHAIN
    20.  
    21. 2ndDispatch:
    22.     Payload()
    23.     Ip = Tls.Ip
    24.     FreeTls(Tls)
    25.     Jmp Ip
     
  13. IceCrashLdr

    IceCrashLdr New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    193
    Mr Clerk не совсем понимаю ваш кодес.
    Вы пытаетесь построить граф от Routine, что бы вычислить кадры стека?
    Это идея, и будет работать на всем релизном коде от майкрософта, но не тогда, когда код будет смещен (SEH, декрипт + крипт )...
    А если вы про анализ стека так я же почеркиваю, что при вызове функции оригинальной истории стека может и не быть, и появтся она будет только после выхода из функции, но снова таки от майкрософта такого кодеса не будет, так что все нормально .. :)
     
  14. Clerk

    Clerk Забанен

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

    IceCrashLdr New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    193
    Если для оси то, я же писал.
    Но тогда можно просто подмена адресов возврата ...
     
  16. RX200

    RX200 New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2010
    Сообщения:
    86
    А если функции не имеют адреса возврата? Они стандартизированы?
    или может быть такая структура >А>B>C>D>C>B>B>F>G>F>B>A>
    Или если эти функции меняют режим работы процессора, в реальный а потом обратно. например >A>B>реальный>C>обратно>И вот тут мы в вашей Y>Реальный>C>обратно>B>A> и всё нифига ваш код не сработает)))
    Теоретически прикинул)

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

    Функция это абстракция, и если конкретную задачу решать то можно найти оригинальный и универсальный способ решения, а при абстрактной задачи я полностью согласен с IceCrashLdr универсального решения нет.

    Ваш код не гибкий, если есть конкретная задача под неё можно написать конкретный код решения, но если есть конкретный код решения под него можно написать конкретную задачу которую он не сможет решить.

    А вообще Clerk вы хитрый человек, придумали правила игры где все вокруг овощи, и давай с нами играть по ним - сначала написали, очень абстрактную задачу, и как кто чуть под капатся пытался, сразу всё под одну гребёнку сводили, заранее вами спланированную, и коварно просчитанную)) Не товарищ, давайте играть по, с самого начала заданным правилам, и тогда посмотрим кто тут овощ)) и не мухлевать в нашей песочнице))
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    RX200
    Так всё по правилам. Для осевого кода работает чудесно. В #47 примеры реальных задач.
     
  18. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    IceCrashLdr
    Задача. Вот модель вызова GetProcAddress():
    Код (Text):
    1. GetProcAddress
    2.    LdrGetProcedureAddress
    3.       LdrpGetProcedureAddress
    4.          LdrpSnapThunk
    5.          if !(LDR_DATA_TABLE_ENTRY.Flags & LDR_ENTRY_PROCESSED)
    6.             LdrpRunInitializeRoutines
    7.                LdrpCallInitRoutine
    8.                   InitRoutine()
    9.          endif
    Вот модель вызова CreateProcessA():
    Код (Text):
    1. CreateProcessA
    2.    CreateProcessInternalA
    3.       CreateProcessInternalW
    4.          GetProcAddress("CreateProcessAsUserSecure")
    Таким образом сбросив флажёк в лдр мы получим вызов "DllMain" модуля при создании процесса. Необходимо создать процесс с остановленным потоком, выполнить некоторые действия(инжект и пр.). Как будем решать ?
     
  19. IceCrashLdr

    IceCrashLdr New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    193
    Clerk
    Еще одна задачка? :) . Это не интересная задача, в принципе как и предыдущая ...
    Кажется рихтер писал ответ(Где то, кто то, что то, постил), так что не буду повторятся ...
     
  20. Clerk

    Clerk Забанен

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