суббота, 18 июля 2015 г.
четверг, 5 марта 2015 г.
custom class loader
https://github.com/kostapc/CustomClassLoader
Java обладает одним свойством, которое иногда очень сильно раздражает разработчиков - она легко декомпилируется. Чаще всего от этого спасаются обфускацией кода, что не решает основную задачу - декомпиляцию, но делает анализ кода демотивирующи сложным, но все же посильным в разумные сроки.
Сама структура организации скомпилированного кода (байт-кода) достаточно проста и уже сама по себе может дать какую-то информацию о приложении без декомпиляции - будь то jar (zip папки, по сути) или просто файлы классов. Более того, даже код, прошедший обфускацию, содержит в скомпилированном виде паттерны, которые могут быть использованы, например, антивирусами.
Чем тут можно сделать? Java позволяет создавать собственный загрузчик классов, где на входе мы получаем бинарный поток данных, а на выходе должны предоставить экземпляр искомого класса. Таким образом, собственно, байт-код может быть закриптован любым способом, на который только хватит фантазии.
Тут приведен самый простой вариант такого загрузчика. Код состоит из 2-х частей:
криптограф - класс, который шифрует байт-код и упаковывает в файл дополнительную информацию, необходимую для загрузки класса.
загрузчик - класс, который загружает закриптованный файл, расшифровывает и запускает метод main(). Таким образом, зашифрованный класс будет запускаться точно также, как и без шифрования.
В качестве шифрования сугубо для примера используется BASE64. Такая пара криптограф-загрузчик позволяет зашифровать и загружать любой скомпилированный класс-файл. Несложная доработка позволит, таким образом, паковать в единый файл целую структуру классов.
---
Изначально статья была написана для interception e-zine
inception e-zine en
inception e-zine ru
Java обладает одним свойством, которое иногда очень сильно раздражает разработчиков - она легко декомпилируется. Чаще всего от этого спасаются обфускацией кода, что не решает основную задачу - декомпиляцию, но делает анализ кода демотивирующи сложным, но все же посильным в разумные сроки.
Сама структура организации скомпилированного кода (байт-кода) достаточно проста и уже сама по себе может дать какую-то информацию о приложении без декомпиляции - будь то jar (zip папки, по сути) или просто файлы классов. Более того, даже код, прошедший обфускацию, содержит в скомпилированном виде паттерны, которые могут быть использованы, например, антивирусами.
Чем тут можно сделать? Java позволяет создавать собственный загрузчик классов, где на входе мы получаем бинарный поток данных, а на выходе должны предоставить экземпляр искомого класса. Таким образом, собственно, байт-код может быть закриптован любым способом, на который только хватит фантазии.
Тут приведен самый простой вариант такого загрузчика. Код состоит из 2-х частей:
криптограф - класс, который шифрует байт-код и упаковывает в файл дополнительную информацию, необходимую для загрузки класса.
загрузчик - класс, который загружает закриптованный файл, расшифровывает и запускает метод main(). Таким образом, зашифрованный класс будет запускаться точно также, как и без шифрования.
В качестве шифрования сугубо для примера используется BASE64. Такая пара криптограф-загрузчик позволяет зашифровать и загружать любой скомпилированный класс-файл. Несложная доработка позволит, таким образом, паковать в единый файл целую структуру классов.
---
Изначально статья была написана для interception e-zine
inception e-zine en
inception e-zine ru
вторник, 15 июля 2014 г.
понедельник, 7 апреля 2014 г.
хм... свет без электричества
wm: вообще ждём технического прорыва, чтобы появились светоколлекторы, которые позволят днём собирать свет и юзать его по мере надобности а не генерить занов в ненужных диапазонах =))))
Для остановки света ученые использовали кристалл из специального материала, который не пропускает свет в нормальном состоянии. Охладив этот кристалл до сверхнизкой температуры, ученые, с помощью луча лазерного света перевели все атомы его вещества в состояние квантовой суперпозиции, в состояние, когда они одновременно могут и не могут пропускать через себя фотоны света определенной длины волны. После этого они запустили другой луч лазерного света сквозь кристалл и отключили его "прозрачность". Фотоны света, находившиеся внутри кристалла, попали в ловушку и сохранялись внутри нее в течение 60 секунд. Используя такой же метод, ученым удалось поймать в ловушку и продержать в ней указанное время три разных луча света, утроив количество информации, хранимой в ловушке.
http://www.dailytechinfo.org/news/5028-uchenym-udalos-ostanovit-svet-i-uderzhivat-ego-v-techenie-60-sekund.html
http://elementy.ru/news/431910?page_design=print
четверг, 3 апреля 2014 г.
воскресенье, 23 марта 2014 г.
iPad mini retina yota
пятница, 8 ноября 2013 г.
MySQL проблемы миграции
Надо было перенести сайт с сервера разработки на хостинг.
Всё вроде бы отлажено и работает. а на хостинге вдруг отказывается и сыпет сообщениями подобного содержания
Warning: mysql_connect() [function.mysql-connect]: Premature end of data (mysqlnd_wireprotocol.c:554) in ... Warning: mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter than expected in ..
Немного побившись головой об клавиатуру, полез разбираться в чём же дело.
А дело оказалось в авторизации, точней в разнице в версия (и настройках) MySQL. Хэши паролей были разной длины. из-за разных механизмов хеширования (О_о).
В итоге всё решается простым запросом, который приведёт хэш к нужному виду
SET PASSWORD = PASSWORD('пароль')
Подписаться на:
Сообщения (Atom)


1. у всех производителей есть диски low-cost под десктопы и различные модели под серверные нужды — надо брать их. При чем они бывают заточены под разные виды данных — потоковая запись/чтение или рандомная запись/чтение.
2. есть материал пластин — стекло (специальное естественно) или алюминиевый сплав. Но это обычно для новых дисков не известно пока кто-то не разберет. Стеклянные обычно быстры и если их не трогать долго пашут, т.к. сама пластина более сбалансирована, но она более хрупкая — от падения 99% загнется.
3. количество пластин. Обычно технология у всех примерно одинаковая ± мелочи. Насколько мне известно сейчас 1tb — 1 пластина у новых дисков. Также играет роль плотность пластины — чем плотнее, тем больше шансов на ББ. 500gb-1tb — оптимальная на сегодняшний день. На вскидку нашел такую инфу: rml527.blogspot.ru/2010/09/hdd-platter-capacity-database.html