Давно ничего не писал так как не было времени. Буду исправляться. Так как немного появилось свободного времени решил запилить чтонить демоническое. А именно виртуальную машину для BrainFuck на ASM. Что из себя она представляет: 8 команд которые что то делают с бесконечной лентой регистров. Можно двигать ленту в лево и в право, увеличивать и уменьшать значение в ячейке, записывать и вводить данные в ячейку. Ну и есть что то типа цикла. Подробней можно почитать на странице педевикии.
Показаны сообщения с ярлыком велосипеды. Показать все сообщения
Показаны сообщения с ярлыком велосипеды. Показать все сообщения
28 июля 2014 г.
12 февраля 2013 г.
Stellaris LaunchPad
Помнится я обещал написать что нибудь для часов eZ430-Chronos Но руки так и не дошли у меня поковырять их. Зато ко мне приехала платка Stellaris LaunchPad от того же Texas Instruments.
А вот до нее у меня руки уже дошли. Я не очень понимаю, почему все так мастурбируют на Arduino ну акромя конечно кучи примеров и библиотек. Ценник дорогой, Arduina UNO таже стоит от 20 австралийских баксов, за 3 элемента на плате, типа сонара и пары резюков требуют аж 10 автралийских баксов. А мощи то в ардуине както и не так уж и много.
Поглядел я на это дело и заказал Stellaris LaunchPad всего за 12.99USD. Иногда поговаривают бывает распродажа и можно купить ее за 4.99USD.
Причем плата на достаточно мощном ARM проце Cortex M4F.
Итак, чтож мы имеем в итоге:
А вот до нее у меня руки уже дошли. Я не очень понимаю, почему все так мастурбируют на Arduino ну акромя конечно кучи примеров и библиотек. Ценник дорогой, Arduina UNO таже стоит от 20 австралийских баксов, за 3 элемента на плате, типа сонара и пары резюков требуют аж 10 автралийских баксов. А мощи то в ардуине както и не так уж и много.
Поглядел я на это дело и заказал Stellaris LaunchPad всего за 12.99USD. Иногда поговаривают бывает распродажа и можно купить ее за 4.99USD.
Причем плата на достаточно мощном ARM проце Cortex M4F.
Итак, чтож мы имеем в итоге:
1 февраля 2013 г.
Inject методом import - Часть 2
Небольшое отступление от основной темы. Вообще для чего можно пользовать инжект. Ну сходу могу сказать несколько применений. Допустим есть некая программа с закрытым исходным кодом и очень хочется немного расширить ее функционал, например она работает только с COM ортом, а хочется чтобы работала через USB, так как в новых ноутах COM порта уже нет. Реверсится алгоритм работы с ком портом, пишется коннектор, оформляется в виде DLL, а дальше инжектится в программу и за место функции работы с ком портом, подставляется своя функция.
Что еще, например нам нужно скрыть процесс от Task Manager'a(Диспетчера задач) и любопытных глаз пользователя/админа. Делаем инжект в программу которая постоянно висит в памяти и не вызывает подозрений - PROFIT! Далее, на основе инжектов можно писать ботов для программ и игр. Например перехватив управление некоторыми функциями DirectX можно рисовать внутри игры какие нибуть нужные и полезные данные. Ну и конечно еще можно перехватывать некие данные, например пароли и логины в программах перехватывая функцию ввода с клавиатуры/мыши.
Но я отвлекся, продолжим первую часть
Остановились мы на том, что написали жертву и написали сам инжектор, а осталась сама DLL которая будет подгружаться.
Что еще, например нам нужно скрыть процесс от Task Manager'a(Диспетчера задач) и любопытных глаз пользователя/админа. Делаем инжект в программу которая постоянно висит в памяти и не вызывает подозрений - PROFIT! Далее, на основе инжектов можно писать ботов для программ и игр. Например перехватив управление некоторыми функциями DirectX можно рисовать внутри игры какие нибуть нужные и полезные данные. Ну и конечно еще можно перехватывать некие данные, например пароли и логины в программах перехватывая функцию ввода с клавиатуры/мыши.
Но я отвлекся, продолжим первую часть
Остановились мы на том, что написали жертву и написали сам инжектор, а осталась сама DLL которая будет подгружаться.
30 января 2013 г.
Inject методом import - Часть 1
В интернетах достаточно много инфы по поводу ижектов при помощи подмены пролога, но я считаю этот метод грязноватым и применяю его только в тех случаях, когда подменить при помощи импорта функцию не получается. На подмену пролога частенько ругаются антивирусы и приходиться изобретать что нибудь странное.
Итак, поговорим том, как сделать inject в чужой процесс своей DLLки и собственно перехват функции через импорт на ассемблере.
Итак, поговорим том, как сделать inject в чужой процесс своей DLLки и собственно перехват функции через импорт на ассемблере.
26 декабря 2012 г.
Алгоритм SHA-2 подвид SHA-256
А сегодня мои маленькие любители биткоинов будет небольшой вам подарок на новый год, мы рассмотрим основополагающий алгоритм этой криптовалюты под названием SHA-2 подвид SHA-256 на ассемблере. Да и в коментах к SHA-1 просили. В принципе со стороны коденья на асме, он даже немного легче чем SHA-1 ибо тут плоский матан, один только геморрой - набить небольшую кучку констант(копипаста утомляет).
Пока идут рождественские выходные - накидал небольшую програмку с алгоритмом SHA-2.
Итак, для тех, кто хочет узреть этот алгоритм, прошу под кат.
Пока идут рождественские выходные - накидал небольшую програмку с алгоритмом SHA-2.
Итак, для тех, кто хочет узреть этот алгоритм, прошу под кат.
22 октября 2012 г.
Генератор кредитных карт
Наткнулся тут на такой алгоритм под названием "Алгоритм Луна" который применяется для первичной верификации пластиковых банковских карт, а так же можно использовать для всяких медицинских страховок и прочих вещей где есть ручной ввод и человеческий фактор. Этот алгоритм защищает только от ошибочного ручного ввода, в любом случае банковская карта после этого проходит верификацию в процессинговом центре.
Так что AHTUNG! ALARM! ВНИМАНИЕ! генератор не работает и подсовывать с него номера пытаясь расплотиться в интернет магазинах - не надо, карта не сработает! Считайте, что я вас предупредил и любое использование этого генератора где то кроме изучения алгоритма - на свой страх и риск.
Для тех кто хочет узнать что за алгоритм и как написать программу для генерирования - под кат.
Так что AHTUNG! ALARM! ВНИМАНИЕ! генератор не работает и подсовывать с него номера пытаясь расплотиться в интернет магазинах - не надо, карта не сработает! Считайте, что я вас предупредил и любое использование этого генератора где то кроме изучения алгоритма - на свой страх и риск.
Для тех кто хочет узнать что за алгоритм и как написать программу для генерирования - под кат.
11 октября 2012 г.
Алгоритм SHA-1 на ассемблере.
Начнем с небольшой теории из педевикии:
(Нудным и гнусявым голосом) Алгоритм был создан в 1995 году прошлого века, насколько я понимаю в замену алгоритма MD5. По внутренней структуре алгоритм очень похоже на MD5, но имеет на мой взгляд более простую реализацию и вроде как более защищен от возникновения коллизий. Хотя в 2005 году математики из Китая придумали как провести полноценную атаку на SHA-1 причем менее чем за 2 в 69 степени операций. Что лучше, чем так называемая атака Дней рождения. За подробностями рекомендую обратиться в гугл, может в будующем я реализую алгоритм атаки Дней рождения, но сейчас поговорим как реализовать SHA-1 на ассемблере.
Понадобился мне SHA-1 для одного моего креатива, об котором я позже напишу.
Итак, простыми словами базовый алгоритм:
(Нудным и гнусявым голосом) Алгоритм был создан в 1995 году прошлого века, насколько я понимаю в замену алгоритма MD5. По внутренней структуре алгоритм очень похоже на MD5, но имеет на мой взгляд более простую реализацию и вроде как более защищен от возникновения коллизий. Хотя в 2005 году математики из Китая придумали как провести полноценную атаку на SHA-1 причем менее чем за 2 в 69 степени операций. Что лучше, чем так называемая атака Дней рождения. За подробностями рекомендую обратиться в гугл, может в будующем я реализую алгоритм атаки Дней рождения, но сейчас поговорим как реализовать SHA-1 на ассемблере.
Понадобился мне SHA-1 для одного моего креатива, об котором я позже напишу.
Итак, простыми словами базовый алгоритм:
28 августа 2012 г.
Пишем пакер, ну или основу криптора. (Часть 4)
21 августа 2012 г.
Пишем пакер, ну или основу криптора. (Часть 3)
15 августа 2012 г.
Пишем пакер, ну или основу криптора. (Часть 2)
А вот и вторая часть про пакер/криптор.
Так как у нас все данные из старого файла будут находиться в одной секции, необходимо их склеить, потом закриптовать/упаковать и выяснить размер. Я не стал писать функцию криптования или упаковки, так как это достаточно просто, да и лень что то стало, ограничился только склеиванием и измерением размера. В любом случае, тут не нужно файловое выравнивание и секция получается меньше, чем в оригинальном файле.
Немножко кода:
Так как у нас все данные из старого файла будут находиться в одной секции, необходимо их склеить, потом закриптовать/упаковать и выяснить размер. Я не стал писать функцию криптования или упаковки, так как это достаточно просто, да и лень что то стало, ограничился только склеиванием и измерением размера. В любом случае, тут не нужно файловое выравнивание и секция получается меньше, чем в оригинальном файле.
Немножко кода:
14 августа 2012 г.
Пишем пакер, ну или основу криптора. (Часть 1)
Давно была у меня задумка написать пакер/криптор. Ковыряясь намедник очередной раз в формате PE я всетаки скрепился и начал писать пакер. Имея некоторый опыт в распаковке всяких пакеров типа UPX/ASPack и немного в ASProtect. Я взял за основу болванки - UPX.
Я не смотрел исходники дабы не плагиатить подсознательно код и делал пакер разбираясь по ходу в коде и заголовке упакованного файла и имея только бинарники.
Для изучения алгоритмов я использовал следующие программы:
IDA Pro - по большей части чисто как дизассемблер
OllyDbg - для дебага
Explorer Suite (CFF Explorer) - для изучения заголовка PE, секций и т.п.
Для начала теория.
Один из вариантов работы пакера/криптора:
Я не смотрел исходники дабы не плагиатить подсознательно код и делал пакер разбираясь по ходу в коде и заголовке упакованного файла и имея только бинарники.
Для изучения алгоритмов я использовал следующие программы:
IDA Pro - по большей части чисто как дизассемблер
OllyDbg - для дебага
Explorer Suite (CFF Explorer) - для изучения заголовка PE, секций и т.п.
Для начала теория.
Один из вариантов работы пакера/криптора:
12 июля 2012 г.
Посмотреть на рандом.
Бывает интересно посмотреть на алгоритм псевдо генератора рандом не просто в цифрах, а в виде картинок и подобрать параметры которые больше всего нравятся. Не всегда есть желание и возможность провести полноформатное тестирование с его монстроподными формулами и прочим да и не особа это нужно если не разрабатывать новые алгоритмы для криптографии. По этому решил я написать небольшую программку которая выводит в фаил нули и единицы которые генерятся нв выходе алгоритмов.
10 июля 2012 г.
Алгоритм словарной компрессии LZ78
На http://crackmes.de/ тишина и интересных крякмисов нет, так что мучаясь от безделья решил покопать алгоритмы компрессии. Арифметическая компресия мне не особа понравилась, да и както мутный там достаточно алгоритм для кодирования, решил поковырять словарную компрессию. Выбор пал на достаточно актуальные алгоритмы созданные Якобом Зивом и Абрахамом Лемпелом под общим названием LZ.
26 июня 2012 г.
ICMP Chat
В продолжении изучения сокетов посетила меня мысль, что при помощи icmp можно сделать управляющий протокол для чего нибуть, ну саму управлялку я не стал делать, а вот чат написал.
27 апреля 2012 г.
Сеть Фейштеля
Иной раз необходимо зашифровать какойнить кусочек, причем желательно не банальным XOR, так как он расшифровывается без проблем частенько даже при наличии бумажки с ручкой, а чем нибудь более стоящим. Посложнее XOR но полегче и попроще чем AES или MD5.
Для этого один из американских ученых по фамилии Фейштель разработал алгоритм, в последствии который стал называться сетью Фейштеля. Он до сих пор используется в в качестве основного движка во многих алгортмах шифрования, да хотябы в том же MD5. Я рассмотрю основной движек, без навороченных навесок типа перемешивания и прочего.
Смысл его в чем:
Для этого один из американских ученых по фамилии Фейштель разработал алгоритм, в последствии который стал называться сетью Фейштеля. Он до сих пор используется в в качестве основного движка во многих алгортмах шифрования, да хотябы в том же MD5. Я рассмотрю основной движек, без навороченных навесок типа перемешивания и прочего.
Смысл его в чем:
23 апреля 2012 г.
Длинная арифметика: Сравнение
Для следующей арифметической операции под названием деление, а именно вычисления модуля числа, нам необходима процедурка - сравнение. В принципе она очень проста, алгоритм заключается в следующем, сначала мы сравниваем длину числа в байтах, то число которое длиннее - всегда будет больше чем короткое. Если длина чисел равна, то сравниваем пару сатрших цифр в числах, если цифра в числе 1 больше, то значит число 1 больше и наоборот, если же они тоже равны то сдвигаемся на одну в право и повторяем сравнение,пока какая то цифра не окажется больше или меньше. Если все цифры закончились, но так и не найдено большее число, тогда считаем что оба числа равны.
А теперь все это на ASM:
А теперь все это на ASM:
20 апреля 2012 г.
Длинная арифметика: Умножение
Ну вот добрались до одной из основных операций в криптографии, это умножение. На текущий момент мы умеем с некоторым оговорками складывать и вычитать. Теперь необходимо разобраться как умножать, операция несколько сложнее чем две предыдущие.
Вспомним опять же 3ий класс и умножение столбиком.
Вспомним опять же 3ий класс и умножение столбиком.
18 апреля 2012 г.
Длинная арифметика: Вычитание
Продолжим работу с длинными числами, в текущий момент мы можем складывать числа произвольной длинны, а теперь нам необходимо научиться вычитать эти числа.
Опять же вспоминаем 3ий класс и как производятся вычитание при помощи столбика:
Опять же вспоминаем 3ий класс и как производятся вычитание при помощи столбика:
16 апреля 2012 г.
Длинная арифметика: Сложение
В криптографии часто возникает случаи когда необходимо работать с длинными числами, например необходимо вычислить 256 в 512 степени. А также сделать с этими числами некие арифметические операции. В текущий момент регистры в современных компьютерах, на 64 битных операционных системах, позволяют хранить знаковое число +-9223372036854775807 ну или беззнаковое - умножить это число на 2. С такими числами размеров 64бита можно проводить стандартные операции вычитания, деления и с некоторыми условями - умножение и сложение. Но как быть если число как я написал например 256 в 512 степени, это приблизительно - 1.04 * 10 в 1233 степени. Тоесть такое число будет занимать больше килобайта, если на каждый символ отдавать по 1 байту. Понятно, что килобайт это ничто в текущих реалиях, а если там будет 100 тысячная степень или еще больше? Тут к нам приходят на помощь алгоритмы длинной арифметики.
Подписаться на:
Сообщения (Atom)












