Привет! Подскажите более-менее полные реализации, все равно на каком языке программирования. На входе бинарный x86 код, на выходе тоже бинарный код Понятно, что вызовы API и тд заморфить сложно, некоторые условные переходы тоже. И вообще какой должен быть нормальный морфер? Граф вызовов наверное надо стоить? Есть такие реализации ? Прежде чем делать свой - хотелось бы ознакомиться с чужими наработками.
Это вряд ли технически возможно в полном объеме. Можно канеш map-файл линкера заюзать или какие-то умные дизассемблеры, но с этим или без этого все равно в общем случае сложно отличить код от данных. Куда проще реализовать морфер на базе исходных кодов или какого-то промежуточного представления типа LLVM IR или GIMPLE, возможно, что на уровне объектных файлов можно что-то подумать, но нужна хорошая библиотека, которая может их разбирать, модифицировать и сохранять для линкера (возможно radare2 подойдет, или что-то такое). --- Сообщение объединено, 28 янв 2021 --- Ну VMProtect, но с открытыми исходными кодами я не припоминаю таких, если знает кто, то напишите.
Общие случаи - это удел теоретиков. Для практики достаточно частных случаев, выдаваемых конкретными компилями, а там все нормально отличается. Ну и элемент интерактивности в инструмент добавить, если понадобится морфить что-то специфическое, собираемое вручную из опкодов.
Ну ты сам то практик? Запилил уже что-то такое для частных случаев? Может на гитхабе уже лежит и можно на это посмотреть?
Rel, А то. Не морферы, правда, а декомпили, но отделять код от данных там тоже нужно. Буду ли я тебе что-то доказывать? Хмм, дай подумать...
gato.negro, В первую очередь тебе нужно будет дизассемблерное ядро. Подавляющее число "виксеров" такое не осилят, поэтому все, что они могут выдать, это скрипты на петоне для иды/гидры/радара/ллвм. Вот и чекай соответствующие репозитории/гитхабы.
Ну напиши морфер бинарей тогда, какая проблема, все данные от кода ты отличишь, потом продашь свои наработки какому-нить вмпротекту, им будет очень интересно.
Rel, Когда он мне понадобится, тогда и напишу, не сомневайся. q2e74, Если ты собираешься морфить какой-то код, то какой смысл юзать в нем антидизасм-техники? Добавляй их генерацию в сам морфер.
Каждый выживает как хочет. Но между тем у меня есть 2 технические статьи здесь, да и нубасам я довольно часто помогаю. Вот чего я не делаю, так это не бью себя тапком в грудь за заслуги, которые никто не видел. Ну в этом мы с тобой похожи. Но не уверен кем лучше быть, недееспособным гавном или спецом без мотивации. --- Сообщение объединено, 28 янв 2021 --- Indy_, скажи честно, тебе просто обидно, что я раньше тебя сказал, что задача отличить код от данных не имеет решения в общем случае, да?
Не видел ни разу для бинарников какого-либо морфера. Морфят сорцы, исходный код. Для бинарников есть протекторы и подобное. Нет, ну может есть какие-то гении, что могут "пересобрать" ехе, но мне личное такое неизвестно. У зомбы был вирус мистфаль или как там его, с подобной идеей. даже если и отличать, толку то.
Ну как минимум факт, что в оупен сорсе ничего нормального в этой теме нет, о чем то говорит. Собранный исполняемый файл уже потерял в процессе компиляции и линковки всю ценную информацию о коде, которую можно было бы использовать для морфа. В этом сложность. Ну или возможно просто все кругом "такое не осилят, поэтому все, что они могут выдать, это скрипты на петоне для иды/гидры/радара/ллвм", и это звучит так по спецовому, прям как будто у нас теперь два спеца на форуме образовалось.
Это какую он там информацию потерял кроме идентификаторов? --- Сообщение объединено, 29 янв 2021 --- О том, что все "специалисты" сидят и дружно ждут, когда на гитхабе появится "хорошая библиотека, которая может их разбирать, модифицировать и сохранять для линкера"?
Принцип (не совсем то, что пишет ТС) https://vxug.fakedoma.in/archive/VxHeaven/lib/aek03.html см. Pogue. Это будет морф расшифровщика. И еще понадобится морф средств работы с софтверным анклавом https://wasm.in/blogs/softvernye-anklavy.548/ чтоб из него исполняемый начальный бинарник был защищен.