Давно ничего не писал так как не было времени. Буду исправляться. Так как немного появилось свободного времени решил запилить чтонить демоническое. А именно виртуальную машину для BrainFuck на ASM. Что из себя она представляет: 8 команд которые что то делают с бесконечной лентой регистров. Можно двигать ленту в лево и в право, увеличивать и уменьшать значение в ячейке, записывать и вводить данные в ячейку. Ну и есть что то типа цикла. Подробней можно почитать на странице педевикии.
Показаны сообщения с ярлыком алгоритм. Показать все сообщения
Показаны сообщения с ярлыком алгоритм. Показать все сообщения
28 июля 2014 г.
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, секций и т.п.
Для начала теория.
Один из вариантов работы пакера/криптора:
31 июля 2012 г.
Наглядное представление PE файла.
Наткнулся на наглядно нарисованный формат PE файла, есть даже русская версия, смотреть тут - http://code.google.com/p/corkami/wiki/PE101?show=content
Ну и еще неплохо ознакомиться с каноничным мануалом от микрософта как загружаются в память исполняемые файлы - http://msdn.microsoft.com/en-us/magazine/cc301727.aspx
12 июля 2012 г.
Посмотреть на рандом.
Бывает интересно посмотреть на алгоритм псевдо генератора рандом не просто в цифрах, а в виде картинок и подобрать параметры которые больше всего нравятся. Не всегда есть желание и возможность провести полноформатное тестирование с его монстроподными формулами и прочим да и не особа это нужно если не разрабатывать новые алгоритмы для криптографии. По этому решил я написать небольшую программку которая выводит в фаил нули и единицы которые генерятся нв выходе алгоритмов.
10 июля 2012 г.
Алгоритм словарной компрессии LZ78
На http://crackmes.de/ тишина и интересных крякмисов нет, так что мучаясь от безделья решил покопать алгоритмы компрессии. Арифметическая компресия мне не особа понравилась, да и както мутный там достаточно алгоритм для кодирования, решил поковырять словарную компрессию. Выбор пал на достаточно актуальные алгоритмы созданные Якобом Зивом и Абрахамом Лемпелом под общим названием LZ.
12 мая 2012 г.
Исключения в Windows.
А сегодня поковыряемся в темных закоулках исключений Windows. Они созданы для того, чтобы обрабатывать всякие ошибки, например если возникает деление на ноль или запись в ячейку памяти которая защищена от записи. По умолчанию мы получим сообщение типа "Application Error.", а в Windows Vista/Seven вообще можно ничего не получить, программа просто закроется.
Итак, как это можно использовать в своих целях, ну например для антиотладки и запутывания логики программы. Для начала небольшая теория:
Итак, как это можно использовать в своих целях, ну например для антиотладки и запутывания логики программы. Для начала небольшая теория:
10 мая 2012 г.
Немного про антиотладку.
Решил поколупать всякие простенькие приемчики антиотладки, конечно с плагинами которые вешаются на дебаггеры типа OllyDBG и IDA они не шибко помогут, но остановят начинающего крякера, да и самому интересно стало поковыряться.
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)










