Всем привет. Я развиваю одну программу. Это дизассемблер. Пока я писал дизассемблер я придумал одну вещь. В общем я ещё развиваю функционал такой, можно встроить свои команды в середину кода, другие команды сместятся и указатели у этих команд тоже сместятся. Можно например взять готовую программу, выбрать функцию в этой программе и встроить свой код в начало этой функции. Увеличиться размер секции кода и создастся новый файл, в котором будет выполняться уже код. Я пишу под линукс. Пока что работаю с elf форматом. Но потом хочу добавить ещё и windows формат и java. Я хотел бы узнать, может у вас есть какие нибудь идеи насчёт софта, ну что можно добавить в дизассемблер? Вот снимок с экрана, на нём видно вывод сначала обычного кода, а потом изменённого, и эта программа работает также, как если бы её написали с нуля.
Релоки еще не забудь что надо пересчитывать. Если изменится размер секции-надо и ресурсы перепаковывать. В общем там немношько придется повозиться с PE форматом по крайней мере. Эльфов не знаю пока, не разбирал эльфов. В сущности "что можно добавить" - так это сделать аналог IDA Отслеживать неочевидные переходы. Что будет если я прыгну jmp eax где eax - середина текущей инструкции ? Как это дизассемблировать ? Все зависит от задачи. Добавить можно много чего, только желательно-бы знать конечную цель.
О я даже и не подумал что так код можно зашифровать. Но я уже придумал как это можно дизассемблировать. Я пока с pe не работал, там ресурсы тоже в секциях находятся? Если да, то не проблема. Хотя я не видел как используются ресурсы, но наверняка с помощью указателей на ресурс. Я также думал что в этой моей же программе будет генератор шеллкодов. То есть пишешь на асме код, и он генерирует для си шеллкод. Пока что в планах была реализация для intel и mips. Я изучаю исходники dnsmasq с версией где есть уязвимость. Так в инете написано. Мой роутер использует эту программу. Я хочу найти её в исходном коде, но пока не получается, неделю изучал, теперь понял где принимаются данные, теперь надо понять что в этом коде не так. Потом надо посмотреть в дизасме как выглядит код этой программы и найти где будет применятся шеллкод, посмотреть ( а блин, в дизасме же не доступен стек ), хотя может можно и без стека сделать. Такие трудные задачи. Но со временем думаю справлюсь.
Чо ? В учебных целях точно пригодится, а там глядишь пригодится чтобы нашлепать дизассемблер длин. А когда у тебя есть дизассемблер длин - можно красиво ставить хуки. А когда ты можешь красиво ставить хуки, раздвигать секции, генерить мусор и что-то ассемблировать - ты можешь написать как минимум неплохой упаковщик... с функцией виртуализации (кхм) + полезными авторскими дополнениями без которых пользователь жить не может и пошло оно поехало. Ну а если заняться запихиванием инструкций в граф, балансировкой дерева, отслеживанием скачек по коду, скриптовым языком и прочими вкусностями - тогда уже можно начинать наконец-то жить полноценной половой жизнью, выбрать себе красивый ник и начинать выебываться ================== С чего-то же надо начинать. Свой ламповый дизасм - неплохое начало.