понедельник, 30 января 2023 г.

О «Фундаментальных основах…»

Юрий «yurembo» Язев


Чуть более месяца назад вышла книга «Фундаментальные основы хакерства. Анализ программ в среде Win64».


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

Изначально в обновленном издании первые шесть глав были посвящены анализу 32-битных программ. При этом остальные 21 главы — 64-битных. Однако Nik Zer0 — один из наших авторов в журнале «Хакер» обратил внимание, что подзаголовок книги: «Анализ программ в среде Win64», следовательно анализировать 64-битные приложения 
надо на протяжении всей книге.

У меня и раньше была идея переписать первые шесть глав, но руки до этого так и не доходили, поскольку была работа над другими частями книги. А тут Nik указал на явное не соответствие между обещанным и представленным. Я решил это обязательно исправить — переписать первые шесть глав. Между тем материалы уже были отправлены в издательство, и книга со дня на день уже должна быть напечатана в типографии.

Я написал издателю e-mail о том, что хочу внести изменения в текст и макет книги. Издатель согласился на это мероприятие, тем самым фактически остановив печатный станок.

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

Тем не менее, пятая глава, в которой работа ведется под виртуальной машиной в 32-битной Windows XP, где анализу с помощью IDA Pro подвергается 16-битный COM-файл, не претерпела крупных изменений. Зато главы с первой по четвертую и шестая переписаны почти полностью. Можно сравнить текст книги со статьями на сайте Хакера, где опубликованы старые версии глав.

воскресенье, 25 сентября 2022 г.

 GCC — 2022


Юрий "yurembo" Язев
независимый игродел

23-24 сентября в Перми в здании Morion Digital прошла конференция разработчиков видеоигр Game Construct Conference 2022. Никаких завлекающих вывесок перед входом не имелось. Опознать, что здесь проходит какое-то общественное событие, можно было только по кучке тусующихся у входа людей.

Внутри для проведения мероприятий конференции было выделено три зала. Промо девушек тоже не было.

Войдя в помещение, попадаешь в центральный самый просторный зал, где разместились стенды и столы участников. 

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

Слева от входа за дверью находился зал для презентаций и докладов. Доклады проходили только в один поток по полчаса каждый.

Зал справа ничем особо не отделенный от центрального зала предназначался для общения и буфета. 

Рядом за дверью расположилась комната для проведения Круглых столов.

Походив по залам и пообщавшись с участниками, я узнал, что представителей из Перми и других участников из прикамья совсем мало. Исключение составила пермская Мортёшка. Она на Ярмарке проектов демонстрировала игру “Лихо”. А больше никого пермских и не было. Кстати, Мортёшка победила в двух номинациях.

Стенды занимали компании из Питера, Тольятти. В Ярмарке проектов были игры от разработчиков из Москвы, Питера, Екатеринбурга и Калининграда. Пообщались и сфотографировались с Романом Сакутиным. Он привез из Питера целую команду своей компании ЯЮниор.

Между тем, приятно, что в Перми проводятся конференции для разработчиков игр. До уровня международных конференций, проводимых в Москве, не дотягивает ни количеством,  ни массой, ни масштабом. Тем не менее, по качеству проведения конференция получилась довольно неплохая: удалось пообщаться со множеством единомышленников из разных городов. Сейчас, когда по политическим причинам большие конференции, наподобие DevGAMM’а в России не проводятся, такие локальные gamedev-мероприятия очень важны и нужны.

В конце второго дня в зале для докладов произошло награждение. Во всех номинациях определили победителей: лучшая игра, свежая идея, лучшая мобильная игра, лучшая PC-игра, MGVC Award, Teamplay Publishing Award.

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

  1. Надо делать web-версии игр для соц. сети ВКонтакте. Тем самым получить дополнительный трафик + рекламу.
  2. Мобильные и ПК-игры релизить в VK Play. Этот шаг хорошо использовать для обкатки игры перед релизом в Steam или других больших сторах.

воскресенье, 11 сентября 2022 г.

 Переименовать локальный коммит в git

I'm imaging now that you tried to use git revert to undo the commit but it ends you up with additional commit, Here is a solution for you. use git log --oneline to show you your logs, You gonna find the commit with wrong message, Besides it you gonna find its hash (like 53fnd3w) copy it then type

git reset --hard <paste-the-hash>

This will lead you to go back to that commit, after that if you wanna just change the name of the commit use

git commit --amend -m "New commit message"

This gonna make you change the name of the latest commit which is the one you are standing on, But if you want to undo these changes because you want to divide them on two commits or something, Use

git reset HEAD^

This gonna return you back for the commit that is previous of the current one with changes un-committed, Once you make a new commit it will ignore the commits after HEAD^ and you gonna see only the new commit when you make

git log --oneline

среда, 7 сентября 2022 г.

Велозагон до деревни Казаево

Путешествия по Чусовскому району


Юрий «yurembo» Язев


Почему именно деревня Казаево, ведь вдоль Чусовой находится множество деревень и сел? Сначала я не собирался ехать ни в какую деревню, в мои планы даже не входило ехать вдоль Чусовой. Но азарт преодоления нового расстояния, любопытство увидеть новые населенные пункты. Пускай, они расположены относительно рядом с местом, где я живу. За всю жизнь не было нужды в них побывать.


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


Наконец-то, закончилось лето. Я рад ни тому, что закончился временной промежуток, а тому, что закончился летний сезон. Спала жара. На термометре было 12 градусов, переменная облачность. 


Я стартовал с Красного поселка, хотел сделать круг по Северному широтному коридору (объезд краснопоселковской дороги смерти) и на этом успокоиться. 

Велозагон от Красного поселка к Каспию-2

Путь от Красного поселка до развилки на пермскую дорогу представляет интересный маршрут продолжительностью примерно 13 км. Стоит от Красного поселка подняться в гору, как за поворотом растягивается длинная прямая дорога с небольшим контруклоном, который можно преодолеть со скоростью 11-15 км/ч. После кольца и 90-градусного поворота налево начинается постепенный спуск по объездной дороге, скорость местами достигает 50 км/ч. Когда спуск заканчивается, начинается прямой участок с двумя мостами через реки Вильву и Усьву, между ними находится путепровод над железной дорогой. Если во время спуска хорошо разогнаться, то этот участок проходится на высокой скорости без затруднения.

Мост через Усьву

Сразу после усьвинского моста начинается затяжной подъем. Он длится до отворота на пермскую дорогу. Преодолев его, я остановился у Каспия-2, передохнуть, водички попить и провести небольшое тех. обслуживание велосипеда. +13 км.


«Как-то это было совсем легко, надо еще куда-нибудь съездить» — подумал я, уже двигаясь в сторону Лисиков. Передо мной возник указатель на деревню Саламатово, свернем сюда. Рядом с указателем сидел маленький собачонок породы Пекинес, ухоженный и с ошейником. Однако хозяина рядом видно не было.

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

Цилиндры скошенной травы

Спуск стал совсем крутой. Внизу него на указателе было написано, что от этого отворота расстояние до д. Саламатово 0,5 км. Взглянув в том направлении, я увидел пять домиков. Решил туда не ездить, а продолжить следование по брусчатке. При медленном движении по ней со скоростью ниже 15 км/ч передние амортизаторы успевают сгладить перепады между камнями. При быстром движении, например, под горку, когда скорость превышает 30 км/ч, ощущаются резкие удары в руки. Со спиной при езде по брусчатке — беда. У меня велик типа, hard tail, то есть без заднего амортизатора. Поэтому каждый камень отдается в пояснице. 

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


За следующим поворотом надпись на табличке извещала о въезде в село Верхнее Калино. 

Въезд в Верхнее Калино

Внутрь села я заезжать не стал, проехав с его краю по улице Набережной. Между тем, Верхнее Калино — довольно большой обособленный населенный пункт по сравнению с последующими. В центре села находятся объекты социальной инфраструктуры: школа, детский сад, дом досуга. В последнем помимо дома досуга располагаются: дом культуры, сельская библиотека и администрация села. К зданию прилегает широкая территория, огражденная забором. 


Пару раз меня обгоняла или попадалась на встречу газель с надписью «Дети». Очевидно, из близлежащих деревень, где нет школ, в Верхнее Калино привозят детей на учебу. А потом развозят обратно. До чего дошел прогресс.

Верхнее Калино постепенно перетекло в деревню Мичурино, где я продолжил следовать по улице Набережной по его краю. На самом деле там явная граница в виде реки Брусун, но эту реку не сразу признаешь рекой, ручеек какой-то.


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

Нижнее Калино

На последнем отрезке от Нижнего Калино до деревни Казаево у меня свело ногу, и я задумался над тем, что пора поворачивать назад. 

Техасские прерии в чусовском районе

Пока я думал над этим, по мостику пересек реку — ручеек Брусун. Что он делает между Верхним Калино и Мичурино для меня остается загадкой, поскольку, судя по карте, он протекает здесь. Между делом въехал в Казаево, где за мной погналась собака, но так и не догнала. Доехав до конца деревни, я сделал конечную остановку, отдохнул.

Здесь ощущается «глубокая» деревня. Пасутся козы, мычат коровы, удивленно на меня смотрят гуси, беспричинно ходят курицы. На реке умиротворенно рыбак ловит рыбу. В остальном, тишина. 

Тут меня догнал автобус №322 и, гордо обогнав, последовал в Кучино. Я же развернулся и уже на пониженной скорости, особо не обращая внимания на окружение, покрутил педали в сторону базы. +15 км.



Путь до Саламатово протекал без проблем — по прямой. Сделав у поворота последнюю фотографию, понравились мне цилиндры из сена, я устремился в длинный и поначалу довольно крутой подъем.

Во время спуска по брусчатке к главному шоссе на большой скорости ручки руля выскальзывали из рук от усталости. Пришлось снизить скорость. +15 км.


От отворота на Саламатово до Красного поселка предстояло проехать еще 5 км. На въезде в Чусовой, уже в Старом городе, после моста через Усьву установлена табличка-указатель, где белым по синему написаны названия населенных пунктов: Соликамск, Порнозаводск. Половина буквы "П" закрашена синим штрихом.


+5 км. 

В итоге, 48 км.

воскресенье, 31 июля 2022 г.

Про ассемблер – 2 (GameDev)


Юрий "yurembo" Язев


Рассмотрим, как кроме языков высокого уровня применялся и до сих пор применяется ассемблер в разработке видеоигр. Это покажет общую тенденцию в направлении к универсальности и упрощению в области разработки ПО.


Вернемся в начало 80-х. Хэви метал, секс, наркотики, множество аппаратных несовместимых между собой платформ, компьютеров: Apple 2, Atari, Amiga, Commodore, IBM PC, Macintosh, еще больше разнообразных игровых консолей — неразбериха в духе времени. Не было защищенного режима и это не про секс. Программы выполнялись в реальном режиме процессора. Программисты имели неограниченный доступ к аппаратным средствам компьютера, и никто не стоял у них на пути: ни процессор, ни операционная система. Чтобы управлять всем этим богатством, необходимо было знать ассемблер, иначе всю мощь из компьютера не выжмешь, а он и так слабенький!


Игры в то время практически целиком писались на ассемблере, — не было ни графических, ни физических библиотек и фреймворков, ни тем более игровых движков. Время шло, появился процессор x386. В нем был реализован защищенный режим, поддержка виртуальной памяти и некоторые другие привычные нам фичи. Использование этих возможностей программистами и их реализация в операционных системах случилась далеко не сразу. Тем не менее, со скрипом и тормозами к выходу Windows 95 все более или менее освоились с защищенным режимом. Каждый процесс теперь располагал виртуальными 4ГБ памяти, все устройства обеспечивались драйверами, управляемыми операционной системой, поэтому лезть на уровень ядра прикладному программисту уже не надо и не имело смысла. Тем временем язык ассемблера перешел из разряда обязательных инструментов к специфическим.


Игроделам такой расклад не понравился, так как защищенный режим не позволял им напрямую обращаться к аппаратуре и выжимать из нее всю мощь. Поэтому они продолжили разрабатывать игры под MS-DOS. Благо Windows располагала полной совместимостью с последней. Уже это не понравилось Microsoft. Они быстренько купили разработчиков Game SDK, переименовали пакет в DirectX SDK и стали его развивать. DirectX SDK позволил разработчикам игр из защищенного режима приблизиться к устройствам — работать с ними на более низком уровне с помощью языков высокого уровня. Игроделы обрадовались, забросили ассемблер и стали его применять только в самых критичных ко времени исполнения вычислениях. Microsoft тоже осталась довольна, так как разрастающаяся библиотека игр способствовала популяризации их новой операционной системы. 


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


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


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

пятница, 22 июля 2022 г.

Про ассемблер


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


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


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


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

пятница, 1 июля 2022 г.

Как питчить игры игрожуру

(из рассылки InGameDev за 01.07.22)


GamesIndustry.biz поговорил с журналистами из IGN, Rock Paper Shotgun, Polygon, Gayming Magazine и других изданий, чтобы выяснить как сделать так, чтобы они написали о вашей игре.

Анна Диас (Ana Diaz), автор Polygon: «Я не пишу для разработчиков, я пишу для своего 20-летнего кузена, который наиграл тысячу часов в Fortnite и может позволить себе до двух игр в год; для людей из TikTok, одержимых обустраиванием своих островков в Animal Crossing. Это не значит, что я не хочу освещать инди релизы, но нашу аудиторию очень сложно заставить их читать. Но не все потеряно!»

• Начните с элементарных вещей •

Прежде чем приступать к активной фазе пиара, убедитесь, что информация о вашей игре уже представлена в Интернете и находится в свободном доступе. Начать можно с контактной информации на сайте. «У инди часто нет вебсайтов!», – возмущается замглавред Гализ-Роу из Gayming Magazine, «И обновляйте его! <…> По возможности уделяя место и прочим работам студии», – вторит Элис Белл из Rock Paper Shotgun.

Нет игрожуру больше радости, чем сформированный пресс-пакет из аннотации, выпускных данных, отобранных скриншотов и логотипа на прозрачном фоне. Репортер из IGN просит, чтобы изображения не были гигантскими и были представлены без маркировок / надписей, лучше даже и без UI.

Если ваша игра играется вертикально, все равно подготовьте горизонтальные иллюстрации.

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

Блоги – это хорошо, когда хочется получить дополнительной информации, но они не должны заменять собой сайт.

• Смотрите, с кем разговариваете •

У изданий существует специализации, прежде чем обращаться к редактору издания КишкиХардкорПК4лайф.jp, ознакомьтесь с политикой издания в отношении выбранного вами жанра и платформы, а также то, что вы обращаетесь к правильному человеку.

«Я – репортер, а мне присылают письма с просьбой написать превью или рецензию», – жалуется Ребекка Валентайн из IGN.

Анна Диас советует использовать персонализированный адрес почты, чтобы повысить свой шанс на ответ. Она также добавляет, что не стоит ждать мгновенных результатов, «В девяти случаях из десяти они обращаются в неподходящее время – писать об их игре пока нет смысла, но мы берем ее на заметку».

• Налаживайте контакт правильно •

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

В любом случае, нужно быть кратким и говорить по делу, предоставляя ссылки на соответствующие ресурсы – социальные медиа, официальный сайт, трейлеры, демо и т.п.

Тема письма – крайне важна. Тут уже вам придется поиграть в журналиста и придумать хороший заголовок, или, как говорят профессионалы, – «крючок». Ubisoft и Xboxмогут по этому поводу не запариваться, их имя уже обращает на себя внимание, но маленьким инди придется поднапрячься. Некоторые советуют использовать понятные аналогии, чтобы быстрее сформировать представление об игре, к примеру, «Doom + Animal Crossing».

Некоторые собеседники изъявили желание получать письма с картинками. Ну или хотя бы со стишками.

Важно обратить внимание на каком этапе находится ваша пиар-кампания:
Анонс
Превью
Ревью
Лонч
Пост-лонч (апдейты и DLC)

• План идеального питча •

И Белл, и Валентайн представили схожий план успешного питча:
Хороший крючок в теме;
Краткое представление: кто вы (уж не создатель ли чего-то примечательно?), откуда, когда релиз и для каких платформ;
Одно предложение о том, что вы питчите;
Изображение или гифка, чтобы было понятно, как это выглядит;
Более подробное описание. Абзац о том, как это играется, что в этом интересного. Если ваша студия чемм-то отличается от прочих, об этом стоит сказать.
Прощания со ссылками на ассеты, в том числе демку, если такая имеется.

• Красные флаги •

«Письма, составленные под копирку, сразу отправляются в корзину, – угрожает Калиф Адамс из подкаста Spawn On Me, – Вы должны дать понять, почему вы решили обратиться именно к нам. Мы – достаточно нишевое издание и нам важно понимать, что мы можем вам предоставить».

Белл предупреждает, что краткий сухой текст с кучей ссылок имеет все шансы не пройти спам-фильтр.

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

«И нам не нужны ключи, если мы их не запрашивали», – расшатывает основы основ игрожура Гализ-Роу.