Skip to content

Releases: nosoop/SMExt-SourceScramble

0.8.0-pre2

01 Aug 14:31
Compare
Choose a tag to compare
0.8.0-pre2 Pre-release
Pre-release

Fixed

  • MemoryBlock.StoreToOffset no longer erroneously falls through on the switch case that identifies the size of the write. This was a regression introduced in 0.8.0-pre1.

0.8.0-pre1

16 Jul 11:10
Compare
Choose a tag to compare
0.8.0-pre1 Pre-release
Pre-release

Prerelease build for 64-bit support.

package.tar.gz includes both 32- and 64-bit versions of the extension for Linux servers, while package.zip includes the same for Windows servers. It looks like the extensions work fine for SM 1.11 even though they're currently compiled against the latest commit, so plugins that are built against the latest version of the extension can run without issue there.

Added

  • Preliminary 64-bit support.
    • Because SourceMod's scripting interface only supports a one-to-one mapping of Address values on 32-bit platforms and is outright broken on 64-bit (no, the pseudoaddress system is not a working solution), the following properties and natives will currently throw errors when accessed on a 64-bit server: MemoryPatch.Address, MemoryBlock.Address, GetAddressOfCell, and GetAddressOfString.
    • This behavior is expected to change in the future once SourceMod decides to properly handle 64-bit addresses. If SourceMod doesn't make a decision, I may introduce my own type for this extension, but for now I'm opting not to so we can save potential compatibility headaches down the line.
    • Statically defined patches will work; anything that requires a plugin to write on top of the patch at runtime will not work at this time.

Changed

  • MemoryBlock.LoadFromOffset and MemoryBlock.StoreToOffset are now native functions instead of being wrappers around SourceMod's LoadFromAddress and StoreToAddress, to allow for in-block memory accesses on 64-bit servers.
    • Plugins will need to be recompiled against the new version if they want to target 64-bit servers, otherwise they will continue to function as they did on 32-bit platforms.
    • Recompiled plugins will not work on Source Scramble versions prior to 0.8.0.
  • As we no longer use StoreToAddress, MemoryBlock instances are now instantiated with +rwx to maintain existing intent (#7).
  • The built-in patch manager was modified to not use MemoryPatch.Address as part of its output so it continues to work on both 32- and 64-bit platforms.

0.7.1.4

20 Apr 22:06
Compare
Choose a tag to compare

d9555c75-880b-4dde-8f07-4795484d667b

Another sub-patch release; this is functionally identical to 0.7.1.

Changed

  • The automated builds now targets SM 1.11 with Ubuntu 20.04. 0.7.1.3 was using 22.04 runners, which caused the extension to not load on servers with older glibc releases. (#20)

0.7.1.3

20 Apr 07:22
Compare
Choose a tag to compare

Another sub-patch release; this is functionally identical to 0.7.1.

Changed

  • The automated build now targets SM 1.11.
  • The extension now uses standard containers in place of AMTL, matching their deprecation from SM.

0.7.1.2 😂

19 Apr 09:48
Compare
Choose a tag to compare

Wow, it's (practically) nothing!
This is a sub-patch release; this is effectively the same as 0.7.1 and 0.7.1.1.

Added

  • Source Scramble Manager plugin source now included in release packages.

0.7.1.1

04 May 11:50
Compare
Choose a tag to compare

This is a sub-patch release; this is effectively the same as 0.7.1.

Added

  • GitHub workflow integration for releases and pull requests.
    • The automated builds have optimizations enabled.
  • Source Scramble Manager now included in release packages and enabled by default.

0.7.1

28 Sep 06:06
Compare
Choose a tag to compare

Fixed

  • Invalid signatures no longer cause a segfault.

Peach (0.7.0)

12 Jul 12:05
Compare
Choose a tag to compare

Additions

  • New preserve key for patch configurations; bits that are set will be copied from the original memory instead of from the patch. (#9)

Pineapple. (0.6.0)

22 Nov 00:09
Compare
Choose a tag to compare

Install by grabbing the correct archive for your server platform (.zip for Windows, .tar.gz for Linux — the archives only contain binaries for their specific platform).

Also install sourcescramble_manager.smx for the manager plugin, if you intend to use the autopatching mechanism.

Added

  • New natives GetAddressOfCell and GetAddressOfString — given a reference to a cell value or a char[], these natives return the physical memory address of that reference. This provides a more streamlined method of working with patches that modify addresses of pointers.
  • Proper implementation of MemoryBlockHandler::GetHandleApproxSize, which allows SourceMod to report the size of MemoryBlocks when dumping handles. (#6)

Mango.

25 Apr 09:50
Compare
Choose a tag to compare

Install by grabbing the correct archive for your server platform (.zip for Windows, .tar.gz for Linux — the archives only contain binaries for their specific platform).

(2020/06/19) package-sm19.zip is a Windows build that should work with SourceMod 1.9+; package.zip was built against 1.10 and reportedly not working on 1.9.

Also install sourcescramble_manager.smx for the manager plugin, if you intend to use the autopatching mechanism.

Added

  • MemoryBlock.Disown() native; when called, the memory block will not be freed when the handle to it is destroyed (or the plugin is unloaded).