Сейчас на форуме: jinoweb (+5 невидимых)

 eXeL@B —› Программирование —› Visor2.
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение


Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

Создано: 15 июля 2018 02:22
· Личное сообщение · #1

Увидел свет в теме --> Link <--

Задача решена, осталось просто брать и кодить. Опишу механизм.

Оригинальный код не изменяется. Это исключает необходимость подмены данных(трек R-df).

В RWX массив накапливаются блоки кода, это части, в которых все инструкции линейные и оканчиваются ветвлением(call/ret/jcc). При записи в этот буфер линейный блок копируется и в конце дописывается jmp near rel на стаб, который выполняет эмуляцию оригинального ветвления.

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

- Оригинальный адрес блока.
- Адрес блока в буфере RWX.
- Тип ветвления.
- Битовую карту переменного размера.
- Ссылку(2) на следующий описатель.

AVL позволяет выполнить быструю трансляцию адреса на буфер. Сам визор цикл следующий.

Блок декодируется и копируется в буфер. Ветвление эмулируется на основе описателя, выбирается ссылка на следующий блок и на него отдаётся управление. После исполнения блока управление получает стаб, выбирает/строит следующий блок и цикл повторяется. Тоесть выполняется блок в буфере - jmp stub - эмуляция ветвления - jmp to next block. Трансляция(поиск описателя блока) происходит на этапе построения новых блоков и при возврате по ret/imp_call_indir. Для рет используем кэширование - сохраняем описатель адреса возврата.

Конкретно по реализации. Системные AVL. Добавляем описатель в дерево RtlInsertElementGenericTableAvl().

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

Тогда процедура вставки блока будет следующая.

1. Если указатель в блок, то проверяем смещение указателя от начала исходного в битовой карте. В ней помечены начала всех инструкций в блоке. Если маркер установлен, то блок сходится на инструкции и можно выполнить прямое ветвление.
2. Если маркер сброшен, то происходит наложение инструкций(ветвление не на начало). Раскодируем длину и класс инструкции и повторяем цикл, пока не произойдёт схождение. Если произойдёт выход за пределы блока, то строим новый и добавляем описатель в дерево.
3. Если описателя нет, поиск вернёт ближайший следующий. Выполняем п2.

После исполнения блока управление получает стаб. Он выгружает контекст, выбирает тип ветвления из описателя и его эмулирует, получая указатель на адрес ветвления. Если блок с ветвью уже описан, ссылка на него получается из ссылки на следующий блок из описателя. Иначе блок строится в конец буфера. Дерево в таком виде служит для быстрой трансляции адреса на буфер, связывания блоков и хранит инфу про ветвление.

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

-----
vx


| Сообщение посчитали полезным: 8-9-13-80


Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

Создано: 22 июля 2018 22:31 · Поправил: difexacaw
· Личное сообщение · #2

Bronco

Через гпв нельзя взять конкретный код, который можно прикрутить как модуль, к примеру тот же антидебаг. Придётся пилить всё заново, есчо и в полной изоляции не только от апп, но и от ос. Так что это не пригодно для обычных задач.

-----
vx




Ранг: 35.9 (посетитель), 94thx
Активность: 0.050.01
Статус: Участник

Создано: 22 июля 2018 22:34
· Личное сообщение · #3

difexacaw пишет:
Я приводил пример выше

Скачать то где можно?
А давайте я Вам сэмпл дам? Заодно и опробуете. гы-гы
Bronco пишет:
плюсанул, ибо тролинг тонкий

Спасибо. На это и был расчет. И, глядишь, оживилась тема.




Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

Создано: 22 июля 2018 22:36
· Личное сообщение · #4

hypn0

Мне сегодня на васме написали про какую то распаковку, так я сюда в запросы отправил

-----
vx




Ранг: 35.9 (посетитель), 94thx
Активность: 0.050.01
Статус: Участник

Создано: 22 июля 2018 22:39
· Личное сообщение · #5

difexacaw Распаковка вообще не интересует, так как всё в отладчике делается. Умеющими людьми.
Ну конечно не мной. Я - дурень, мало что умею. гы-гы



Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 22 июля 2018 22:42 · Поправил: shellstorm
· Личное сообщение · #6

difexacaw пишет: там сразу как помню всё обосрали, так как оно на асме написано

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

напиши реализацию на си, для начала хотя бы просто трейсер x86\x64 и получишь живой фидбэк, причем от практиков, кто использует инструменты по назначению и уже по фидбэкам выстроится архитектура, после можно уже выдавливать скорость, допустим в версии "мотор 2.0", только делать уже будешь отталкиваясь от реального использования и требований общественности. иначе очередной проект в стол и после говорить, что кругом педерасты, а ты непонятый гений. это так не работает.

| Сообщение посчитали полезным: Gideon Vi


Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 22 июля 2018 22:42
· Личное сообщение · #7

difexacaw пишет:
Через гпв нельзя взять конкретный код, который можно прикрутить как модуль, к примеру тот же антидебаг.

почему же нельзя, маячь по пиду и делай что хошь, ну почти что хошь, сиськи на полном контроле, хелпер нужен.

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 35.9 (посетитель), 94thx
Активность: 0.050.01
Статус: Участник

Создано: 22 июля 2018 22:52
· Личное сообщение · #8

difexacaw
Я понял. На Github это надо выложить. Возможно там найдутся идиоты любители, кто захочет допиливать.

Добавлено спустя 2 минуты
Тем временем уже вторая страница. Акция "засрём exelab" продолжается.



Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 июля 2018 22:59
· Личное сообщение · #9

difexacaw

Делай что делаешь, никого не слушай. Видно, что реальных умений больше чем у большинства балаболов.

Через пару лет если не бросишь, твоё решение может стать одним из самых важных в этом области.




Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

Создано: 22 июля 2018 23:08
· Личное сообщение · #10

shellstorm

> напиши реализацию на си, для начала хотя бы просто трейсер x86\x64

Меня не привлекает мягко говоря сишка, так как её выхлоп не контролируется. Особенно где обработка на уровне инструкций и всё такое. Можно сделать интерфейсы на си, а сам мотор отдельно 86-64, иначе не получится.

Добавлено спустя 2 минуты
Bronco

> сиськи на полном контроле, хелпер нужен.

Гипер в приложение не прицепишь что бы что то обработать. Про остальное я не понял.

-----
vx




Ранг: 35.9 (посетитель), 94thx
Активность: 0.050.01
Статус: Участник

Создано: 22 июля 2018 23:10
· Личное сообщение · #11

IEatDead
Отличный троллинг.
IEatDead пишет:
Через пару лет

Дай то Бог. Тут у всех сомнения адские.

А вот если без шуток, я тоже очень хочу увидеть результат. Если будет замечательный инструмент, то мы памятник поставим автору!

Но будет ли инструмент? В какие сроки?




Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

Создано: 22 июля 2018 23:11
· Личное сообщение · #12

hypn0

На прошлую версию пара лет ушло

-----
vx




Ранг: 35.9 (посетитель), 94thx
Активность: 0.050.01
Статус: Участник

Создано: 22 июля 2018 23:14
· Личное сообщение · #13

difexacaw пишет:
На прошлую версию пара лет ушло

Плохо. Очень плохо.
За это время я переломаю кучу софта. И Ваш визор мне никак не пригодится.




Ранг: 77.2 (постоянный), 74thx
Активность: 0.190.15
Статус: Участник

Создано: 22 июля 2018 23:15
· Личное сообщение · #14

КПД от треда?




Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

Создано: 22 июля 2018 23:18
· Личное сообщение · #15

sefkrd

Идею дать, может кто решиться есчо реализовать.

-----
vx





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 22 июля 2018 23:18
· Личное сообщение · #16

difexacaw пишет:
Про остальное я не понял.

так и не требуется, просто прими как факт,
читэнджин на базе гв(так утверждают!), какой уровень контроля ещё нужен?

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 22 июля 2018 23:19 · Поправил: shellstorm
· Личное сообщение · #17

difexacaw пишет: Можно сделать интерфейсы на си, а сам мотор отдельно 86-64, иначе не получится.

и зачем кому то нужен мотор на ассемблере? если мне нужно что-то добавить, зачем мне дергать автора, если он вообще не забил, я просто возьму и добавлю сам необходимый функционал, тем более он может быть специфическим и нужен только мне, но ассемблерные исходники никто в здравом уме не будет дописывать, тем более когда есть реализации на c\c++. все просто, ты пишешь на си или любом другом адекватном языке или пишешь для себя, в последнем случае нет смысла искать фидбэк на форумах и тем более форсить мотор.
элементарный пример, есть отладчик x64 на ассемблере и есть x64 отладчик на c\c++, первый появился намного раньше, но кому он нужен, им наверное даже автор не пользуется, второй кто только не допиливает, он понятен и читаем, даже если автор завтра умрет, проект продолжит развиваться и можно допиливать самостоятельно. цена времени.

используется и многими, просто зачем об этом кричать, какой то инструментальный эксгибиоционизм.)




Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

Создано: 22 июля 2018 23:19
· Личное сообщение · #18

Bronco

Так почему же тогда ваш хвалёный гпв никогда тут не используется ?

-----
vx




Ранг: 35.9 (посетитель), 94thx
Активность: 0.050.01
Статус: Участник

Создано: 22 июля 2018 23:41
· Личное сообщение · #19

difexacaw Вам выше написали. Всё правильно делаете, но надо бы на Си писать.
А я бы, на Вашем месте, вообще подумал стоит ли писать это? Возможно вообще не стоит. Даже если идея отличная.
Займитесь чем-нибудь более полезным.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 23 июля 2018 07:48
· Личное сообщение · #20

Гипервизор прекрасно работает например в распаковке. И да, можно сделать и в отрыве от ОС. А зачем? При желании это всё делается без отрывов, можно вызывать из него драйвер на ринг0, а оттуда и с ринг3 общаться. Так что всё можно связать, были бы руки и голова.




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 23 июля 2018 08:20
· Личное сообщение · #21

shellstorm пишет:
очередной проект в стол и после говорить, что кругом педерасты, а ты непонятый гений. это так не работает


в случае Инде это годами так работает.




Ранг: 271.4 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 23 июля 2018 11:40 · Поправил: f13nd
· Личное сообщение · #22

shellstorm пишет:
во первых ты выкатил на паблик ворох каких-то сомнительных исходников с предложением остальное писать самим

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

-----
2 оттенка серого




Ранг: 35.9 (посетитель), 94thx
Активность: 0.050.01
Статус: Участник

Создано: 23 июля 2018 11:49
· Личное сообщение · #23

Archer пишет:
Гипервизор прекрасно работает например в распаковке

Полностью согласен, как и с тем, что его можно много для чего использовать. Главное чтоб инструмент существовал "физически".
В любом случае на данный момент все задачи (распаковка, анализ, взлом) решены. Какие-то с бОльшим уровнем автоматизма, какие-то с меньшим. Следовательно, если пилить какой-то инструмент, то он должен упрощать решение задачи. А тут мы видим, что человек пытается в одиночку, да еще "в гамаке и стоя" (асм) реализовать очень сложную тулзу. Смысл этих действий мне не понятен. Возможно для него это just for fun, но тогда зачем критиковать то, что делают другие? К примеру тот же XVolkolak.
Причем он сам же говорит о том, что не знает как решить некоторые проблемы. В связи с этим, его визор на данный момент выглядит как философский камень, который он пытается получить и убеждает других, что это правильный путь. А может не правильный?
В теории то всё красиво и интересно. Я уже говорил, что если он реализует свои задумки, то ему можно будет памятник поставить. Причем я очень хочу, чтоб у него всё получилось. Только пока это всё реально выглядит как страдания средневековых алхимиков.



Ранг: 44.8 (посетитель), 19thx
Активность: 0.040
Статус: Участник

Создано: 23 июля 2018 14:34
· Личное сообщение · #24

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

не совсем так
в какие-то года на васме, он генерил всякий разный интересный контент и его слушали и учились тоже
но IT стремительно развивается, а индий застыл на месте, хотя тоже немного развивается ( ибо раньше слова типа dbi вызывали у него лютый батхерт )
просто у него закостенелое мышление и неспособность использовать и абсорбировать новые знания
а новые знания в такой быстро развивающейся области как IT плодятся с невообразимой скоростью
поэтому индий и не может вырваться из while (1) цикла, где на pentium 4 индевском процессоре гонятся в бесконечном цикле его ЧСВ (вы все овощи и школота, а я елита ), желание быть умнее всех зная только асм и прочий устаревший шлак и современные задачи которые он не может осилить ( поиск уязвимостей )
И эта неспособность осилить задачи + ЧСВ ( я то могу, это вы все говно и нубы ) + устаревшие технологии которыми он владеет ( gpe визоры и прочее асм говно ) + вкусные норкотеки просто вырубает встроенный нейроиндепроцессор в triple fault. Отсюда и ответы типа я все придумал, но реализовать пока не могу(много других дел и вкусного пива) - приходите позже.




Ранг: 271.4 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 23 июля 2018 14:51 · Поправил: f13nd
· Личное сообщение · #25

SegFault пишет:
я то могу, это вы все говно и нубы

difexacaw пишет:
Я забыл когда последний раз открывал отладчик - вы не сможете на должном уровне листаль код как я, на это нужны десятилетия.

Ну есть мальца Но мне показалось, что он пытается ну хоть кого-нибудь заинтересовать этим, навязать, чтоб сделали за него. Не забывая конечно лицом поторговать при этом
Так что:
IEatDead пишет:
Делай что делаешь, никого не слушай. Видно, что реальных умений больше чем у большинства балаболов.

надеюсь речь шла не о балабольстве

-----
2 оттенка серого




Ранг: 44.8 (посетитель), 19thx
Активность: 0.040
Статус: Участник

Создано: 23 июля 2018 16:34
· Личное сообщение · #26

f13nd
вся беда в том что от индея раньше проскакивали идейки интересные( часто скарженные у ионеску/zomбы или pg или свои ), но сейчас эта каша из собственных выдуманных терминов и неспособности дать конечный продукт коммунити приводит к тому, что автор балабол как раз. И самое страшное, что вот дби он запилит. Но что выберет конечный пользователь, его не обкатанное анстаб нечто, или интеловский пин/DynamoRIO скажем? Помоему выбор очевиден.




Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

Создано: 23 июля 2018 16:45
· Личное сообщение · #27

SegFault пишет:
только асм и прочий устаревший шлак

С каких пор асм приписали к устаревшему шлаку?
SegFault пишет:
прочее асм говно

Если для вас асм сложен, это не значит, что он говно.
P.S. Обосрать можно все. Было бы желание

| Сообщение посчитали полезным: hypn0


Ранг: 271.4 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 23 июля 2018 16:50
· Личное сообщение · #28

BlackCode пишет:
С каких пор асм приписали к устаревшему шлаку?

Наверное когда майкрософт от него официально открестился

-----
2 оттенка серого





Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

Создано: 23 июля 2018 16:56
· Личное сообщение · #29

f13nd пишет:
Наверное когда майкрософт от него официально открестился

Но тем не менее, Macro Assembler (ml.exe) входит в состав VC по сей день.
Где же маздай отказался от поддержки?



Ранг: 44.8 (посетитель), 19thx
Активность: 0.040
Статус: Участник

Создано: 23 июля 2018 17:07
· Личное сообщение · #30

BlackCode пишет:
SegFault пишет:
только асм и прочий устаревший шлак
С каких пор асм приписали к устаревшему шлаку?
SegFault пишет:
прочее асм говно
Если для вас асм сложен, это не значит, что он говно.
P.S. Обосрать можно все. Было бы желание

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




Ранг: 271.4 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 23 июля 2018 17:16
· Личное сообщение · #31

SegFault пишет:
а для большинства это даже не средство

Профессиональный инструмент в любой области обычно используется немногими, но от этого он не становится "шлаком". В принципе понятно почему большинство предпочитают не ссать против ветра и выбирают известно_что вместо асма, но выражаясь словами Кирпича "когда я бросаю собаке кость, мне не интересно нравится ли она собаке". Когда и если этот самый визор окажется неповторимым шедевром, вопрос о языке будет второстепенным.

-----
2 оттенка серого



<< . 1 . 2 . 3 . >>
 eXeL@B —› Программирование —› Visor2.
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати