Записи с меткой «говнокод»

Всем привет.

Я писал ранее про вопросы изоляции приложений с помощью виртуальных машин и отдельных вайн-префиксов.

И если для банковских приложений подобный подход понятен (и то не всем, многие не готовы жертвовать толикой удобства во имя безопасности), то для игр это может показаться странным. Я же скажу, что такой подход было бы неплохо применять к существенному большинству сетевых приложений.

Например, такая древняя игрушка, как CoD MW2. Под неё есть древний эксплойт более чем пятилетней давности, который и через 5 лет активно эксплуатируется.

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

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

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

Понятное дело, что исповедуемая мной политика нулевой терпимости к подобным руткитам (в приверженности к старым играм есть и свои плюсы 😀 ) не подойдёт активным геймерам, желающим попробовать каждую новинку, да ещё и в сугубо лицензионном её варианте.

Программирующим на JS за еду будут небезынтересны такие штуки:
http://utf-8.jp/public/aaencode.html
http://www.jsfuck.com/

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

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

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

В этой новости прекрасно всё:
http://www.securitylab.ru/news/486429.php

Выбрав подходящий автомобиль, «разведчики» записывали его идентификационный номер (VIN), обычно указанный на панели управления, и передавали его лидеру банды, который затем через Facebook отправлял код слесарям. Согласно судебным материалам, слесари каким-то образом получили доступ к проприетарной базе данных, содержащей коды для замены ключей от различных моделей Jeep Wrangler.

Вахх.

База данных принадлежала одному из мексиканских дилеров Jeep. Каким образом она попала в руки преступников, неизвестно.

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

А вы хотите, чтобы коды сброса паролей к вашей камере, коды открывания вашей тачки и подобные вещи генерировали мексиканские слесари ?

Тогда проприетарный говно-код идёт к вам !   😀 😀

 

Занятнейший, лулзовейший баг в яббл-иос с достаточно лютыми последствиями. Если в ябблодевайсе (iphone, ipad) выставить дату на начало Unix-эпохи — то есть на 1 января 1970 года, то там то ли какие-то даты становятся отрицательными, то ли ещё что-то ломается. 😀 😀 😀

Чудной девайс почти моментально превращается в кирпич, которому не помогают ни ребут, ни включение/выключение, ни даже обновление через кривую анальную сраку itunes + DFU.

Отсутствие полноценно реализованной аппаратной кнопки резета и неизвлекаемый штатным способом аккумулятор не позволяют решить проблему быстро.

Советы от уже опробовавших баг на себе очень занятны:
— запретить в новых версиях иос ставить столь давние даты (sic! всё бы им чего-нибудь запретить 😀 )
— Подождать!!, пока сядет аккум.

Последний совет особенно гуманен. Дело в том, что девайс зависает на этапе «белое яблочко на чёрном экране» — то есть когда радиомодули, графический ускоритель и прочее жрущее энергию железо не активировано. Почти черный OLED-дисплей жрёт не столь много. Так что ждать естественного саморазряда даже тощего аккума из ябблодевайса в такой ситуации придётся долго.

Особенно будет зачётно, если таймер питается не просто от основного аккума, но и дополнительно поддержан от какого-нибудь smd-суперконденсатора — ждать сброса часов придется вечность.

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

P.S. Телеканал «Дождь» рассказал об этом в какой-то очередной педераче. Некоторые долбы сразу же попробовали. Сервис-центры ликуют.

Чрезмерное злоупотребление твиками и любовь переписывать User-Agent с помощью локально установленного сквида / проксомитрона / проксимодо иногда приводят к забавным эффектам на некоторых сайтах.

Так, открыв однажды один сайт, обнаружил вот такое вот сообщение об ошибке:
Server Error in ‘/’ Application.


Cannot insert the value NULL into column ‘BrowserID’, table ‘for_site.dbo.STAT_Browsers’; column does not allow nulls. INSERT fails.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Cannot insert the value NULL into column ‘BrowserID’, table ‘for_site.dbo.STAT_Browsers’; column does not allow nulls. INSERT fails.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[SqlException (0x80131904): Cannot insert the value NULL into column 'BrowserID', table 'for_site.dbo.STAT_Browsers'; column does not allow nulls. INSERT fails.]
ISPS.BLL.ClientServiceWithStatistics.WriteStatistics(PageAuditInfo PgInfo) +106
ISPS.Global.Session_Start(Object sender, EventArgs e) +1215
System.Web.SessionState.SessionStateModule.RaiseOnStart(EventArgs e) +2163150
System.Web.SessionState.SessionStateModule.CompleteAcquireState() +154
System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData) +542
System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +90
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155


Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.42




Оч-чень, оч-чень интересно.