Сейчас на форуме: UniSoft, _MBK_, laslo (+9 невидимых)

 eXeL@B —› Программирование —› АнтиОбфускатор
<< . 1 . 2 . 3 . 4 . >>
Посл.ответ Сообщение


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 04 декабря 2008 18:02 · Поправил: Модератор
· Личное сообщение · #1

Какие есть методы по борьбе с обфускацией ? Цель написать анализатор заменяющий 10 обфусцированных команд в одну настоящую. Для этого наверное нужно делить по блокам , а потом уже в них искать смысл и изменения. Бывает что между командами лежит просто мусор , который даже не используется =) Поэтому пока что эту часть я хочу просто опустить .. и отследить одну команду выполненую 10 или более команд без изменения смысла той самой одной.

У кого нить есть информация с РАН фаха Кибернетики ? Там професора пишут ух какие тексты.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 28 декабря 2008 22:21 · Поправил: progopis
· Личное сообщение · #2

ssx
Эмм. У меня вот так вообще-то:
Code:
  1. D:\oreans>make
  2. gcc --o asm y.tab.c list.-lfl
  3. D:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot fin
  4. -lfl
  5. collect2: ld returned 1 exit status
  6. make: ***




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 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




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 28 декабря 2008 23:33
· Личное сообщение · #4

progopis Спасибо ! У меня тоже что то падает но не сразу , а на реакцию странно реагирует , например написал push 100h и выдало что то , а падает через какойто промежуток времени. Поковыряю принцып. Сэнкс еще раз )

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 28 декабря 2008 23:38
· Личное сообщение · #5

mak
скорее всего ошибка работы с памятью. ооочень мало времени, чтобы посмотреть. Если только после НГ.



Ранг: 38.2 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 29 декабря 2008 00:38
· Личное сообщение · #6

Как помню як или бизон выдают сразу два файла - .c и .h. По-моему можно заняться, я же собирал года два назад компилятор GCC из виндовса, где-то лежат як бизон и прочая приблуда. А в мейкфайле там наверное не те имена которые соозвучны именам исходников, это не принципиально.




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 29 декабря 2008 00:51
· Личное сообщение · #7

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

progopis я тоже гляну , если что отпишись ПЛЗ.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 38.2 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 30 декабря 2008 01:07
· Личное сообщение · #8

mak - там портировать на асм сложновато, букаф много писать, да и зачем?
Только что собрал. Работает вроде (вышла 117 кб экзешник), но там ещё надо разобраться как данные вводить. Потому и зависает анализатор что надобно накормить ребёнка . Что выйдет - расскажу потом.



Ранг: 38.2 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 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



Ранг: 38.2 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 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 один к одному, а заголовки показывают - что там есть всё что надо. Так что, кому нечего делать - можно заняться.
Да, чуть не забыл, что новый год уже. Поздравляю с наступившим Новым годом всех присутстующих! Здоровья Вам и успехов во всех делах!




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 02 января 2009 05:24
· Личное сообщение · #11

AlexKlm Спасибо , глянем , С наступившим 2008

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 02 января 2009 12:21
· Личное сообщение · #12

AlexKlm пишет:
Так вот имеются исходники, правда нашел пока только файлы поштучно, тут

там даже написано, что нужно сделать, чтобы вытащить все файлы
svn co svn://svn.sv.gnu.org/qemu/tags/release_0_9_1




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 02 января 2009 13:21
· Личное сообщение · #13

это жесть , походу все компилеры выложенные по ГНУ компилятся с GCC , я ранее только експлоиты на асме там компилил. Ужас какой то ... Достал книгу по GCC , буду разбирать.

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

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





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

Создано: 02 января 2009 15:59
· Личное сообщение · #14

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



Ранг: 38.2 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 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 попробовать.



Ранг: 38.2 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 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 тулзы и их инклюды и библии, компилятор там медленно работает.
Но, в принципе, проблем особых быть не должно.
Кстати, последнее наблюдение, вирус к экзешникм борланда не цепляется так
как оным из микростаффа. Мелочь, а приятно.



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 02 января 2009 20:59 · Поправил: progopis
· Личное сообщение · #17

mak, AlexKlm
Краткий ЛикБез. Повторяю: там НЕ Си. И вообще этот код изначально НЕ под Windows. Там заюзан компилятор компиляторов YACC. Си тоже используется, но не в качестве основного кода. Переносить это будет крайне сложно, никакой автоматики, но мы же реверсеры! А тут вам ещё и исходники дают... Так что всё реально.

И самое главное. GCC=GNU Compiler Collection. Объединяет много разных компиляторов для разных языков. А вы говорите Си...

P.S. Лично я пока не имею интереса к этому коду, прошу меня просить.



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 02 января 2009 23:58 · Поправил: Модератор
· Личное сообщение · #18

Власть имущие - может переименуете тему во что-нибудь вроде "АнтиОбфускатор" или лучше "Деобфускатор"?

Archer: осилил это непростое дело

AlexKlm
Протокол svn? Что-то странно.
svn - система контроля версий. http://en.wikipedia.org/wiki/Subversion_(software) http://en.wikipedia.org/wiki/Subversion_(software) - рекомендуется к ознакомление, раз ты все равно собрался возиться с опенсорс



Ранг: 38.2 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 03 января 2009 00:39
· Личное сообщение · #19

progopis - спсибо, мы это понимаем, что Yacc делает Лексер, а Бизон и M4 - парсер и его файл заголовка. На большее эти друзья не способны. Но мы скорее откажемся от этих тулов, надобности в них нет. Разве что скомпилить тот проект о котором речь в начале темы.
То что сложно, это да, это много времени занимает. Но в моем полупроекте (Libiberty) там показано как все это обходится, так что нам не страшен серый волк.
ssx - спасибо за подсказку, я этого не знал. Правда устанавливать этот софт из-за пары мегов сорцов не вижу смысла. Другое дело, если проект общий создать, то CVS пригодится. Под девизом Крякеры всех стран - соединятесь, можно и проект создать общими усилиями. А название не важно какое. Важнее чтобы горы кода-мусора превращались только в проблемы самих создателей этого мусора.




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 03 января 2009 00:52
· Личное сообщение · #20

progopis нет , я уже о другом коде под винду. Но под ГСС. Если мне универ скинет все файлы нужные то я скину сюда проект глянуть.

ssx Классное название нестандратное .. привлекает креативных людей а не всех подряд.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 03 января 2009 01:14
· Личное сообщение · #21

mak
Если в твоём проекте есть код, специфичный для UNIX-систем, то тогда будут сложности, в противном случае вряд ли. Просто ставишь в GCC флаги компиляции "-Wall -Werror -pedantic", можно ещё добавить "-ansi" - но он в основном не очень помогает, и убираешь все ворнинги, которые говорят о нестандартизованности кода. Далее код почти гарантированно можно будет скомпилить в студии. Можно спалить юниксовый код по определённым заголовкам, например:
Code:
  1. #include <sys/types.h>
  2. #include <sys/ipc.h>
  3. #include <sys/msg.h>
  4. #include <unistd.h>
  5. #include <signal.h>
  6. ...




Ранг: 590.6 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 03 января 2009 02:31
· Личное сообщение · #22

AlexKlm пишет: Но мы скорее откажемся от этих тулов, надобности в них нет.Не ищем легких путей?

AlexKlm пишет: Под девизом Крякеры всех стран - соединятесь, можно и проект создать общими усилиями. Был уже такой проект пару лет назад. Умер через месяца два.

А для простой деобфускации поищите плаги для иды, типа cleaner.

-----
старый пень




Ранг: 38.2 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 03 января 2009 03:48
· Личное сообщение · #23

r_e
- да, ищем легких путей, если таковые имеются.
- проект умер? Интересно почему. Проекты вообще-то обычно умирают, но память светлая о них - остаётся.




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 03 января 2009 12:15
· Личное сообщение · #24

Ссори, что то с Оперой....

Мне кажется деобфускацией заниматься мона, но очень нудно...

-----
One death is a tragedy, one million is a statistic.




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

Создано: 03 января 2009 12:50
· Личное сообщение · #25

ZaZa
Очень нудно это пытаться понять обфусканый код.



Ранг: 590.6 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 03 января 2009 13:34
· Личное сообщение · #26

AlexKlm пишет: проект умер? Интересно почему.
Время и возраст.

-----
старый пень





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 03 января 2009 14:26 · Поправил: mak
· Личное сообщение · #27

Ага , вот это уже интереснее , то я с юниксами дело не имел ... есть такие строки
Это первый проект
Code:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #ifdef TIMING
  4. #ifndef USG
  5. #include <sys/time.h>
  6. #include <sys/resource.h>

И второй только это
Code:
  1. #include <stdio.h>
  2. #include <stdlib.h>

но во втором есть один файл питона , там 20 строчек гдето Сейчас каникулы , видимо надо долго ждать пока пришлют


PS. Поменяли название темы , и теперь получается вот такие вот коментарии типо последних с буквой Й , когда я завожу тему и ее обзываю , даже это процес специальный , а так было чисто . А кто то говорил что автору поста можно стирать пост , я пробую и вот что говорит - Данная операция временно заблокирована для вас.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 03 января 2009 15:02
· Личное сообщение · #28

r_e пишет:
А для простой деобфускации поищите плаги для иды, типа cleaner.

ты же знаешь, что автор убрал клинер из публичного доступа очень быстро




Ранг: 67.4 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 03 января 2009 22:44
· Личное сообщение · #29

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



Ранг: 38.2 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 03 января 2009 23:30
· Личное сообщение · #30

Из QEMU файл target-i386\translate.c я пытался компильнуть. Замучался править заголовки и тело, если так дальше пойдет то вероятность нарваться на собственные ошибки большая.
Очень много зелени (#) не перевариваемой виндозовскими препроцессорами.
Пробую ещё компилить при помощи GCC компилятора, - тут другая проблема - море ругани на борландовские заголовочные (системные) файлы. Попробую подсунуть родные из GCC, интересно что будет.
Кое-что, как мне кажется, нужно скомпилить и на родном компиляторе, а потом перевести результат в объектный файл OMF формата (там выбор большой). Потом может с именами проблемы начнуться. Уж не знаю как этот номер пройдет.

Скачал когда-то сорцы Low Level Virtual Machine (LLVM), там тоже есть интересное для нашей цели.



Ранг: 21.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 04 января 2009 00:20
· Личное сообщение · #31

Такие вещи надо компилить mingw'ом или под cygwin'ом. Первый меньше Возможно, в исходниках придётся поправить вещи, специфичные для юниксов.


<< . 1 . 2 . 3 . 4 . >>
 eXeL@B —› Программирование —› АнтиОбфускатор
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати