пятница, 2 мая 2025 г.
Перенос сайта на новый адрес
среда, 20 марта 2024 г.
CIL Tools 2.9 is released
Download on Github releases | Source code
Changes in the new version:
CilTools.BytecodeAnalysis
- Add ReflectionProperties.ContainingAssembly and ReflectionProperties.ReferenceTarget
- Fix disassembling pointer-to-pointer types when used as operand of instruction
- Fix disassembling array-of-arrays types when used as operand of instruction
CilTools.Metadata
- Assembly resolution logic in AssemblyReader now tries to search in assemblies loaded by path before calling AssemblyResolve handler
CilTools.CommandLine
- Add HTML output support for view, disasm and view-source commands (--html option)
CIL View
- Add support for exporting disassembled CIL as HTML
воскресенье, 28 января 2024 г.
Инженерный калькулятор v2.2
- Добавлена поддержка создания программируемых функций на языках JavaScript, C# и Visual Basic
- Исправлена обработка ошибок при решении систем уравнений
- Исправлена невозможность использовать константы с именем, начинающимся на "e"
- Исправлены ошибки при вычислении выражений на системах с региональными параметрами, отличными от русских
- Исправлены опечатки в сообщениях и в справке
понедельник, 6 ноября 2023 г.
Обновление Small Media Player v2.6
Вышла новая версия Small Media Player 2.6: Загрузить, Исходный код
Изменения в новой версии:
- Добавлена поддержка загрузки списков воспроизведения CUE
- Исправлена ошибка, приводившая к зависанию при воспроизведении видео в формате MPEG
- Исправлено отображение в информации о форматах мультимедиа следующих форматов: AAC-ADTS, AIFF, Dolby AC3, DTS, DVD Audio, H264 ES, OGG Vorbis, PCM BE.
Примечание. Поддержка списков воспроизведения CUE ("CUE sheets") на текущий момент имеет некоторые ограничения:
1. Списки воспроизведения CUE можно загружать, но нельзя сохранять.
2. Если в списке воспроизведения есть фрагменты файлов, загруженные из CUE, при сохранении списка в формате M3U (в том числе при запоминании последнего списка) они не будут выгружены.
воскресенье, 30 июля 2023 г.
CIL Tools v2.8 is released
Changes in the new version:
CilTools.BytecodeAnalysis
- Add support for type forwards in disassembler
- Add support for .vtfixup directives in assembly manifest
- Add support for AggressiveInlining method attribute
- Add support for Import and WindowsRuntime type attributes
- Add support for field offsets in structs with explicit layout
- Add support for RVA fields in type disassembler
- Add LocalVariable.Method property
- Add TypeSpec.CreateSpecialType method
- Add IdentifierSyntax.Kind property
- Make SyntaxNode._parent field protected
CilTools.Metadata
- Support additional assembly resolution directories in AssemblyReader
- Support inherit parameter in Type.GetCustomAttributes methods
CIL View
- Add support for type forwards
- Add support for .vtfixup directives in assembly manifest
- Add syntax highlighting support for some non-standard IlAsm keywords
- Add navigation to labels
- Add support for field offsets for structs with explicit layout
- Add support for RVA fields
- No longer automatically select
<Module>type when it's the only one in assembly (so user can see assembly manifest) - Fix members counting to pick only declared members when deciding whether the only method in type should be auto-selected
воскресенье, 2 апреля 2023 г.
CIL Tools v2.6 is released
Changes in new version:
- New project: CilTools.SourceCode
CilTools.BytecodeAnalysis
- Add new CilTools.Syntax.Tokens API for converting text into sequence of tokens
- Add support for .pack and .size directives
- Expose constant values as LiteralSyntax instead of GenericSyntax in Syntax API
- Update disassembler to not escape math symbols in string literals
- Fix CilInstruction.Parse to use invariant culture when parsing floating point values
CilTools.Metadata
- Add support for getting inherited members in TypeDef and TypeRef. Now APIs like GetMembers return both declared and inherited members by default, and only declared ones when DeclaredOnly flag is specified.
- Implement Type.StructLayoutAttribute property on TypeDef
- Fix Type.IsValueType and Type.IsEnum returning incorrect values for .NET Core assemblies
- Fix token resolution to throw ArgumentOutOfRangeException instead of BadImageFormatException on out-of-range tokens
CIL View
- Add support for .pack and .size directives
- Add support for C# verbatim strings in source viewer
- Use .NET Core runtime directory for .NET Standard 2.1 targeting assemblies when navigating to methods from BCL types
- Update disassembler to not escape math symbols in string literals
- Fix syntax highlighting for constant values
воскресенье, 19 февраля 2023 г.
Обновление Small Media Player v2.5
Изменения в новой версии:
- Добавлена поддержка версий информационных тегов ID3v2.2 и ID3v2.4
- Добавлена поддержка отображения встроенных обложек альбомов из тегов ID3v2.3 и ID3v2.4
- Добавлена поддержка комментариев ID3v2 в кодировках UTF8 и UTF16
- Добавлена возможность отображения URL из тегов ID3v2
- Добавлена возможность отображения информации о версии модуля для фильтров DirectShow при отсутствии у них страницы свойств
- Добавлено открытие файла изображения во внешней программе при двойном щелчке на обложке альбома (только для обложек из файлов)
- Исправлено отображение форматов аудио ADPCM, Monkey's Audio (APE) и AMR NB/WB в информации о форматах мультимедиа
среда, 7 декабря 2022 г.
CIL Tools v2.5 is released
CilTools.BytecodeAnalysis
- Add IReflectionInfo interface to enable custom properties on reflection objects (implemented by classes in CilTools.Metadata)
- Add CilInstruction.ToSyntax()
- Add Disassembler.GetAssemblyManifestSyntaxNodes
- Add IParamsProvider interface (enables getting method parameters without resolving external assembly references, implemented by classes in CilTools.Metadata)
- Support parameters and return type custom attributes
- Support field custom attributes
- Support
.overrideand.vtentrydirectives - Support events in type disassembler
- Support vararg sentinel (...) in method signatures
- Support
specialnameandrtspecialnameattributes on methods - Skip assembly name for types in the same assembly
- Escape special characters in identifiers
- Escape slash in string literals
- Fix base type syntax in GetTypeDefSyntax
- Fix TypeSpec.IsValueType for byref target types and generics
- Fix extra whitepaces after directive names
- Fix constructors to have void return type in disassembled CIL
- Fix ldtoken syntax for types
- Fix CilParserException when exception handler block closes after the last instruction in the method body
- Fix literal syntax for enum and boolean types
- Fix
serializableattribute handling - Fix type name representation in syntax API (now namespace is handled as a separate identifier token)
- Fix detection of
<Module>type (global fields and functions)
CilTools.Runtime
- Implement GetReferencedAssemblies and ManifestModule on DynamicMethodsAssembly
CilTools.CommandLine
- Add view-source command
- Add fileinfo command
- Add support for viewing assembly manifest to view command
- Add assembly disassembling support to disasm command
- Roll-forward to next major versions of .NET Runtime
CIL View
- Add Source Link support for Portable PDB symbols
- Add source code syntax highlighting
- Add instruction info
- Add IL syntax highlighting in SourceViewWindow
- Add support for viewing assembly manifest and Export assembly to file menu command
- Add Recent files menu
- Add HTML help
- Change default filter in Open File dialog to include all supported file types (instead of only .dll and .exe)
- Disable formatted view for .il files larger then 1 MB
- Support viewing separate types from .il files
- Load .il files in background
суббота, 9 июля 2022 г.
ErrLib v1.1 update
- Add support for custom logging target (ErrLib_SetLoggingCallback)
- Add C++ exception API (ErrLib_CPP.h)
- Add high-level stack trace API (ErrLib_Except_GetStackTraceData)
- Add NuGet package
- Add API docs using Doxygen
- Fix crash in ErrLib_PrintStack on x64
- Fix ErrLib_PrintStack crash on Win7 when reading PDB symbols built with /DEBUG:FASTLINK option
понедельник, 2 мая 2022 г.
Обновление Small Media Player - v2.4
- Теперь для воспроизведения файла проигрыватель сначала пытается использовать режим Media Foundation, а если файл воспроизвести в нем невозможно, использует DirectShow (ранее было наоборот)
- Добавлена возможность просмотра информации о форматах мультимедиа в режиме Media Foundation
- Переработан регулятор громкости, так чтобы изменение уровня громкости в режимах Media Foundation и DirectShow происходило одинаково
- Исправлены проблемы с производительностью при перемотке на большой промежуток времени в режиме Media Foundation
- Исправлено блокирование воспроизведения модальным диалоговым окном при возникновении ошибки в режиме Media Foundation
- Исправлена ошибка Access violation при завершении воспроизведения файла в режиме Media Foundation
- Исправлена некорректная перерисовка окна видео во время паузы
- Исправлена ошибка при попытке воспроизвести видеофайл на машине, не имеющей ни одного активного звукового устройства
воскресенье, 27 марта 2022 г.
Диагностика ошибок в программах с помощью дампов памяти
Статья перенесена на новый сайт: SmallSoft - Диагностика ошибок в программах с помощью дампов памяти
воскресенье, 20 февраля 2022 г.
CIL Tools update 2.4
A new CIL Tools update is released. The update contains a new project, CilTools.CommandLine, as well as some changes and fixes to existing projects.
Changes in the new version:
General
- New project: CilTools.CommandLine
CilTools.BytecodeAnalysis
- Add support for including bytecode size and source code lines in disassembler output
- Add support for .entrypoint directive
- Add support for generic constraints
- Add support for properties in disassembler
- Add ICustomMethod interface as a base for custom method implementations to replace CustomMethod base class. This means that custom method implementations can now be derived from MethodInfo or ConstructorInfo.
- Improve generics support. Generic context is now passed correctly to generic parameter types is more cases; this enables getting generic parameter names and their declaring methods/types.
- Fix TypeSpec.IsGenericParameter for byrefs
- Fix ldtoken syntax for methods
- Fix string literal escaping in disassembler to use ECMA-335 rules
CilTools.Runtime
- Update custom method implementations to derive from MethodInfo/ConstructorInfo and implement ICustomMethod
CIL View
- Add support for opening C#/VB code and MSBuild projects
- Add Show source support
- Add options to include bytecode size and source code lines (from PDB) in disassembler output
- Add support for opening IL source files
- Add support for .entrypoint directive
- Add Export type to file menu command
- Add support for generic constraints
- Add support for disassembling properties
- Add support for interactive method execution
- Use .NET Core runtime directory when resolving dependencies for .NET Core assemblies
- Use runtime directory of the inspected process instead of current runtime directory for assembly resolution when opening a process
- Load assembly images from memory instead of files when opening a process
- When an assembly contains a single type, automatically navigate to that type
- When the type contains only one non-constructor method and no other members (like fields), automatically navigate to that single method when type is selected
- Change member identifier color to more visible with lower brightness
- Fix
ldtokensyntax for methods - Fix string literal escaping in disassembler to use ECMA-335 rules
четверг, 21 октября 2021 г.
Проблемы с принтерами в Windows 10 после обновления KB5006670
В октябре 2021 вышло обновление Windows 10 KB5006670, в которое вошли изменения диспетчера печати, призванные исправить проблемы, вызванные предыдущими обновлениями (теми, которые закрывали скандальную уязвимость Print Nightmare). К сожалению, это обновление также вызвало новые проблемы с общими принтерами. В ситуациях, когда общий принтер установлен на машине с неподдерживаемой версией Windows (XP, 7) и используется на машине с обновленной Windows 10, печать стала выдавать ошибку "Принтер удален на сервере". Попытка удалить и заново установить притер также выдавала ошибку (код 0x00004cf и другие). Проблема в равной мере коснулась разных моделей принтеров: HP, Kyocera. Принтеров, подключенных как сетевые через Ethernet, она не коснулась.
Причины проблемы
Исследования с помощью Wireshark показали, что обновленный диспетчер печати пытается использовать аутентификацию NTLM при взаимодействии с общим принтером (ранее это взаимодействие проходило без какой-либо аутентификации). Для этого в запросе rpc bind устанавливается дополнительный параметр Auth type: NTLMSSP. Эта аутентификация проходит с ошибкой "Reject reason: Authentication type not recognized (8)".
На рисунке ниже приведен вид перехваченного пакета с ошибкой в WireShark:
Решение проблемы
Данная проблема обсуждалась на форуме bleepingcompurer. Одно из предложенных решений: запретить аутентификацию NTLM, благо этот протокол не самый безопасный и в доменных сетях есть лучшая альтернатива - Kerberos. В моем случае это не помогло, вероятно, Kerberos также оказался сломанным. Ниже приведены решения, которые у нас сработали.
Вариант 1
1. Добавить принтер как локальный, указав порт, допустим, LPT2, и выбрав "Использовать установленный драйвер".
2. Выполнить в командной строке команду:
NET USE LPT2: "\\Computer\Printer" /PERSISTENT:YES
Почему этот способ работает, не понятно. Но сработал он только в схеме WinXP -> Windows 10. Для Windows 7 применить его не получилось: принтер устанавливается и настройки открываются, но печать выводит ошибку.
Вариант 2
Удалить обновление KB5006670:
wusa /uninstall /kb:5006670
Скрыть обновление через утилиту почему-то не удалось, поэтому это только временное решение. Но обновления можно отложить, и возможно Microsoft поправят проблему.
Оба решения являются лишь обходными путями. Нормального решения, которое бы отключило аутентификацию при взаимодействии с принтером из старых ОС, так и не было найдено. Также это не первая проблема с общими принтерами, ранее вообще были синие экраны при попытке печати. Видимо, стоит признать, что механизм общих принтеров крайне ненадежен при наличии старых ОС. Лучше использовать сетевые принтеры Ethernet или обновлять все компьютеры на новые Windows.
воскресенье, 10 октября 2021 г.
WinForms Excel Library v1.4 update
Changes in the new version:
- Added .NET Core support (.NET Core 3.1 or newer)
- Added XML comments for members that didn't have them
понедельник, 2 августа 2021 г.
CIL Tools update 2.3
The new version of CIL Tools is released. Download at Github releases.
Changes in new version:
CilTools.BytecodeAnalysis
- Escape IL assembler keywords when used as identifiers
- Make ITypeInfo interface public to enable inspecting function pointer types with CilTools.Metadata
- Change TypeSpec.IsFunctionPointer from method to property (breaking change)
- Fix bug that prevented CilReader.GetInstructions from correctly enumerating instuctions more than once for the same iterator instance
CilTools.Runtime
- Add support for Assembly.GetName() on dynamic assemblies (.NET Framework only)
CIL View
- Escape IL assembler keywords when used as identifiers
- Make search in Open process window case-insensitive
- Add support for displaying dynamic assembly names when inspecting process (.NET Framework only)
- Show loaded modules in process info
среда, 7 июля 2021 г.
Обновление Small Media Player - v2.3
Изменения в новой версии:
- Добавлена поддержка декодеров, использующих технологию Media Foundation
- Убрана поддержка Windows XP
- Убрана поддержка воспроизведения Audio CD
- Исправлено некорректное положение контекстного меню при щелчке правой кнопкой мыши по заголовкам столбцов в списке воспроизведения
Загрузить: Small Media Player 2.3
Поддержка Media Foundation
Ранее проигрыватель использовал только DirectShow для воспроизведения файлов. Теперь, если файл не удалось воспроизвести с помощью DirectShow, выполняется попытка воспроизвести с помощью Media Foundation - более новой технологии, введенной в Windows Vista. Благодаря этому, теперь программа сможет открыть некоторые файлы, которые ранее не открывались из-за проблем со стандартными декодерами DirectShow; например, MP3-файлы с некорректным блоком ID3V2-тегов в начале. Кроме того, в Windows 10 был добавлен стандартный декодер для MKV с видео H.264, поэтому теперь этот формат можно будет открыть без необходимости установки пакета кодеков.
Прекращение поддержки Windows XP
Начиная с данной версии, программа не запустится на Windows XP. На Windows Vista программа должна работать, хотя я не тестирую на этой ОС. Последняя версия с поддержкой XP - 2.2, при необходимости будут выходить исправления критических ошибок для нее, но все развитие будет фокусироваться на более новых ОС.
вторник, 18 мая 2021 г.
Обновление Small Media Player - v2.2
Новая версия содержит единственное изменение: исправлено аварийное завершение программы при попытке открыть файл с пустыми тегами ID3v2.
Загрузить: Small Media Player v2.2
воскресенье, 25 апреля 2021 г.
Обновление Small Media Player - v2.1
Изменения в новой версии:
- Исправлена ошибка, из-за которой иногда некорректно отображалась информация из тегов при использовании "Открыть с помощью".
- Исправлена ошибка, при которой информация из тегов некорректно обрабатывалась при наличии символа "~" в тегах.
- Исправлено мерцание индикатора текущей позиции.
- Списки воспроизведения теперь сохраняются и считываются в кодировке UTF-8 (ранее использовалась текущая кодовая страница ANSI). Это позволяет корректно обрабатывать пути файлов с национальными символами из других кодовых страниц.
- Исправлено неровное положение некоторых элементов в главном окне.
- Реализована плавная (логарифмическая) регулировка громкости.
- При повторном запуске программы теперь выполняется попытка вывести окно главного экземпляра на передний план.
- Обновлен алгоритм поиска изображения по умолчанию, теперь изображение берется из каталога стандартных обоев Windows (
%WINDIR%\Web\Wallpaper\Windows\). - Ошибки воспроизведения теперь выводятся в отдельное немодальное окно и не блокируют воспроизведение (проигрыватель автоматически переходит к следующему файлу).
- Добавлено логирование ошибок (файл
(Документы)\Small Media Player\error.log) - Исходный код теперь доступен на Github (лицензия BSD 3-Clause)
среда, 31 марта 2021 г.
CIL Tools update 2.2
CIL Tools 2.2 is released
Changes in this version:
CilTools.BytecodeAnalysis
- Add support for dynamic methods on .NET Core (token resolution still does not work properly on .NET Core 3+ Linux)
- Add support for
constrained.instruction prefix - Add type definition disassembler
- Add CilGraphNode.GetExceptionBlocks
- Add CilGraph.GetHandlerNodes
- Implement IsAssignableFrom on TypeSpec
- Fix exception on TypeSpec.IsValueType
CilTools.Runtime
- Add support for dynamic assemblies
- Implement IsAssignableFrom on ClrTypeInfo
- Improve performance of some ClrTypeInfo methods
CIL View
- Add Open BCL assembly dialog
- Add navigation history
- Add partial support for 64-bit processes
- Add support for dynamic assemblies
- Add exception analysis
- Disable wrapping in search textbox
- Method navigation hyperlink now spans only over the method name identifier, instead of the whole method reference syntax
- Method navigation hyperlink is no longer underlined (to fix cases where it was obscuring _ chars in name)
- Improve performance of "Open process" by preloading assemblies from files instead of reading target process memory, where it's possible
- Fix null reference on
typedrefparameter - Fix unhandled exception when opening file on background thread
- Fix token resolution bug after navigating to generic method instantiation
- Fix crashes on access to disposed assemblies
суббота, 23 января 2021 г.
WinForms Excel Library v1.3 update
Changes:
- Add DisplayWindowTitle property
- Remove checkbox to show status bar in demo app

