среда, 11 декабря 2013 г.

Математика хардкор? Глупости!

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

Но к чему я это говорю, пока я пытался осилить матчасть, я много перебрал литературы, конспекты которые я брал у одногрупников были трудночитаемы и часто требовали предворительной расшифровки. Конечно нам давали и книги, но ... увы то что написано в книгах 80г такой хардкор я вам скажу. Даже спустя время, имея уже базис знаний за плечами мне не понятно что там написано. Понятно что математика это точная наука, и развивает особый склад ума, но как показал мой опыт за всеми этими сложными формулами стоят очевидные и простые явления. Единственная сложность в понимании математики это интерпритация написанного. Т.е. пока ты себе не представишь чтолибо ты это не поймёшь. Например я долго ломал голову что такое комплексные числа и в чём их смысл, пока не увидел их на графике, или таже линейная независимость казалась мне просто бессмысленной формулой, пока я не увидел рисунок с замкнутыми векторами. Так почему нельзя такие простые вещи давать так же просто? Почему нет книг в которых бы доступно и иллюстрированно обьяснялись очевидные вещи. Нет я не имею введу картинки как в 5 классе с яблоками и зверушками) Но порой так не хватает рисунка на графике, или разобраного по косточкам примера.

Мне очень нравится  сайт http://mathprofi.ru, посвещённый высшей математике. Проект поддерживает на сколько я знаю один человек и задумывался он как ресурс в помощь заочникам. Ценность данного ресурса заключается в том что матерьял разжован на человеческом языке, причём так, что его поймёт даже семиклассник. Конечно в этом есть и свой недостаток, там обьясняется как решать но не обьясняется почему так, тем не менее если я пытаюсь освоить какой-то материал, то сперва проще прочесть его именно с mathprofi, а потом сидеть уже теребить теоремы и доказательства. Для примера взгляните на гостевую книгу ресурса, ЕЖЕДНЕВНО на протяжении 3х лет автора благодарят студенты, за то что он так хорошо разжевал матерьял. А это чего то да значит.

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

понедельник, 2 декабря 2013 г.

О расширении секций PE приложений

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

Проблемы расширения


Начнём пожалуй с того, что взглянем на проблемы которые стоят на нашем пути. На самом деле проблема только одна, это связи. Их можно поделить на 2 типа:

1. Смещения (анг. offset), т.е. относительные адреса, которые могут указывать на данные из других секций.
2. Виртуальные адреса(анг. virtual address), которые обычно находятся в кодосекции (напр. mov eax, dword ptr[00404264])

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


Рис. 1. Связи внутри PE приложения

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

Но решения в данном случае есть, покрейней мере найдено два. Одно из них базирутеся на релоках, а другое на изменении последней секции. Оба сейчас мы и разберём.

Изменение размера произвольной секций PE файла

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

вторник, 19 ноября 2013 г.

Добавление крайней секции в PE файл

Техника добавления крайней секции в PE файлы. Демонстрируются следующие фитчи:
- Добавление последней секции и внесение в неё данных из файла
- Пересчёт PE checksum (IMAGE_OPTIONAL_HEADER.Checksum)
- Сдвиг оверлея
- Сдвиг Bound Import заголовков
- Поддержка PE и PE+(x64)

понедельник, 11 ноября 2013 г.

Расширение крайней секции PE файла

Пример техники расширения крайней секции исполняемого файла. Демонстрируются следующие фитчи:
- Растягивание последней секции и внесение в неё данных из файла
- Пересчёт PE checksum (IMAGE_OPTIONAL_HEADER.Checksum)
- Сдвиг оверлея
- Поддержка PE и PE+(x64)

понедельник, 28 октября 2013 г.

Javascript на костёр, даёшь ручное юзабилити!

Немного повеселил процесс увеличения изображений на одном из случайных сайтов, пользователи Оперы поймут :) Изображение кликабельно.

понедельник, 21 октября 2013 г.

Установка Visual Studio 2010 и 2012 вместе.

Не знаю то ли я где-то туплю, то ли Мелкомягкие, суть в чём, ставлю 2010 студию, наверх 2012 и последняя абсолютно не желает компилить С++ програмы. После плясок с бубном выяснилось что заголовочные файлы и либы под 2012 почему-то не установились. Проблему решил перебросом папки VC из установленной на другом ПК 2012 студии. Система нипель ёпт!

суббота, 28 сентября 2013 г.

OllyDbg 2.01 Released

Надежда уже угасала, никто не ждал чуда и тут сквозь мрак отчаянье появляется Олег и релизит свой допил Ольги, причём не просто допил, а релиз версию(уже не бета) с нормальным ченджлогом и плюшками в виде опенсурс двигла дизасма, на котором видимо и базируется Ольга. Конечно сразу стало не ясно грустить или радоватся, ведь плюшки с одной стороны хорошо, багфикс вроде бы есть, но как показывает практика вся эта линейка 2.хх нестабильна до ужаса. Решил посчупать ...

Как и предполагалось баги некуда не делись, для обычного ровного приложения полёт нормальный, но как только подсунешь нечто с tls callback, или базонезависимый код, всё крешится, зависает, буфероверфловится и т.п. чернь. Даже ручная трассировка вызывала креш.  Нормально реверсить проты и мальварь в таких условиях явно невозможно. Тваютомать!

В общем мы(покрайней мере я) всё ещё верим в тебя Олег, что ты сможешь допилить вторую линейку до стейбла, запилишь туда х64 и прочие крутые плюшки. Уж больно не хочется переходить на другие более стабильные но дико неудобные отладчики

Сайт ольги http://ollydbg.de/

суббота, 21 сентября 2013 г.

Загрузка библиотеки средствами ntdll.LdrLoadDll

Собственно маленький пример загрузки dll через недокументированную LdrLoadDll из Ntdll.dll. Код полностью независим от Kernel32.dll, что даёт возможность использования его в shellcode. Для получения адреса ntdll.dll используется трюк с PEB, а для поиска адреса LdrLoadDll используется самописанный парсер заголовка PE, аналог GetProcAddress. Всё предельно просто, но мало ли кому пригодится.

* код работает только под x86, чуть позже добавлю и для x64

воскресенье, 15 сентября 2013 г.

Утечка данных в СУБД Microsoft Access

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


Этого мусора в СУБД не видно, что явно не хорошо, ЗЫ Access 2010 лицуха, со всеми апдейтами.

воскресенье, 1 сентября 2013 г.

Осторожно, многомерные массивы в С!

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

 #include <stdio.h>  
 #include <stdlib.h>  
 int main()  
 {  
      char ***buf;  
      char arr[5][4][3];  
      int i, a;  
      arr[4][3][2] = 0x21;  
      buf = (char ***)malloc(sizeof(char **) * 5);  
      for (i = 0; i < 5; i++) {  
           buf[i] = (char **)malloc(sizeof(char *) * 4);  
           for (a = 0; a < 4; a++) {  
                buf[i][a] = (char *)malloc(sizeof(char) * 3);  
           }  
      }  
      buf[4][3][2] = 0x21;  
      printf("%x %x", (int)arr[4][3][2], (int)buf[4][3][2]);  
      getchar();  
      return 0;  
 }  

Тут создаются 2 многомерных массива, один в качестве типа char[5][4][3], а другой как char *** и соответственно заполняется динамически. Мне еще в универе внушили что многомерный массив это указатель на указатель и т.д., следуя данной логике можно предположить что arr и buf, посути одно и тоже, однака хрен там :) Несмотря на то что обращение к элементам этих массивов выглядит одинаково, в памяти они укладываются совершенно разными способами. Массив с типом char *** действительно является указателем на указатель и т.д., однако  char[5][4][3] является указателем на сплошной блок данных и для того чтобы обратится к элементы расчитывается только смещение, без всяких прохождений по цепочке указателей. Вот так вот, как говорится доверяй но проверяй. 

пятница, 30 августа 2013 г.

Дебилдер, это навсегда

Дебилдер(RAD Studio, ex Borland C++ Builder) ужасное IDE, писать на нём на С++ это целый ивент. Если во время программирования в дебилдере вас посещает острое желание разломать какойнибуть придмет в виде рабочего ноутбука, монитора или клавиатуры, то знайте это вполне нормальная реакция.

Очень весёлая укладка экзешников у дебилдера:

пятница, 9 августа 2013 г.

Угол / The Corner (2000 год)


Все мы конечно любим фильмы с крутыми супер-звёздами, фантастическими и приключенческими сюжетами описывающие невероятные события или дико смешные комедии поднимающие настроение даже самым угрюмым зрителям. Мини-сериал "Угол" состоит всего из 6 серий(каждая длиной в 1 час) и в нём нет ни комедии ни фантастики, данная картина пренадлежит к достаточно редкому на мой взгляд типу фильмов, просмотр которых заставляет задуматся о некоторых жизненных аспектах. Данный картина, как заявляется, основана на реальных событиях и я рекомендую её всем любителям кино со смыслом.

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

четверг, 18 июля 2013 г.

Гугл ёпрст!

Ну вот какого хрена!? Мы со своим байнетом и так настрадались еще и гугл подсыпает соли. 3 раз за день, + раньше такое пару раз бывало, + у друга такая же картина. Теперь не пользователи выбирают поисковик, а поисковики пользователей :(

Воткнули бы хотябы капчу какую, а то сидишь как дурак гуглишь через яндекс

Антивирус vs пермутатция


Интереса ради провёл небольшой эксперемент. Хотелось выяснить насколько глубоко антивирусы цепляют свои сигнатуры на исполняемые модули вирусов и используют ли какие-то особые техники анализа закриптованных файлов.

Для этих целей я скачал с инета семпл троянца SpyEye, с нормальным детектом на вирустотале (35 / 47). И написал небольшой пермутатор, который представляет из себя простейший алгоритм перестановочного шифра, который на входе получает какой-то блок данных и переставляет их по указанному вектору перестановок. Далее я просто применял данный алгоритм к секциям исполняемого модуля и пропускал его через вирустотал.

понедельник, 15 июля 2013 г.

Зловещие мертвецы: Черная книга. (2013 год)



Я конечно не особый любитель крови, но что-то последнее время потянуло на ужасы. Честно сказать я уже давно ждал этот фильм и оригинальная часть 81 года досихпор оставила в памяти какой-то оттенок ужаса :) Да реально в детстве это был жуткий фильм, но не суть. Что действительно поразительно, это то что в серии фильмов 'Зловещие мертвецы' чего только не делали: и снимали его с малым бюджетом, и меняли сюжетную линию, и делали из этого фильма чёрную комедию, даже пересняли спустя 30 лет, ну пахнет же провалом. А вот и нет) все фильмы зашибись!

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

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


воскресенье, 14 июля 2013 г.

Добро пожаловать

Доброго времени суток, я Жора Корнев и добро пожаловать в мой новый блог. Это обновлённая версия старого блога, который я удалять кстати не стал, чтобы не терять линки. Теперь все свои заметки и записи вы сможете найти здесь.