Pull to refresh
5
1
Дмитрий @xverizex

Разработчик

Send message

Фаззинг библиотек

Level of difficultyMedium
Reading time5 min
Views2.9K

Ещё недавно, как я начал изучать веб хакинг, я счёл интересным занятие исследовать Linux и Windows на предмет бинарных уязвимостей. Хотя легально заработать в одиночку хакером у нас в России я думаю можно только веб хакингом, я всё равно хочу изучать все интересующие аспекты атакующей и защищающей стороны. Кто знает, вдруг я когда-нибудь буду в red team. Ну а пока я просто грызу гранит науки.

Слегка поразмыслив над решением задачи, я определил что нужно для осуществления моей проблемы. Я не знаю как другие проводят фаззинг библиотек, у которых нет исходных текстов, но додумался до одного варианта. Далее будут два примера для Linux и Windows.

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments31

Релиз RetroSpriteEditor 0.2.8 [open source]

Level of difficultyEasy
Reading time2 min
Views2.1K

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

Итак, интерфейс. Я писал его на GTK4. Доступна версия для windows. Для Linux можно готовую сборку взять на flathub

https://flathub.org/ru/apps/io.github.xverizex.RetroSpriteEditor

А для Windows можно взять на github

https://github.com/xverizex/RetroSpriteEditor

Окно с открытым проектом выглядит так.

Читать далее
Total votes 16: ↑15 and ↓1+14
Comments3

Как я делал свой мини калькулятор без программирования и что из этого вышло

Level of difficultyEasy
Reading time3 min
Views5.6K

​Настали времена, когда у меня появилась возможность осваивать электронику. Я начал с книги "Искусство схемотехники", но прочитав страниц 100, я понял, что усваиваю не всё и потихоньку пропадает интерес. Нужно было что-то делать, нужно было выработать какой-то способ, чтобы я всё равно обучался электронике.

Пока были сложности с построениями аналоговых схем, а хотелось что-то создать или запрограммировать, то я выбрал разработку для NES (у нас в народе была Денди). Так как я в linux разрабатываю софт, то не нашел нормального редактора картинок для NES. Даже в туториале, в котором имелась ссылка на программу, была неактивна. Мне нравится, что на Хабре выходят переводы статей, но сами авторы допускают ошибки в коде и это отражается также и в переводе. Я долго не мог понять почему не рисуется спрайт, пока не изучил официальную документацию. Для рисования спрайтов мне захотелось написать свою программу, так как другие были ну очень непонятные. Кому интересно, буду рад, если будете пользоваться этой программой.

https://github.com/xverizex/RetroSpriteEditor

Это немного меня отодвинуло назад в плане изучения электроники, но очень понравилось писать на ассемблере, что в принципе я всегда и хотел.

Иногда я смотрю, что есть нового на flathub, и обнаружил симулятор цифровой электроники, Logisim. Ещё не изучив полностью компоненты, я быстро сориентировался с logic gates. Это такие элементы как OR, AND, XOR. Почти все из этих понятий мне были знакомы уже давно. Тогда я решил написать свой сумматор. Может я не правильно пишу, так что можно просто калькулятор, который умеет только прибавлять. Я потратил два дня по два часа и у меня ничего не вышло. У меня не получалось создать правильный калькулятор. По мере накопления такого опыта, я решил подумать как можно вообще выстроить процесс поиска правильного решения. И вот что я придумал.

Читать далее
Total votes 9: ↑6 and ↓3+3
Comments6

Реализация очереди на C

Reading time2 min
Views12K

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

Сама очередь состоит из такой структуры.

Читать далее
Total votes 22: ↑5 and ↓17-12
Comments16

Как я разрабатывал игру fly bird 2

Reading time7 min
Views2.1K

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

https://play.google.com/store/apps/details?id=com.xverizex.fly_bird&hl=ru&gl=US

Два комментария к старой игре дали мне желание сделать новую версию, но уже на C++ + SDL2 + OPENGL ES 3.2 + OPENSLES + glm. То есть я даже рад хотя бы двум комментариям о том что людям нравиться моё творчество, чтобы чувствовать себя прекрасно и продолжать делать игры.

Так как у меня нормального опыта не было делать игры полноценные на sdl2, то я использовал разные виды кода, которые как я думал, что они правильные. Но поработав на работе и изучая код, я увидел что есть помимо того что я знаю (я про очереди сообщений), есть ещё mqueue. И только потом я додумался, что можно с помощью очередей сообщений отправлять из одного потока в другой что-нибудь. Вот пример как выглядела реализация.

Читать далее
Total votes 3: ↑2 and ↓1+1
Comments5

Читаем схему от минуса к плюсу

Reading time3 min
Views5.8K

Добрый день. Я разработчик ПО и начал изучать электронику. Я хочу написать свою книгу о том что я узнаю в электронике и как создать эмулятор и построить устройство. Я прочитал первые страницы "Art of electronics" и сразу же приступил к написанию эмулятора. Но я вычисления производил от плюса к минусу. Потом вспомнил что по-настоящему ток течет от минуса к плюсу. Я начал расследовать и домысливать как это работает. Понял что у заряда есть поле. В общем если вам интересно, добро пожаловать.

Сначала я расскажу как же все таки можно вычислить общее напряжение в цепи. Вот пример картинки.

Читать далее
Total votes 14: ↑1 and ↓13-12
Comments75

Почему нам не надо делать ИИ по типу работы мозга

Reading time3 min
Views7.2K

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

Итак, мы получаем информацию от нескольких сенсоров. Попробуйте обговорить какую нибудь ситуацию значимую, например устройство на работу. Если вы затроните на собеседовании разговор о том что делают программисты, когда увольняются, то этот момент отобразиться в будущем, когда вы захотите уволиться с работы. Но какая мысль будет в тот момент, будет учитываться на сколько ты способен сделать тоже самое что и те программисты, которые уволились с работы. И в конце концов в чем ты заинтересован в данный момент. Например мы заинтересованы разработкой на C++. И я буду уверен, что мы подумаем о том что осталось от мысли, о том что делают программисты после увольнения с этой работы в реализации на C++. Это происходит потому что мы фоном поставили сегодяшний день увольнения, потом так как мы программисты, то мы относим к числу тех, что мы что-то хотим делать после увольнения. И тут начинается сужение до наших возможностей и отображение на нашу цель, то есть написать что нибудь на C++.

Еще другой пример. Мы установили цель придумать какую нибудь игру. Но скажу сразу, наша фантазия оценивается на наших знаниях до текущего момента и мы не можем придумать что-то из ничего. Обязательно для свежей идеи должно быть какое то искажение или комбинация нескольких воспоминаний, но эти воспоминания нужно активировать одновременно, чтобы их увидеть. Именно так и работает. Мы придумываем цель типа игра про оркой в изометрии. Это например то что только смогли для начала придумать. А потом начинаем смотреть на youtube видео разные и ждем пока к нам придет идея. И в чем прикол, что это не мы догадываемся об этой мысли, просто наш мозг событийный. Получается что ты не додумаешься до этого, если тебе определенное событие не поможет. Поэтому много идей уходят в корзину, потому что они приходят по событию и активируют связанные с этим событием нейроны.

Читать далее
Total votes 10: ↑2 and ↓8-6
Comments56

Алгоритм. Очередь с приоритетом

Reading time5 min
Views18K

В этой статье я покажу очередь с приоритетом с использованием linked list. Алгоритм простой и позволяет получить приоритетные сообщения раньше, чем остальные сообщения.

Я сначала поискал в интернете реализацию такого алгоритма. Первое, что я нашел, это решение на c++ с обычными массивами. То есть создается шаблонный класс и в нем создается два массива, один для чисел, другой для приоритетности. Мне показалось, что решение не очень хорошее, потому что при добавлении нового числа, создается новый массив и из старого копируются данные в новый массив. Чем больше очередь, тем больше копирования каждый раз. Ещё проблема при использовании массива - это что нельзя использовать в другом потоке очередь, пока ты не выполнишь полностью функцию вставки данных в очередь, так как смениться указатель на массив и так далее.

Алгоритм - очередь с приоритетом достаточно простой, мы создаем структуру, я опять буду показывать пример кода на C, и входящие данные будут числа. итак.

Читать далее
Total votes 17: ↑6 and ↓11-5
Comments14

Дерево без рекурсии

Reading time4 min
Views9.9K

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

Итак, начнем. Допустим есть задачка, получить много данных и вывести совпадения. Я нашел одно решение в интернете и понял как это сделать просто. Мне понравилось это решение, но мы знаем что рекурсия заполняет стек и если будет большая вложенность, то будет много выходов из функций. Я захотел попробовать сделать такой алгоритм, который не нуждается в рекурсии. Я буду писать на C, потому что это такой язык, который могут понять все.

Первым делом определим структуру.

Читать далее
Total votes 24: ↑5 and ↓19-14
Comments22

Релиз 0.1.36 Nem мессенджера

Reading time2 min
Views4K

За последние 14 дней я разработал мессенджер, у которого отличительная черта от остальных мессенджеров — это то, что серверную программы вы контролируете сами. Вы можете скачать исходные коды серверной программы и установить на свой сервер. Клиентская часть доступна для linux на flathub — приложение называется Nem.

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

Читать далее
Total votes 20: ↑17 and ↓3+14
Comments54

Архитектура приложения моего защищенного чата

Reading time8 min
Views4.1K

В этой статье я хочу описать архитектуру своего приложения. Здесь будут представлен как графический клиент, так и сервер.

Оба приложения написаны на C. Это мой любимый язык и на нем я бы хотел писать код, если смогу когда нибудь устроиться на работу программистом. Попользовавшись ubuntu я понял что старые версии софта, это не хорошо. Например у меня несколько источников звука и микрофонов. И в ubuntu при каждой новой загрузке нужно переключать источник от наушников в источник телевизор. Также и микрофон. Как я обрадовался, что в opensuse нет с этим проблемы и доступна библиотека gtk4, которую я так давно ждал. Я мог писать приложение в gnome builder, что я иногда делаю, но в gnome builder мне не удалось сделать так, чтобы заработала библиотека ffmpeg. И как обычно я пишу в vim.

Итак. Я уже привык к объектной философии gobject и чувствую себя кофмортно в разработке. В gtk4 много изменений произошло. Например я раньше в gtk3 в text_view в сигнале "draw" выполнял функцию gtk_widget_queue_resize ();. и так получалось что это подгоняло размер под нужный, перед рисованием текста, но в gtk4 нельзя подключиться к методу отрисовки. И тогда я решил сделать свой виджет. Но свой виджет не нужно делать прям с нуля. В документации ясно сказано, что gtk_drawing_area как раз предназначен для custom виджетом.

Вот список файлов, которые учавствуют в проекте gui secure chat.

Читать далее
Total votes 12: ↑10 and ↓2+8
Comments9

Как я метался из стороны в сторону, пока не определился с проектом

Reading time5 min
Views5K

Работая на фрилансе и зарабатывая хоть какие то деньги и ведение стримов на twitch, я совсем перестал делать нормальные проекты. Из-за каких то денег на фрилансе мне перехотелось делать программы бесплатно даже те, которые могут в перспективе что-то принести. В этой статье я привожу небольшой опыт, может кому нибудь он пригодиться о том что я все таки выбрал из проектов и как практиковал английский язык.

Читать далее
Total votes 42: ↑2 and ↓40-38
Comments38

Делаем спрайт разных цветов

Reading time6 min
Views2.8K

Я пробую делать игры. Пишу код, пробую рисовать и хочу научиться делать музыку. Я прорисовал персонажа и мне нужно было сделать так, чтобы ему можно было менять цвет одежды. Решение пришло сначала одно, но потом додумался до более простого. </cut>

Продолжить
Total votes 5: ↑1 and ↓4-3
Comments13

Программа для чтения исходных кодов

Reading time2 min
Views6.6K

Изучая android разработку мне хотелось что нибудь создать, но идей не было. Я сделал одну уже программу для чтения исходных кодов, но алгоритм там был ужасный и я забросил проект. Но несколько дней назад я решил опять что нибудь написать, тем более что оформил подписку на packpub и посмотрел как создавать custom ui для android. До этого, несколько лет назад, я читал книгу по ui на русском языке и там очень много текста было о том, как создавать свой ui. Я не смог тогда понять. Первая программа для чтения исходных кодов была на textview и я парсил код и делал из него html теги. Это оказался не лучший вариант. Почитав книгу, я понял что всего то надо наследоваться от одного виджета и переопределить несколько функций. Так я приступил к новой версии программы с нуля.

Читать далее
Total votes 24: ↑5 and ↓19-14
Comments22

Структурное против ООП программирование

Reading time3 min
Views8.4K
Доброго времени суток. В этой статье я хочу показать не то, чем лучше структурное программирование или объектное, а то как нужно писать и там и там. И возможно это послужит выбором для тех, кто только хочет начать программировать и не знает какой язык выбрать и что может быть удобней. Я взял за пример языка C и JAVA.
Читать дальше →
Total votes 25: ↑1 and ↓24-23
Comments26

Поддерживаю драйвер tp-link t4u для linux

Reading time2 min
Views27K
Когда купил wifi адаптер, думал, что будет работать на моей ubuntu 20.04, потому что в числе поддерживаемых систем значился linux. Оказалось, что не работает. Попробовал решения, которые предлагают на форумах, но адаптер так и не заработал. Пришлось вчера и сегодня заняться поддержкой драйвера.
Читать дальше →
Total votes 108: ↑104 and ↓4+100
Comments52

Создаём приложение на gtk

Reading time3 min
Views11K
Я вижу часто отсылки на то, как реализуется то или иное на qt, но gtk тоже хорош. Я пишу на C и не хочу учить каждые три года стандарты C++, чтобы быть на волне. Мне хватает простой сишечки и чтобы делать графический софт, выбор пал на gtk.
Читать дальше →
Total votes 35: ↑28 and ↓7+21
Comments31

Использование подобия паттерна наблюдатель на С

Reading time2 min
Views3K
Недавно вспоминал о том как читал книгу по паттернам проектирования для java и из-за того что я всё также не пойму как это делается по памяти в ооп, решил написать свою реализацию на си.
Читать дальше →
Total votes 16: ↑1 and ↓15-14
Comments30

Встраивание кода и опасность пиратского ПО

Reading time3 min
Views3.7K
О том, как можно встроить код без jmp в секцию кода и остаться незаметным, если не изучать досконально дизассемблированный код. Кому интересно, прошу под кат.
Читать дальше →
Total votes 20: ↑7 and ↓13-6
Comments7
1

Information

Rating
1,286-th
Location
Россия
Date of birth
Registered
Activity