Обновить
-6
Алексей@java3000

Администратор windows умеющий в программирование

Отправить сообщение

Грязные решения в реверс-инжиниринге

Время на прочтение7 мин
Охват и читатели30K
image

Перед разработчиками довольно часто встаёт выбор — сделать всё правильно, потратив на решение задачи уйму времени, или сделать так, чтобы работало, не особо вдаваясь в детали того, как именно это получилось. Со стороны заказчика, разумеется, наиболее привлекательной является некая золотая середина, которая в данном случае заключается одновременно и в хорошем понимании программистом выполненного таска, и в как можно меньшем количестве затраченных на него человеко-часов. С разработчиками тоже не всё так однозначно — с одной стороны, понимать, что происходит в своём собственном коде, это вполне естесственное желание (особенно если поддержка данного продукта также будет лежать на его плечах), а с другой стороны, если результаты работы приложения представлены в наглядном виде (графики / звуковые или видео-фрагменты etc), разработка разовая, и отдел тестирования говорит, что всё хорошо, то почему бы не проскроллить оставшуюся часть рабочего времени Хабр, посвятив время себе любимому?

Ближе к делу. В одной из предыдущих статей я уже упоминал о программе под названием «Говорилка». Несмотря на название, сама по себе она ничего не озвучивает, а лишь является связующим звеном между пользователем и речевыми движками, предоставляя более удобный интерфейс и возможность конфигурации. Одним из наиболее популярных в узких кругах движков является «Digalo 2000 text-to-speech engine» (далее — Digalo), ссылку на который можно найти как раз на сайте «Говорилки». Как вы уже, наверное, догадались из тематик моих предыдущих статей, не всё с ним так хорошо, и без багов тут также не обошлось. На этот раз проблема проявилась при озвучивании текста «ааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа». Немного поэкспериментировав, я обнаружил, что при достижении определённого количества «неразрывных» символов Digalo начинает крашиться, предлагая отладить свой процесс. Ну, а что, почему бы и нет?

Как протекал процесс, и что из этого вышло, читайте под катом (перед прочтением данной статьи я настоятельно рекомендую ознакомиться с предыдущими, которые можно найти, например, тут).
Читать дальше →

Разработка ММО РПГ – практическое руководство. Сервер (часть 2)

Время на прочтение14 мин
Охват и читатели25K
Рерурс литий
  • Реализация AI: как сделать максимально просто?
  • RPC клиент-сервер: json или бинарная «самопальщина»?
  • Асинхронные сокеты или многопоточная архитектура?
  • Кеширование объектов на уровне приложения или больше памяти для СУБД?
  • Работа с БД без Reflection API: действительно ли это так сложно?

        Сегодня мы продолжим рассматривать архитектуру и особенности реализации игрового backend'а на С++ для онлайн игры на примере ММО РПГ «Звездные Призраки». Это вторая часть статьи про сервер, начало можно прочитать здесь.
Далее

На пути к правильным SQL транзакциям (Часть 2)

Время на прочтение7 мин
Охват и читатели61K


В предыдущей части были рассмотрены основы уровней изоляции транзакций. Здесь я постараюсь копнуть чуть глубже и рассказать при помощи каких инструментов MS SQL Server реализует уровни изоляции.

Как вы могли видеть в предыдущем разделе, существует два способа поддержания изоляции:
  • Основанный на блокировке ресурсов
  • Основанный на создании версионной копии ресурсов.

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

На пути к правильным SQL транзакциям (Часть 1)

Время на прочтение6 мин
Охват и читатели160K


Мне часто приходилось сталкиваться с тем, что люди прекрасно понимают, что такое транзакции в базе данных и для чего они нужны, но при этом не всегда умеют ими правильно пользоваться. Безусловно, для достижения 80-го уровня сакрального знания нужно иметь не один год опыта и прочесть множество толстенных книг по SQL. Поэтому в этой статье я даже не буду пытаться описать всё, что может быть связано с транзакциями в MS SQL. Я хочу затронуть один простой, но очень важный вопрос, который разработчики часто упускают из вида – уровни изоляции транзакций.
Несмотря на то, что тема очень проста, во многих источниках она освящается плохо – информации либо очень мало, либо очень много. Т.е. прочитав 5-6 кратких теоретических определений невозможно их применить на практике. Для уверенного понимания предмета статьи нужно обращаться к специализированной литературе, но там информации на столько много, что далеко не каждый может уделить необходимое время для её усваивания.
Сегодня я хочу поделиться своим простым рецептом, который помог мне раз и на всегда запомнить особенности уровней изоляции транзакций и по сей день помогает без проблем принимать взвешенные решения о выборе необходимого уровня.
Читать дальше →

Открытые правоохранительные данные — статистика и данные по каждому преступлению

Время на прочтение2 мин
Охват и читатели16K
Когда мы говорим про открытые данные, те которые публикуются не для проформы, не для каких-то пиар акций государства, а про те которые «настоящие», которые касаются качества жизни каждого из нас, которые касаются окружающей среды — человеческой, инфраструктурной и бытовой, то речь заходит о нескольких важнейших направлениях открытости государства.

Это такие направления как:
  • данные о состоянии окружающей среды: качество воздуха, состояние почвы, качество воды, результаты проверки продуктов питания, очагах болезней, загрязняющем шуме и многое другое.
  • данные о качестве образования (средние баллы ЕГЭ по школам), средние зарплаты выпускников ВУЗов и многое другое;
  • данные о качестве работы учреждений здравоохранения. Процент успешных операций на сердце, муниципальная статистика по видам болезни, данные по причинам смертности и многое другое
  • данные о деятельности правоохранительных органов. Это статистика с детальностью до подразделения и деперсонализированная информация по каждому преступлению


Практически все эти наборы данных описаны в хартии открытых данных большой восьмерки и все они считаются наиболее важными и приоритетными для граждан.

Остановимся подробнее на правоохранительных данных.

Их особенность такова что в разных странах по разному осуществляется выполнение правоохранительных функций. Если в России или в Великобритании полиция является единой структурой вертикального подчинения, то в США существует множество полицейских управлений на уровне отдельных штатов и отдельных графств.

Если в некоторых странах существуют отдельные ведомства по анализу криминальной статистики, то в других это всё является частью функций полицейских управлений и прокуратуры.

В США совсем недавно Барак Обама создал специальную инициативу Police Data Initiative как раз по повышению качества открытости полицейских департаментов.
Читать дальше →

Анализируем необычные прошивки: разбор конкурса Best Reverser

Время на прочтение7 мин
Охват и читатели15K


Когда мы придумывали задание для конкурса по обратной разработке, который состоялся на форуме PHDays V, то хотели отразить реальные проблемы, с которыми сталкиваются специалисты по RE, но при этом старались избежать шаблонных решений.

Как обычно выглядят задачки на реверс? Есть исполняемый файл под Windows (или Linux, или MacOS, или другую популярную операционную систему), его можно запускать, смотреть под отладчиком, крутить как угодно в виртуальных средах. Формат файла — известный. Система команд процессора — x86, AMD64 или ARM.

Библиотечные функции и системные вызовы — задокументированы. Доступ к оборудованию — только через механизмы операционной системы.

С использованием существующих инструментов (например, IDAPro с HеxRays и всеми сопутствующими возможностями) анализ подобных приложений становится практически детской забавой: все получается просто и быстро.
Читать дальше →

10 роковых ошибок юзабилити интернет-магазинов и кое-что ещё

Время на прочтение12 мин
Охват и читатели51K
«Не бойся первой ошибки, избегай второй», – учит нас народная мудрость. А другая прямолинейно указывает на то, кто учится на своих ошибках, а кто – на чужих. Тем не менее разрабатывая интернет-магазин ошибиться довольно просто. Особенности аудитории, нюансы в организации сайта и форм страниц порой только и можно постичь единственно верным методом проб и ошибок.


Читать дальше →

CIFS в Android, или как я файлы с разбитого телефона доставал

Время на прочтение9 мин
Охват и читатели29K
Так получилось, что я разбил экран у своего любимого Nexus 4. Первой мыслью было «Чёрт! Теперь я буду как один из этих нищебродов, с разбитым экраном!». Но, видимо, создатели Nexus 4 были ярыми противниками нищебродства, так как вместе с разбитым экраном, полностью отказал сенсорный экран. В общем, ничего страшного, отнести телефон в ремонт и все. Однако, на телефоне были файлы, которые нужны были мне прямо сейчас, а не через пару недель. Но вот получить их представлялось возможным только при разблокированном экране, телефон требовал ввод “супер секретного” жеста и категорически не хотел работать как внешний накопитель.



Немного покопавшись с adb я плюнул на попытки разблокировать экран через консоль. Все советы по взлому экрана блокировки требовали наличие рута, а мой телефон не из этих. Решено было действовать изнутри. Выбор пал на библиотеку JCIFS, так как раньше мне уже приходилось работать с ней и проблем в её использовании не возникало.
Читать дальше →

Руководство по оптимизации сайтов для начинающих. Часть 2

Время на прочтение6 мин
Охват и читатели15K
Часть 1

Процесс оптимизации


Установить в организации хорошо прописанный и формальный процесс оптимизации – это очень полезная практика, поскольку она:

  1. организует рабочий процесс и задаёт реальные сроки окончания
  2. устанавливает стандарты контроля качества и уменьшает количество ошибок
  3. добавляет веса всей операции – логику процесса можно объяснить владельцам компании


На общем уровне планирования я бы рекомендовал устраивать совещания по планированию оптимизации 1-2 раза в неделю, на которых необходимо:

  1. Просмотреть текущие тесты, чтобы понять, нужно ли их остановить или признать «завершёнными» (см. ниже). Для законченных тестов есть две возможности:
    1. есть явный победитель. В этом случае необходимо разработать его вывод в продакшн
    2. нет явного победителя в текущей контрольной группе. В этом случае нужно определить, требуется ли дополнительное изучение вопроса, или же нужно просто прекращать эксперимент.

  2. Рассмотреть источники данных и подумать над новыми идеями для тестов
  3. Обсудить и назначить приоритет любым новым идеям.


Как же понять, когда тест завершён?


Критерии завершённости – вещь сложная и даже являются коммерческими секретами. Определю минимальные необходимые условия для объявления теста «завершённым». Общепринятых стандартов не существует, и критерии зависят в основном от представлений вашей команды. Мы для себя выработали следующие критерии:
Читать дальше →

Как внедрить баннеры в Android приложение не перекрыв другие элементы

Время на прочтение6 мин
Охват и читатели18K
Баннеры – один из наиболее популярных видов рекламы в мобильных приложениях. Они не занимают много места, как, например, полноэкранная (interstitial) реклама. И позволяют совместить их с элементами пользовательского интерфейса приложения. Их можно добавить на разные экраны в приложении.

Прочитав данную статью, вы узнаете, как лучше вставить баннеры таким образом, чтобы они не мешали пользователю и не портили вид приложения. При этом вам не придётся изменять layout xml и вносить много изменений в код приложения. Вы можете внедрить баннеры в своё готовое приложение, добавив всего несколько строк кода. Подход, описанный в статье, универсальный, вы можете использовать его для API любых рекламных сервисов. Статья будет интересна как для новичков, так и для опытных разработчиков. Если вы — новичок в разработке, то для того, чтобы понять предмет статьи, от вас не потребуется каких-либо глубоких знаний. Достаточно понимания базовых концепций разработки под Android. А опытные разработчики могут найти в ней готовое решение, которое они могут внедрить у себя. Но инициализация рекламного сервиса, работа с конкретными рекламными API и кеширование находятся за пределами данной статьи. Для решения таких вопросов, пожалуйста, обратитесь к руководству для вашего конкретного рекламного сервиса.
Читать дальше →

Получение международных ИТ сертификатов

Время на прочтение7 мин
Охват и читатели65K
Для многих ИТ специалистов, да и не только для них, лето – это время, когда можно не только хорошо отдохнуть, съездить в отпуск, разобраться с отложенными в дальний ящик делами, но и …поучиться. А логичным завершением обучения является сдача экзаменов. Именно об этом данная статья.

В данной статье я хочу поднять тему сдачи экзаменов сертификации. Вы спросите каких? Да почти любых. Хотите подтвердить свои знания в области построения инфраструктуры Microsoft? Нет проблем. Собираетесь наконец сдать пару экзаменов по Cisco? Не беда. Много лет занимаетесь аудитом информационной безопасности и ещё не имеете сертификата CEH (Certified ethical hacker)? Найдется и для вас несложный способ сдачи данного сертификата.



Конечно, для людей, сдающих экзамены достаточно давно, я ничего нового не расскажу. Но мы ведь в песочнице, поэтому… вперед.
Читать дальше →

Обзор способов и протоколов аутентификации в веб-приложениях

Время на прочтение18 мин
Охват и читатели727K


Я расскажу о применении различных способов аутентификации для веб-приложений, включая аутентификацию по паролю, по сертификатам, по одноразовым паролям, по ключам доступа и по токенам. Коснусь технологии единого входа (Single Sign-On), рассмотрю различные стандарты и протоколы аутентификации.

Перед тем, как перейти к техническим деталям, давайте немного освежим терминологию.

  • Идентификация — это заявление о том, кем вы являетесь. В зависимости от ситуации, это может быть имя, адрес электронной почты, номер учетной записи, итд.
  • Аутентификация — предоставление доказательств, что вы на самом деле есть тот, кем идентифицировались (от слова “authentic” — истинный, подлинный).
  • Авторизация — проверка, что вам разрешен доступ к запрашиваемому ресурсу.


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

Аналогично эти термины применяются в компьютерных системах, где традиционно под идентификацией понимают получение вашей учетной записи (identity) по username или email; под аутентификацией — проверку, что вы знаете пароль от этой учетной записи, а под авторизацией — проверку вашей роли в системе и решение о предоставлении доступа к запрошенной странице или ресурсу.

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

IaaS для стартапа: Сотрудничество с сетью постаматов PickPoint

Время на прочтение3 мин
Охват и читатели11K
Совсем недавно мы делились кейсом переноса ИТ-инфраструктуры проекта Hotels.ru в облако нашего IaaS-провайдера. Сегодня мы рассмотрим еще один пример сотрудничества с российским сервисом — речь идет о сервисе автоматизированной доставки PickPoint.

Читать дальше →

Битовое кунг-фу, или Как оптимизировать трафик между мобильным приложением и сервером

Время на прочтение7 мин
Охват и читатели14K

Старо как мир…


Люди всегда стремятся быть в курсе последних событий. Благодаря этому стремлению возникло много media, которым необходимо собственное мобильное приложение для доставки контента своим читателям. Так в магазинах появилось великое множество новостных приложений. Сотни приложений для чтения новостей, газет и журналов.


Читать дальше →

Создание игры на Blend4Web. Сцена и окружение

Время на прочтение7 мин
Охват и читатели13K
В наше время первопроходцем быть трудно, ибо совсем мало осталось областей деятельности для пытливого ума. «Эка, загнул», — скажете вы и, возможно, подумаете о скромности автора. Что ж, отрину философские, занудные тексты и начну повествование на нормальном языке.

Есть WebGL — универсальная технология для веб. Есть Blend4Web — платформа для работы с технологией WebGL. Есть документация и примеры работы с этой платформой, но совсем нет игр.

«Совсем?»
«Увы, совсем».

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

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

Разбор форматов: 3d-модели изнутри

Время на прочтение2 мин
Охват и читатели38K
image

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

Разбор форматов: упакованные хешированные ресурсы

Время на прочтение9 мин
Охват и читатели20K


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

Рассмотрим это на примере довольно редкого движка bitsquid. Он простой и компактный, но, тем не менее, имеет все необходимые для современных игр возможности. В прошлом году bitsquid вместе с его разработчиком был куплен компанией Autodesk, и теперь они собираются скрестить его с Maya и сделать свой собственный игровой движок, который, как они обещают, будет чем-то невероятным.
Читать дальше →

Диагностика почтовых протоколов

Время на прочтение16 мин
Охват и читатели142K
Эта статья о методах диагностики почтовых протоколов. Она предназначена для начинающих администраторов, желающих больше узнать об инструментах для быстрого тестирования авторизации/отправки/приема почтовых сообщений как сервером, так и клиентом. Но также может служить хорошей памяткой соответствующих команд и для более опытных администраторов.

Материал разбит следующим образом:

1. Введение
2. Примеры сессий
3. Проверка авторизации на сервере (LOGIN, PLAIN, CRAM-MD5), Base64
4. Проверка шифрования SSL/TLS
5. Анализ почтового трафика при помощи tshark. Расшифровка SSL/TLS
6. Ссылки на материалы



Читать дальше →

Налоговый суслик. Особенности упрощенной системы налогообложения при работе по договорам с Apple, Google и другими

Время на прочтение46 мин
Охват и читатели54K
В данной статье я постараюсь провести краткий юридический ликбез для разработчиков по некоторым положениям Гражданского кодекса, имеющим значение в контексте деятельности индивидуальных предпринимателей и организаций, применяющих упрощенную систему налогообложения, в работе по договорам с Apple, Google и другими компаниями, а также обратить внимание на некоторые не всегда очевидные налоговые нюансы, которые, как показал личный опыт изучения данной темы, довольно часто ускользают от внимания разработчиков или вызывают множество вопрос и споров.

Прочтите внимательно эту статью, если вы применяете упрощенную систему налогообложения с объектом налогообложения «доход» по ставке 6 процентов и продаете игры или приложения в Google Play, Apple App Store, а также прочий цифровой контент — например, 3D-модели — в Steam, Unity Asset Store или на других площадках, в условиях договоров с которыми фигурируют комиссии, агентские вознаграждения и прочие формы разделения выручки между сторонами.

Из материала вы узнаете:

  • Почему разработчику желательно обладать хотя бы базовой юридической грамотностью
  • Чем с точки зрения Гражданского кодекса являются игры и приложения и какие права на них есть у разработчиков помимо авторского права
  • Что такое агентский договор и почему все это важно при работе по договору с Apple или Google
  • Кто такой налоговый суслик и почему он может превратиться в пушного зверя
  • Какой «подвох» существует для применяющих «упрощенку» в части определения налоговой базы
  • Почему налог на добавленную стоимость (НДС) продолжает преследовать нас, даже когда мы не являемся его плательщиками
  • Как, с точки зрения Федеральной налоговой службы, облагаются НДС внутриигровые покупки (InApp Purchases)
Покажите мне суслика!

Автоматический поиск роутеров со стандартными паролями

Время на прочтение4 мин
Охват и читатели62K
Недавно мне пришла в голову банальная мысль, что большинство людей кладут на настройку своих роутеров, и на них можно зайти по дефолтным паролям. А много ли таких роутеров вдобавок открыты для входа из интернета, что делает их проходным двором? И как это по-быстрому проверить?

Итак, задача: просканировать какую-нибудь подсеть и найти уязвимые роутеры.

Условия выполнения: не более нескольких часов (на дворе всё-таки лето), используя только стандартные средства системы Linux. Да, я в курсе про проекты типа Kali и вагоны «хакерского» софта в них, но найти нужную программу, которая сделала бы это прямо «из коробки» мне сходу не удалось, а время-то идёт… Да и интереснее самому.

Первая мысль, которая приходит в голову: сканировать nmap'ом по открытому 80 порту. Но что делать с огромным зоопарком веб-морд? Ведь цель — не написать универсальный комбайн-уничтожитель роутеров, а небольшой proof-of-concept. А нет ли какой-нибудь унифицированной системы авторизации на роутерах? Конечно же есть — Telnet! Начинаем!
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Десктоп разработчик, Администратор серверов
Младший
От 110 000 ₽
Java
Java Spring Framework
RESTful WebServices.
PostgreSQL
SQL
Hibernate
Linux
Базы данных
Microsoft SQL Server
Разработка программного обеспечения