Builds

Available downloads

Stable is the recommended track for most users. Alpha gets you the newest capabilities first.

Stable 1.9.9630 Alpha 1.9.9572
Windows 10/11 x64 Administrator rights
Release Notes

Track recent changes

Every release stays linked here so you can inspect what changed before you switch versions.

Release

1.9.9472

Permalink 28 days ago

1.9.9472 RU/EN

A small patch focused on improving window responsiveness under load and helping your packs appear in search results faster.

C# Scripting - Memory API docs

New Memory API documentation for C# scripts has been added. It gradually explains the core memory model in EyeAuras: which backends are available, where to start, how to find a code cave, how to plug in your own IProcess, and how to build custom memory backends.

Useful entry points:

C# Scripting - UserLicense improvements

New signed fields were added to UserLicense in the internal licensing APIs, and sublicenses now expose an explicit MaximumSessions.

var license = GetService<ILicenseAccessor>();

Log.Info($"UserId: {license.UserId}");
Log.Info($"Roles: {string.Join(", ", license.Roles)}");
Log.Info($"AppVersion: {license.AppVersion}");

if (license.ShareSublicenses.Length > 0)
{
    Log.Info($"MaximumSessions: {license.ShareSublicenses[0].MaximumSessions}");
}

Read more: Pack sublicenses

C# Scripting - Memory API - added free memory

IProcessControlApi now includes explicit FreeMemory(...) and ProtectMemory(...) methods. That means an allocated region can now go through the full lifecycle properly: get it through AllocateMemory(...), change protection, perform the required actions, and then release it cleanly.

using System.Diagnostics;
using EyeAuras.Memory;

using var process = LocalProcess.ByProcessId(Process.GetCurrentProcess().Id);
var control = (IProcessControlApi) process;

var region = control.AllocateMemory(
    IntPtr.Zero,
    4096,
    MemoryAllocationType.Commit | MemoryAllocationType.Reserve,
    MemoryProtectionType.ReadWrite);

var oldProtection = control.ProtectMemory(region.Address, region.Size, MemoryProtectionType.ExecuteRead);
control.ProtectMemory(region.Address, region.Size, oldProtection);
control.FreeMemory(region);

Read more: Memory API - Getting started

Fixes and improvements

  • [UI] BlazorWindow resizing and dragging were significantly improved, so windows should behave better under load
  • [Web] Improved SEO (search engine optimization) - your packs should now be detected by search engines faster and appear in results more often
  • [Web / Share] Fixed a race condition when enabling code highlighting while share pages were reloading
  • [Licensing] Added signed metadata and explicit sublicense limits to the internal licensing APIs
  • [Loader / Remote] Improved Scryde detection