Pull to refresh
  • by relevance
  • by date
  • by rating

XmlSerializer — Assembly Leak без спроса :)

.NET *

Коротко о главном


В некоторых частях .NET Framework, таких как XmlSerializer, используется внутреннее динамическое создание кода.XmlSerializer создает временные файлы C#, компилирует результирующие файлы во временную сборку и затем загружает эту сборку в процесс. Такое создание кода тоже стоит сравнительно дорого, поэтому XmlSerializer размещает временные сборки в кэш, по одной на каждый тип. Это значит, что в следующий раз при создании кода XmlSerializer для класса Х не будет создаваться новая сборка, а будет использована сборка из кэша. Однако, не все так просто.
В некоторых случаях происходят утечки сборок...
Total votes 31: ↑29 and ↓2 +27
Views 5K
Comments 5

От чего защищает strong name в .net cборках?

.NET *
Основная цель strong name или подписи сборки это ее уникальность в GAC(Global assembly cache). На основании сборки во время подписи вычисляется криптографический открытый ключ, закрытый хранится в секрете у производителя сборки, хеш-функция от которого и составляет public token, что, по сути, есть strong name для сборки. Public token сохраняется в метаданных сборки и в паре с именем сборки, версией, и культурой, и служит для уникальной ее идентификации.

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

Но многие заблуждаются думая, что сборка со строгим именем защищена от модификации. Справедливости ради, стоит заметить, что если производитель сборки опубликовал public token или открытый ключ, например на своем сайте, то всегда можно проверить соответствует ли этот ключ или токен тому ключу, который зашит в используемые сборки, но это скорее придется проверить вручную. Важно другое, что строгое имя не защитит сборку от модификации, как многие думают, и соответственно механизм в CLR не отработает, как положено и загрузит модифицированную сборку.
Читать дальше →
Total votes 42: ↑26 and ↓16 +10
Views 15K
Comments 28

SCENE #21

Demoscene
Команда demoscene.ru выпустила новый видеоподкаст. Tone рассказывает о поездках на зарубежные демопати — Breakpoint и Assembly. Что интересного происходит на зарубежных «фестивалях компьютерного искусства», как в них поучаствовать, кого можно встретить, кого лучше не встречать и прочее, и прочее.

image

Посмотреть в он-лайне: scene.rpod.ru/161682.html
Скачать файлом: rpod.ru/get/161682/113500/download/scene21-breakpoint.mp4 (385.7 Мб)

Оставляйте отзывы о подкасте, это помогает и авторам, и демосцене :)
Total votes 6: ↑6 and ↓0 +6
Views 494
Comments 0

Документальный фильм о группе Future Crew

Demoscene
На демопати Assembly 2010, проходившем в эти выходные в Хельсинки, состоялась премьера проекта The Demoscene Documentary. Авторы задались целью создать серию короткометражных документальных фильмов об истории демосцены. Героями первой серии цикла стали Future Crew и их легендарная работа Second Reality (1993 г., PC).



К сожалению, авторы проекта решили делать его на «родном» для европейской демосцены финском языке, но своевременно догадались снабдить видеоряд английскими субтитрами. Уверяю, 17 минут suomi вполне терпимы, ради возможности «заглянуть в глаза» легендам.

UPD: Для настоящих фанатов отдельным роликом выложено home video о создании Second Reality (его фрагменты фигурируют в фильме).
Total votes 43: ↑37 and ↓6 +31
Views 927
Comments 26

Исходный код Second Reality передан в общественное достояние

Open source *Assembler *
Пару дней назад Mika Tuomi, известный как Trug, передал исходный код Second Reality в общественное достояние.



Second Reality — это демо, занявшее первое место на демопати Assembly '93. Оно было создано командой Future Crew, которая на тот момент состояла из 12-ти человек. Впоследствии ее члены основали такие компании как Futuremark и Remedy Entertainment. Считается, что это демо оказало огромное влияние на развитие демосцены.

Статья о Future Crew в Википедии (англ.)
Статья о Second Reality в Википедии
Бинарники
Исходный код на Гитхабе
Total votes 52: ↑50 and ↓2 +48
Views 17K
Comments 29

dotPeek 1.1: обновление бесплатного декомпилятора от JetBrains

JetBrains corporate blog .NET *C# *
Давно мы не выпускали обновлений для декомпилятора.
А вчера выпустили: dotPeek 1.1 теперь доступен для широкой публики.

dotPeek 1.1: бесплатный .NET-декомпилятор от компании JetBrains

Напомним, dotPeek — это бесплатный декомпилятор .NET-сборок, который показывает результирующий код на языке C# и позволяет изучать его с помощью многообразных функций навигации и поиска, что знакомы и, будем надеяться, симпатичны пользователям другого нашего продукта, ReSharper. В частности, в dotPeek можно проводить поиск конкретного типа, символа или члена класса во всех загруженных сборках; переходить от деклараций символов к их использованиям и наоборот; анализировать иерархии наследования. Кроме того, при наличии файлов отладочной информации (.pdb) dotPeek показывает оригинальный исходный код сборок и дружит с серверами символов, такими как Microsoft Reference Source Center и SymbolSource.org, с которых при необходимости может скачивать исходный код различных библиотек.
Читать дальше →
Total votes 54: ↑53 and ↓1 +52
Views 14K
Comments 39

Бутлоадер с AES-128 и EAX на AVR Assembler в 1024 байта

Abnormal programming *Cryptography *

Или как я перестал бояться и полюбил ассемблер

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

Хорошая мера защиты — обновления программного обеспечения. Китайские клоны автоматически отмирают после каждой новой прошивки, а лояльные пользователи получают нашу любовь, заботу и новые возможности. Робин Гуды при таком раскладе, естественно, достанут свои логические анализаторы, HEX-редакторы и начнут ковырять процесс прошивки с целью ублажения русско-китайского сообщества.

Хоть у нас и не было проектов, которые требуют подобных мер защиты, было понятно: заняться этим надо, когда-то это пригодится. Погуглено — не найдено, придумано — сделано. В этой статье, я расскажу, как уместить полноценное шифрование в 1 килобайт и почему ассемблер — это прекрасно. Много текста, кода и небольшой сюрприз для любителей старого железа.
Читать дальше →
Total votes 152: ↑151 and ↓1 +150
Views 76K
Comments 75

Return oriented programming. Собираем exploit по кусочкам

Information Security *System Programming *
Tutorial
Введение
В этой статье мы попробуем разобраться как работает Return Oriented эксплоит. Тема, в принципе, так себе заезженная, и в инете валяется немало публикаций, но я постараюсь писать так, чтобы эта статья не была их простой компиляцией. По ходу нам придется разбираться с некоторыми системными особенностями Linux и архитектуры x86-64 (все нижеописанные эксперименты были проведены на Ubuntu 14.04). Основной целью будет эксплуатирование тривиальной уязвимости gets с помощью ROP (Return oriented programming).
Читать дальше →
Total votes 39: ↑38 and ↓1 +37
Views 25K
Comments 4

30 лет работы сисадмином

ua-hosting.company corporate blog
Sandra Henry-Stocker (Unix Dweeb, в данный момент работает в компании TeleCommunication Systems, разрабатывающей инновационные технические решения).

Оглядываясь в прошлое, спустя более 30 лет работы системным администратором Unix, я могу сказать, что это был долгий и интересный путь. В эти годы я конечно не выполняла одно и тоже. Развитие технологий приводили к невероятным изменениям в моей работе. Это были впечатляющие улучшения в “железе”, которое я обслуживала, и изобретение новых программных инструментов, которые я изучала и применяла на практике. На протяжении многих лет я получала невероятное наслаждение от того, насколько много работы я могла сделать в командной строке для выявления и устранения различных проблем и понимания того, как наилучшим образом обеспечить защиту данных моих работодателей. В течении 30 лет я работала с удивительными людьми, при этом была уволена однажды, а также узнала много нового о том, что работает и не работает, как с технической точки зрения, так и с точки зрения карьерного роста.
Профессия и все с ней связанное меняется драматичным образом, но она всегда приносила и будет приносить мне море удовольствия.
Вот мои размышления об изменениях, которые я увидела и тех, которые еще увижу.
Читать дальше →
Total votes 51: ↑44 and ↓7 +37
Views 49K
Comments 11

Новый курс по микроконтроллерам — совместный проект индустрии и университетов

Assembler *Concurrent computing *Programming microcontrollers *
Британская компания, две американские компании и 18 университетов (включая российские МИЭТ, ИТМО, СГАУ, ННТУ) сотрудничали, чтобы выпустить современный курс по микроконтроллерам c небольшой привязкой к интернету вещей. Об этом – сегодняшний пресс-релиз Imagination Technologies, Microchip Technology и Digilent (отделения National Instruments). Главный автор — профессор Александр Дин из университета Северной Каролины. В отличие от более легковестных курсов интернета вещей, новый курс подводит под предмет твердую инженерную базу – в нем подробно обсуждается использование RTOS-ов, архитектура микропроцессорного ядра микроконтроллера, протоколы периферии и даже оптимизация алгоритмов при программировании.

07_Communications

Скачать курс можно здесь:

https://community.imgtec.com/downloads/connected-microcontroller-lab-v1.2/

В пресс-релизе, помимо цитат из США, Великобритании, Германии, Китая, есть и цитата из России:
“MIET is part of Imagination’s MIPSfpga and Connected MCU Lab beta-testing programs. Our students have benefited from the MIPSfpga hands-on workshops and we are looking forward to implementing the Connected MCU Lab at our university because this course offers an up-to-date and well-structured curriculum for teaching embedded solutions to future engineers.”

– Alexey Pereverzev, Head of Computer Engineering, National Research University of Electronic Technology (MIET), Russia



Пару десятков слайдов из курса, чтобы вы почувствовали его вкус:

Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Views 19K
Comments 37

Каламбуры типизации функций в C

Abnormal programming *C++ *Assembler *C *
Translation

У C репутация негибкого языка. Но вы знаете, что вы можете изменить порядок аргументов функции в C, если он вам не нравится?


#include <math.h>
#include <stdio.h>

double  DoubleToTheInt(double base, int power) {
    return pow(base, power);
}

int main() {
    // приводим к указателю на функуцию с обратным порядком аргументов
    double (*IntPowerOfDouble)(int, double) =
        (double (*)(int, double))&DoubleToTheInt;

    printf("(0.99)^100: %lf \n", DoubleToTheInt(0.99, 100));
    printf("(0.99)^100: %lf \n", IntPowerOfDouble(100, 0.99));
}

Этот код на самом деле никогда не определяет функцию IntPowerOfDouble — потому что функции IntPowerOfDouble не существует. Это переменная, указывающая на DoubleToTheInt, но с типом, который говорит, что ему хочется, чтобы аргумент типа int шел перед аргументом типа double.


Вы могли бы ожидать, что IntPowerOfDouble примет аргументы в том же порядке, что и DoubleToTheInt, но приведет аргументы к другим типам, или что-то типа того. Но это не то, что происходит.


Попробуйте — вы увидите одинаковый результат в обоих строчках.


emiller@gibbon ~> clang something.c 
emiller@gibbon ~> ./a.out 
(0.99)^100: 0.366032 
(0.99)^100: 0.366032 
Читать дальше →
Total votes 78: ↑74 and ↓4 +70
Views 22K
Comments 38

ГОСТ Р 34.12 '15 на SSE2, или Не так уж и плох Кузнечик

Cryptography *Assembler *Algorithms *C *

На Хабре уже как минимум дважды упоминался новый отечественный стандарт блочного шифрования ГОСТ Р 34.12 2015 «Кузнечик», ru_crypt в своем посте рассмотрел основные механизмы и преобразования нового стандарта, а sebastian_mg занимался пошаговой трассировкой базового преобразования. Но многие вопросы остались без ответа. Насколько быстр новый ГОСТ? Можно ли его оптимизировать, эффективно реализовать, ускорить аппаратно?


GOST R 34.12 2015 with SSE2

А если можно, то как?
Total votes 55: ↑53 and ↓2 +51
Views 28K
Comments 51

Java с ассемблерными вставками

JUG Ru Group corporate blog Java *.NET *C++ *C# *



Как известно, на любом языке можно писать, как на Java, а первая любовь джависта — это написание Garbage Collectors и JIT Compilers. С этим связано множество восхитительных вопросов, например: каким образом можно из управляемого кода напрямую работать с машинным кодом и ассемблером?


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


Теперь про ассемблер и машинный код. Зачем это нужно — вопрос открытый. Например, вы наслушались о Meltdown и хотите написать для него красивое API :-) Ну, и не надо забывать, что Oracle — не боги, поддержку того же AVX-512 добавили только в Девятке, прямое управление аппаратной транзакционной памятью не ложится на язык, часть стандартных методов можно реализовать лучше, чем это сделали в SDK и т.п. — у нас всегда есть с чем покопаться!

Читать дальше →
Total votes 74: ↑71 and ↓3 +68
Views 22K
Comments 32

Демопати в Хельсинки «Assembly 2018», фотоотчёт, день первый

Conferences Demoscene


Всё тоже самое, что и в прошлом году, только ещё больше и лучше. Фестиваль компьютерного искусства, не нуждающийся в представлении. Посвящается всем тем, кто очень хотел поехать, но не смог.
Под катом много фотографий
Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Views 2.9K
Comments 4

Демопати в Хельсинки «Assembly 2018», фотоотчёт, день второй

Conferences Demoscene


День второй. Наевшись пиццы за углом торго-выствочного комплекса, вновь прошлись по дороге, исписанной графити. Так же погуляли по второму этажу города (да, это Helsinki — многоэтажный город, cyber punk iz n0w!) и нашли ещё больше шедевров. Патиплейс под катом.
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Views 2.4K
Comments 3

Эзотерический язык LMC

Programming *Assembler *Compilers *C *DIY
Tutorial
Часть I
Часть II
Часть III
Часть IV
Часть V

Данная статья посвящена созданию интерпретатора некого эзотерического языка, в основе которого лежит архитектура Little Man Computer.
Фактически, это эмулятор ассемблера для LMC, только здесь вместо ассемблерных команд INP, STA, ADD, SUB, OUT используются спец. символы.
Для загрузки числа в память команд command_mem, переходов от команды к команде, а также для вывода результата используются команды языка brainfuck.

  • Пусть команде INP соответствует ,
  • команде OUT соответствует .
  • команде ADD соответствует +
  • команде SUB соответствует
  • команде STA соответствует ~
  • команде LDA соответствует ^

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

На ассемблере LMC эта программа будет выглядеть так (начальной ячейкой пусть будет 20)

 INP
 STA 20
 ADD 20 
 OUT

Читать дальше →
Total votes 18: ↑16 and ↓2 +14
Views 5.3K
Comments 4

Low-level Brainfuck

Programming *Assembler *Brainfuck *
Tutorial
Writing a Brainfuck interpreter (compiler) in TurboAssembler.

To begin with, let's build the interpreter in a high-level language, for example, in Pascal.

To kick off, write a program that will output a character using the sum of + as own ascii-code.

So, we only need the bf-commands + and .

    var
     data_mem: array[1..10] of integer;    // data array
     command_mem: string;                 // command array
     i: integer;                         // index of command array
     j: integer;                        // index of data array
    begin
     j:=1;                  
     readln(command_mem);       
     
     for i:=1 to length(command_mem) do begin   // in the cycle we process the string 
      if (command_mem[i]='+') then data_mem[j]:= data_mem[j]+1;
      if (command_mem[i]='.') then write(chr(data_mem[j]));
     end;
    end.

bf-code +++++++++++++++++++++++++++++++++. will issue !
(the ascii-code of the symbol ! is 33).

You may ensure that the program is correct via the link.
Читать дальше →
Total votes 30: ↑24 and ↓6 +18
Views 4.5K
Comments 7

История взлома классической игры на Dendy или Contra на 100 жизней

Assembler *Games and game consoles
Sandbox

Поскольку некоторая японская компания, до сих пор тщательно бдит свои авторские права. Я не могу предоставить вам ни мою версию рома ни использованный мною исходник. Скажу лишь, что нашёл его в торрент сборнике "Все игры на Dendy". Взяв оттуда переведённую на русский язык японскую версию игры "Contra (J) [T+Rus_Chronix]" я несколько раз её прошёл и будучи крайне любознательным человеком решил немного расковырять ROM образ, в частности подарить немного жизней игрокам.

Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Views 10K
Comments 19

История взлома классической игры на Dendy или Contra со спрэдганом в начале

Assembler *Games and game consoles
Tutorial

Раз уж прошлая моя статья, к моему большому удивлению, вас заинтересовала. Я решил дополнить её результат, хакнутую версию игры "Contra (J) [T+Rus_Chronix]", небольшим функционалом, заодно показав "code injection" на NES. В этот раз я сделаю так, чтоб игроки начинали игру с прокачанным Spreadgun, для его получения в игре нужно подобрать иконку "S", а за ней "R".



Все заинтересовавшиеся welcome под кат.

Total votes 30: ↑27 and ↓3 +24
Views 8.2K
Comments 9

Индексаторы в C# под капотом: индексируем лучше Доу-Джонса

High performance *.NET *Assembler *C# *
Доброго времени суток. В данной статье я предлагаю ознакомиться с индексаторами в различных типах. Посмотрим код языка ассемблера для данных индексаторов и характеристики каждой инструкций по ее скорости. Также я предложу несколько очевидных выводов. Но что именно использовать в конкретно вашей ситуации решать вам — стоит ли жертвовать удобством ради скорости или наоборот.

image
Читать дальше →
Total votes 33: ↑32 and ↓1 +31
Views 11K
Comments 5
1