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

Определить ссылки на память в динамике

Тема в разделе "WASM.BEGINNERS", создана пользователем vx1d, 11 ноя 2019.

  1. vx1d

    vx1d Member

    Публикаций:
    0
    Регистрация:
    13 дек 2016
    Сообщения:
    119
    есть ячейка памяти по известному адресу
    нужно определить где в коде есть ссылки на эту память в динамике, без дизассембера и отладчика, можно только дизассемблер длин инструкций
    есть ли годный способ?
     
  2. TermoSINteZ

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

    Публикаций:
    1
    Регистрация:
    11 июн 2004
    Сообщения:
    3.400
    Адрес:
    Russia
    ну не совсем прям без отладчика, но используя Hardware Break в вашем софте, можно поставить брейк на доступ по нужному адресу. Он сработает всегда .
    Есть и другие средства, например IPT технология у интела. но нужно иметь соответствующий процессор (6 -7 поколения не младше) (https://ionescu007.github.io/winipt/)
     
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    3.396
    проходи дизассеблером длин, на каждой следующей иструкции проверяй, является ли текущая инструкция той, которая адресует твою ячейку памяти... проще всего не возиться с байтами и не городить свичей, а взять полноценный дизассемблер... ты, используя полноценный дизассемблер, не сможешь с первого раза выделить все инструкции, которые могут взаимодействовать с ячейкой памяти, я почти в этом уверен... так что зря не перекручивай себе яйки...
     
  4. Indy_

    Indy_ Well-Known Member

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

    > в коде есть ссылки на эту память

    Это правильно называется адресная трансляция и выборка данных как более общее понятие. Адрес понятие сложное и зависит от ситуации, режима например или сегмента.. До понятия адреса используется понятие смещения. Это тот адрес" относительно нулевой базы сегмента, который кодируется самой инструкцией непосредственно и ты встречаешь его везде(тк в этом случае адрес = смещению). Вот что бы его выделить, нужно раскодировать инструкцию, многие её поля. Так что диза длин не достаточно.

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

    Какая вообще цель, тоесть какая задача, зачем искать адреса ?
    --- Сообщение объединено, 12 ноя 2019 ---
    Rel,

    Визоры рядом в теме ты перечислял на пальцах одной руки, они есчо и остались свободные :drinks:
    Что бы тс имел реальное представление про масштаб задачи, стоит сказать что на релизацию дий(локальный и лучший 86 визор) у меня ушло 3-4 года. Два на дебаг. При этом диз ядра обычно не закрывается. Вот примерно так vx1d, можешь прикинуть сколько времени займёт у тебя :scratch_one-s_head:
     
  5. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    70
    Раз уж тема такая зашла, спрошу.. Аналогичный вопрос, только про ядро, конкретно интересуют любые переходы к динамически выделяемой памяти (динамик пулу paged/nonpaged не важно). А может кто-то проводил уже подобный эксперимент и подскажет, все таки имеет место быть такому грязному поведению у системных/пользовательских дров или нет? Например, какой-нибудь патчгвард точно должен такими вещами промышлять.
     
  6. Indy_

    Indy_ Well-Known Member

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

    При вашем событии система выведет соответствующий статусный код и создаст дамп, частичный или полный, ты можешь с ним работать через виндебаг. Сейчас механизмы защиты растут быстрее чем грибы после дождя и любая не безопасная манипуляция с памятью сразу крэшнет. Начинать нужно с ознакомления с текущими используемыми технологиями. В целом же защита порядком надоела, она по факту бесполезна. Обычные игры не запустятся при включённой защите. Нужно понимать что у вендоров свои цели, если они не будут повышать уровень безопасности в технологиях, то они станут не нужны и отстанут от технологий. Непрерывно создаётся новый тех треш, может он бесполезен, но это факт и деньги для вендора.
     
    hiddy нравится это.
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    3.396
    не ну раз ТС не хочет даж дизассемблер к задаче прикручивать, а только дизасм длин, то более тяжеловесные дби фреймворки ему вряд ли подойдут...

    обладатель премии "лучший визор", выданной специальным коммитетом по визорам?
     
  8. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    807
    Адрес:
    подполье
    Меня вызвали сюда из соседней темы, в которой роботы запустили Инде под визором и пытаютца сломать полностью. А шо тут по теме я читал пару последних сообщений, визор не видел, только слышал шо под ним типо чота прозрачно работает или типа тово. Премию года пока рано. Нужны сканы логов и дампы пруфов!
     
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    3.396
    нужны сорсы на гитхабе и нормальная документация, которую лауреат премии за лучший визор кстати обещал запилить, но чет как то не видно доков до сих пор...
     
  10. Indy_

    Indy_ Well-Known Member

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

    > выданной специальным коммитетом

    Нет, тестами. Оно нэйтив и весьма стабильное. Остальные такого типа инструменты создавались не для практических задач, они толстые и не стабильные. К примеру как реализовать задачу тс через пин например ?

    Rel,

    > не видно доков до сих пор...

    А зачем оно нужно, если всё просто ?
     
  11. TermoSINteZ

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

    Публикаций:
    1
    Регистрация:
    11 июн 2004
    Сообщения:
    3.400
    Адрес:
    Russia
    ну для кого-то сложно.
    представьте что вы Эйнштейн и вы такой выступаете перед публикой .

    Альберт: "вот смотрите [math]e = mC^2[/math]..." (рисует на доске мелом)
    Аудитория : "Че как почему?"
    Альберт : "Зачем вам ? Все же просто."
    Занавес.
     
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    3.396
    мне не нужно, ТС не нужно, но зачем то Инде его всюду пихает...
     
  13. Indy_

    Indy_ Well-Known Member

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

    Речь шла про описание и какие то доки. Допустим нужно, но что именно описывать ?
    Интернал механизмы - зачем. Если апп крутится под визором, то надстройка(ловушки) пишутся исходя из общих соображений. Если например идёт выполнение загрузчика, то нельзя использовать его апи, так как будет деадлок, аналогично и с памятью. Пока поток не покинул внутрение механизмы некоторого обьекта, этот обьект не может быть использован. А остальное, как например индексировать адреса возврата, это уже проблемы ловушек.

    TermoSINteZ,

    Не совсем верно, тоесть публика должна в вашем примере уже знать что есть mc2. Эти инструменты нужны для эффективных решений, если по простому в отладчике не получается, то и это тоже не получится.
    --- Сообщение объединено, 13 ноя 2019 ---
    А ну и есчо обработка вся должна выполняться через авл деревья, иначе профайл сядет. Для такого не пригодны высокоуровневые яп. Но это всё мелкие тех детали и не тянет на какие то там доки.
     
  14. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    807
    Адрес:
    подполье
    Не, ну вот есть, допустим, ехе-фаел визора, я ему, предположительно, в командной строке передаю путь к фаелу программы, которая запускаеццо через нево, что случиццо далее? Как останавливать исполнение, где ловить логи, как дампить и прочее? Ничего же не понятно!
     
    Indy_ нравится это.
  15. Indy_

    Indy_ Well-Known Member

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

    Через кмд запускаются обычного типа визоры, типо sde(pin). Это очень толстая среда, которая что называется разворачивается в памяти целевого апп, перехватывает ядерные вызовы и запускает бинарную трансляцию. Эта фигня гибридная, код частично транслируется, частично эмулируется. И под всё это толстое дело простой модуль для обработки не напишешь.
    Дий работает не так. Это викс мотор, собран в виде модулей ради удобства отладки. Ты его загружаешь в апп(добавить в импорт или как то иначе, я предпочитаю системный инжект, это позволяет контролировать апп до запуска юзер оболочки). В результате происходят 4-ре события(трап, те ловушка после исполнения инструкции, ядерный вызов, инит и сервисный вызов). Каждый вызов оформлен в виде обратного вызова, те колбек. Если нужно как в данной задаче найти выборку, то достаточно из ловушки посмотреть на транслированный адрес. Тип выборки возвращает хороший диз(используется ксед IA вендора), её размер и прочие детали так же есть.

    Исполнение может быть отпущено остановкой визора. И перезапущено через его шлюз.

    Это всё не нужно описывать, это описано в примерах.
    --- Сообщение объединено, 13 ноя 2019 ---
    Кстате очень давно прорабатывалась идея рекурсивного запуска. Как оказалось это вообще безумие, практически нет ни одного семпла или задачи где такое нужно. Это существенно бы усложнило реализацию.

    TrashGen,

    > Ничего же не понятно!

    Потому что Вы не смотрели примеры использования, не следили за темой по дий. Что довольно странно.
    --- Сообщение объединено, 13 ноя 2019 ---
    TermoSINteZ,

    Ты модер, а модер должен понимать суть. Вот тут https://exelab.ru/f/index.php?action=vthread&forum=5&topic=26119&page=0#24 понятно описана суть. Rel с гитхаб и паблик конечно же будет не согласен, но это всё из виксов.
     
  16. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    807
    Адрес:
    подполье
    А есть кроме вас хоть кто-то, кто следил за темой и смотрел примеры? Наверное, сётоке, шобы будоражить общественность, лучше пилить описание (в формате doc (и шобы побольше текста с лулзаме)) куда жмакать, как лодить дий (припилить к нему такжэ гуй (ака еbало) с батонами), описанее каждова модуля в дий входящево. В текстовом формате с картинками и профессором Фортраном!
    Иначе всем так и будет как всегда.
     
  17. TermoSINteZ

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

    Публикаций:
    1
    Регистрация:
    11 июн 2004
    Сообщения:
    3.400
    Адрес:
    Russia
    Indy_, Я не критикую. И не сомневаюсь в твоих трудах. Просто в данный момент времени некогда изучать. ) мозг другим пока загружен . Ну например прочитав ваше сообщение (а я к примеру не в теме) для меня не понятно, что такое Анклав и еще пару терминов. То есть мне нужно вначале понять некую базу выражений устоявшихся. А потому уже изучать посты.
     
  18. Indy_

    Indy_ Well-Known Member

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

    > для меня не понятно, что такое Анклав

    Не понимаю как такое может быть. Публикация размещается только после одобрения модерами. Вы что не читали, там же всё описано предельно просто как это вообще возможно :sad:
    --- Сообщение объединено, 13 ноя 2019 ---
    TrashGen,

    > куда жмакать

    Поэтому там и нет гуя, его можно за пол часа написать и подключить. У меня к нему отвращение после многих лет проведённых тут и на кл. всем только и нужно готовое с кнопками. Они не нужны, достаточно дебаг вывода. В сложных случаях когда нельзя получить отладочные сообщения, то можно лог выгрузить в файл. Но там есть небольшая трабла, а именно если сразу флешить буфер записи, то будет сервисное ожидание - всё очень сильно тормозит.
    --- Сообщение объединено, 13 ноя 2019 ---
    TermoSINteZ,

    > что такое Анклав

    Посмотрите это https://yadi.sk/i/HCoHazi4JkJ_kg
    - два анклава, кодовый и импорта.
     
  19. TermoSINteZ

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

    Публикаций:
    1
    Регистрация:
    11 июн 2004
    Сообщения:
    3.400
    Адрес:
    Russia
    Indy_, ну что такое секции в PE я в курсе. Просто ктож знал что вы это называется Анклавом.
    Ну не суть - я просто привел пример, почему людям может быть непонятно .
    ну не я один модер. Видимо другой модератор размещал и одобрял.
     
  20. Indy_

    Indy_ Well-Known Member

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

    > что такое секции в PE я в курсе. Просто ктож знал что вы это называется Анклавом.

    Затёртая нулями, в которой остаётся адресация и апп без кода и импорта продолжает работать ?

    Вас ничем не удивишь походу.
    --- Сообщение объединено, 13 ноя 2019 ---
    TermoSINteZ,

    Видимо ты слишком устал, если столь не внимательно даже видосы смотришь.
    --- Сообщение объединено, 13 ноя 2019 ---
    Кстате так просто между делом сейчас у меня бан на кл на день, я хз за что но по традиции что то удалится. Остаётся живая лишь эта ссылка, не на долго, всё остальное видео я удаляю.
    --- Сообщение объединено, 13 ноя 2019 ---
    TermoSINteZ,

    По мойму вы просто устали, если не можете материал простой воспринимать адекватно. Я вот например если чувствую что устал, то ничего не делаю и даже не отвечаю. У меня есть задача по бин трансляции, но нет нужного состояния после работы для разработки, поэтому я лучше пивка попью, чем через силу что то делать, потом придётся всё с нуля делать и есчо разбирать свои ошибки. А вам так просто совет - про публикации так не пишите, может быть весьма обидно.
    --- Сообщение объединено, 13 ноя 2019 ---
    А куда ваш пост пропал, только ведь был ?