eXeL@B —› Программирование —› АнтиОбфускатор |
<< . 1 . 2 . 3 . 4 . >> |
Посл.ответ | Сообщение |
|
Создано: 04 декабря 2008 18:02 · Поправил: Модератор · Личное сообщение · #1 Какие есть методы по борьбе с обфускацией ? Цель написать анализатор заменяющий 10 обфусцированных команд в одну настоящую. Для этого наверное нужно делить по блокам , а потом уже в них искать смысл и изменения. Бывает что между командами лежит просто мусор , который даже не используется =) Поэтому пока что эту часть я хочу просто опустить .. и отследить одну команду выполненую 10 или более команд без изменения смысла той самой одной. У кого нить есть информация с РАН фаха Кибернетики ? Там професора пишут ух какие тексты. ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 28 декабря 2008 22:21 · Поправил: progopis · Личное сообщение · #2 |
|
Создано: 28 декабря 2008 22:26 · Личное сообщение · #3 Собралось! Сделал жёстко " gcc -g -o ${PROG} y.tab.c list.c libfl.a" в файле makefile Только эта дрянь вылетает... aeae_28.12.2008_CRACKLAB.rU.tgz - asm.exe |
|
Создано: 28 декабря 2008 23:33 · Личное сообщение · #4 |
|
Создано: 28 декабря 2008 23:38 · Личное сообщение · #5 |
|
Создано: 29 декабря 2008 00:38 · Личное сообщение · #6 |
|
Создано: 29 декабря 2008 00:51 · Личное сообщение · #7 Как вы понимаете , я хочу портировать код на асм синтаксис. Судя по коду , то это возможно выполнить. Но раз такие сложности со сборкой и у автора вроде все работало. То стоит расмотреть возможно ли это вообще .... хотелось бы это за основу взять для разработки другого кода. Поэтому вот так .. progopis я тоже гляну , если что отпишись ПЛЗ. ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 30 декабря 2008 01:07 · Личное сообщение · #8 |
|
Создано: 01 января 2009 19:40 · Личное сообщение · #9 Пока ничего не вышло. Да и току от этого примера. Затрат процессорного времени слишком много, потому мегабайты кода (а мир похоже идёт именно к этому) он будет обрабатывать часы - недели - месяцы. Поэтому я пока отбросил попытку запустить этот пример. Этот пример может помочь при дизассемблировании небольших и специфически сгенерированных участков мусорного кода. Как я представляю задачу? Я не спец в данном вопросе, а лишь попытаюсь изложить свои мысли. Надо переводить декодированную инструкцию (в текст само-собой, - этот код я взял из GNU gdb) и одновременно его можно: 1. виртуально выполнять, написать для этого свой код, что довольно дорого по времени. 2. перевести в что-то наподобии структуры RTL-языка и воспользоваться сгенерированной какой-нибудь утилитой (как это делается при сборке GCC или в приведённом выше примере) код обработки. В сущности это есть п.1, только меньше писанины своими руками. Готовых решений в GCC я пока не обнаружил. Там требуется несколько обратная задача. Ещё, надо фиксировать изменения в памяти процесса. Выполнять этот код можно, например, до: 1. перехода в другой модуль 2 какому-то установленному пределу изменения в памяти процесса. 3. до установленного количества выполненных инструкций 4. до лимита памяти машины (само-собой) 5. если повезёт, - до обнаружения идентичного состояния памяти и регистров (возможно - с некоторыми допусками в разнице). Это тот случай когда мусорный код написан слишком просто. Потом можно сбрасывать дерево структур RTL. По возможности оставить историю записи в память для повторного использования при дальнейшем анализе. Еще можно при анализе инструкций проверять чтение кода дальнейших инструкций (предположительно) и его сравнения (на предмет установления там бряка дебагером). Так как само понятие секции кода в нынешних программах весьма условное, то задача эта - не простая. Информация к размышлеию, - кое-что о peehole оптимизации theory.stanford.edu/~sbansal/pubs/asplos06.pdf |
|
Создано: 02 января 2009 04:36 · Личное сообщение · #10 Где-то тут на крэклабе я видел такое имя как QEMU, кажется. Это виртуальная машинка. Описание тут: bellard.org/qemu/kqemu-tech.html Так вот имеются исходники, правда нашел пока только файлы поштучно, тут: svn.savannah.gnu.org/viewvc/tags/release_0_9_1/?root=qemu Пару файлов скачал, кое-что из GDB один к одному, а заголовки показывают - что там есть всё что надо. Так что, кому нечего делать - можно заняться. Да, чуть не забыл, что новый год уже. Поздравляю с наступившим Новым годом всех присутстующих! Здоровья Вам и успехов во всех делах! |
|
Создано: 02 января 2009 05:24 · Личное сообщение · #11 |
|
Создано: 02 января 2009 12:21 · Личное сообщение · #12 |
|
Создано: 02 января 2009 13:21 · Личное сообщение · #13 это жесть , походу все компилеры выложенные по ГНУ компилятся с GCC , я ранее только експлоиты на асме там компилил. Ужас какой то ... Достал книгу по GCC , буду разбирать. Вопрос такой - какие условия переноса кода с гсс на обыкновенную сишку? ... Я ранее просто брал от интел компилера хидеры , копировал в папку с компилирующей прогой , указывал пути и все. Сейчас как то не оч выходит , даже если не брать в учет код ореанс , другие коды которые вроде бы все на си написаны ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 02 января 2009 15:59 · Личное сообщение · #14 Язык Си-это стандарт, поэтому чистый грамотно написанный С можно компилять любым компилятором. А сложность портирования на другой компиль (виндовый, в частности) зависит от числа отступлений от стандарта, криворукости автора и юзанья всяких костылей, поэтому вряд ли что можно посоветовать, надо брать код и разбираться. |
|
Создано: 02 января 2009 16:34 · Личное сообщение · #15 ssx - спасибо большое, но моя пустая голова так и не сообразила как этим воспользоваться. Протокол svn? Что-то странно. А ftp не проходит, прав говорит нету. Да ладно, поштучно скачал, лень была искать целый архив, были не работающие ссылки. Все скачал, процедуру выполнения кода нашел int cpu_gen_code(CPUState *env, TranslationBlock *tb, int *gen_code_size_ptr) в файле translate-all.c Похоже все есть, надо изучать и править данные и немного своего кода добавлять. mak - это действительно определённая проблема компилить GCC (например) из виндовса. Говорят что MS компилятор будет по-лучше, он более умный чем например борландовский, которым я пользуюсь (5 и 6 версии). Но такая уж судьба, приходится править код кое-где, GCC компилятор во-первых намного более продвинутый, в то же время это и есть проблема в данном случае, полноценной замены нету. Хотя, я-то не пробовал использовать GCC-компилятор собранный для винды. Когда пробовал - это давно было, что-то не смог я им воспользоваться. Может имеет смысл все-таки, если серьёзно взяться за дело. Но я использую наверное не лучший способ, - править файлы, если этого можно было избежать. Об этой проблеме можно написать целую статью. Вобщем собрал я отдельно эту библиотеку Libiberty.lib с допиской своего кода, все умные выкрутасы в заголовочных файлах упростил и компилю Борландом. Если не собирать GCC полностью, да и какой смысл делать это (кроме чисто научного), то можно и так как я делать, править не так много. Посмотрю сейчас на предмет того чем я могу помочь, и позже отвечу, приготовлю некоторые файлы. Скажите mak, какие у Вас ошибки вылезают из компилятора. Я попробую ответить, можно ICQ воспользоваться. Мой ICQ 277201145. А вобщем-то я использую свою IDE, может потому что мной собрана и я её неплохо знаю. Сейчас лежит не самая новая версия (на alexklm.ru), и есть кое-какие ошибки не сильно мешающие работать. Что первое приходит в голову, так это то что желательно, это не править по-возможности код (там действительно кое-где очень старые декларации функций например, - то приходится), а посмотреть внимательно на файлы config.h config.in и со схожими названиями. Указать там что надо. Через часик я что-нибудь выложу здесь, например Libiberty.lib небольшой проект или ещё что-нибудь. Можно и этот самый проект из QEMU попробовать. |
|
Создано: 02 января 2009 18:43 · Личное сообщение · #16 Это файлы проекта Disasm (QUEM) и Libiberty в формате для EasyDE: www.alexklm.ru/zip/DISASM.zip Это оболочка (IDE) EasyDE, где можно увидеть оба проекта в понятном виде: www.alexklm.ru/zip/EasyDE.zip Если использовать EasyDE, то надо иметь Borland тулзы, 5.5 версии, а вот библиотеки (.lib и c0x32.obj) и инклюды от BC++ 5.02. Bcb6 пригоден, но условно, кое-что придется дописывать из функций. Пути к тулзам надо прописать в .tdf файлах (папка Tools). Инклюды я беру старые-престарые - из BC++ 5.02, причем - правленные местами, но не много. Так что точно не могу сказать как будет это реально работать. Можно попробовать поменять директорию Include на другую что из Bcb5, или Bcb6. Это проблема не сложная, решаемая. Не пробовал MS-VC тулзы и их инклюды и библии, компилятор там медленно работает. Но, в принципе, проблем особых быть не должно. Кстати, последнее наблюдение, вирус к экзешникм борланда не цепляется так как оным из микростаффа. Мелочь, а приятно. |
|
Создано: 02 января 2009 20:59 · Поправил: progopis · Личное сообщение · #17 mak, AlexKlm Краткий ЛикБез. Повторяю: там НЕ Си. И вообще этот код изначально НЕ под Windows. Там заюзан компилятор компиляторов YACC. Си тоже используется, но не в качестве основного кода. Переносить это будет крайне сложно, никакой автоматики, но мы же реверсеры! А тут вам ещё и исходники дают... Так что всё реально. И самое главное. GCC=GNU Compiler Collection. Объединяет много разных компиляторов для разных языков. А вы говорите Си... P.S. Лично я пока не имею интереса к этому коду, прошу меня просить. |
|
Создано: 02 января 2009 23:58 · Поправил: Модератор · Личное сообщение · #18 Власть имущие - может переименуете тему во что-нибудь вроде "АнтиОбфускатор" или лучше "Деобфускатор"? Archer: осилил это непростое дело AlexKlm Протокол svn? Что-то странно. svn - система контроля версий. http://en.wikipedia.org/wiki/Subversion_(software) http://en.wikipedia.org/wiki/Subversion_(software) - рекомендуется к ознакомление, раз ты все равно собрался возиться с опенсорс |
|
Создано: 03 января 2009 00:39 · Личное сообщение · #19 progopis - спсибо, мы это понимаем, что Yacc делает Лексер, а Бизон и M4 - парсер и его файл заголовка. На большее эти друзья не способны. Но мы скорее откажемся от этих тулов, надобности в них нет. Разве что скомпилить тот проект о котором речь в начале темы. То что сложно, это да, это много времени занимает. Но в моем полупроекте (Libiberty) там показано как все это обходится, так что нам не страшен серый волк. ssx - спасибо за подсказку, я этого не знал. Правда устанавливать этот софт из-за пары мегов сорцов не вижу смысла. Другое дело, если проект общий создать, то CVS пригодится. Под девизом Крякеры всех стран - соединятесь, можно и проект создать общими усилиями. А название не важно какое. Важнее чтобы горы кода-мусора превращались только в проблемы самих создателей этого мусора. |
|
Создано: 03 января 2009 00:52 · Личное сообщение · #20 |
|
Создано: 03 января 2009 01:14 · Личное сообщение · #21 mak Если в твоём проекте есть код, специфичный для UNIX-систем, то тогда будут сложности, в противном случае вряд ли. Просто ставишь в GCC флаги компиляции "-Wall -Werror -pedantic", можно ещё добавить "-ansi" - но он в основном не очень помогает, и убираешь все ворнинги, которые говорят о нестандартизованности кода. Далее код почти гарантированно можно будет скомпилить в студии. Можно спалить юниксовый код по определённым заголовкам, например: Code:
|
|
Создано: 03 января 2009 02:31 · Личное сообщение · #22 AlexKlm пишет: Но мы скорее откажемся от этих тулов, надобности в них нет.Не ищем легких путей? AlexKlm пишет: Под девизом Крякеры всех стран - соединятесь, можно и проект создать общими усилиями. Был уже такой проект пару лет назад. Умер через месяца два. А для простой деобфускации поищите плаги для иды, типа cleaner. ----- старый пень |
|
Создано: 03 января 2009 03:48 · Личное сообщение · #23 |
|
Создано: 03 января 2009 12:15 · Личное сообщение · #24 |
|
Создано: 03 января 2009 12:50 · Личное сообщение · #25 |
|
Создано: 03 января 2009 13:34 · Личное сообщение · #26 |
|
Создано: 03 января 2009 14:26 · Поправил: mak · Личное сообщение · #27 Ага , вот это уже интереснее , то я с юниксами дело не имел ... есть такие строки Это первый проект Code:
И второй только это Code:
но во втором есть один файл питона , там 20 строчек гдето Сейчас каникулы , видимо надо долго ждать пока пришлют PS. Поменяли название темы , и теперь получается вот такие вот коментарии типо последних с буквой Й , когда я завожу тему и ее обзываю , даже это процес специальный , а так было чисто . А кто то говорил что автору поста можно стирать пост , я пробую и вот что говорит - Данная операция временно заблокирована для вас. ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 03 января 2009 15:02 · Личное сообщение · #28 |
|
Создано: 03 января 2009 22:44 · Личное сообщение · #29 |
|
Создано: 03 января 2009 23:30 · Личное сообщение · #30 Из QEMU файл target-i386\translate.c я пытался компильнуть. Замучался править заголовки и тело, если так дальше пойдет то вероятность нарваться на собственные ошибки большая. Очень много зелени (#) не перевариваемой виндозовскими препроцессорами. Пробую ещё компилить при помощи GCC компилятора, - тут другая проблема - море ругани на борландовские заголовочные (системные) файлы. Попробую подсунуть родные из GCC, интересно что будет. Кое-что, как мне кажется, нужно скомпилить и на родном компиляторе, а потом перевести результат в объектный файл OMF формата (там выбор большой). Потом может с именами проблемы начнуться. Уж не знаю как этот номер пройдет. Скачал когда-то сорцы Low Level Virtual Machine (LLVM), там тоже есть интересное для нашей цели. |
|
Создано: 04 января 2009 00:20 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . 4 . >> |
eXeL@B —› Программирование —› АнтиОбфускатор |