Code Features

Gabriel edited this page Sep 26, 2023 · 2 revisions

Table of contents

Memory

Reading

The following functions are exposed for reading from a memory address;

char[]Read(IntPtraddress,IntPtrcount);TRead<T>(longaddress)whereT:unmanaged
T Read<T>(IntPtraddress)whereT: unmanaged

Examples

// Read a float value from the specified memory location and output it to the console.Console.WriteLine(Read<float>(myLocation));

Writing

The following functions are exposed for writing to a memory address;

voidWrite<T>(longaddress,Tdata)whereT:unmanaged
void Write<T>(longaddress,paramsT[]data)whereT:unmanaged// Use WriteProtected for writing data to protected memory pages.void WriteProtected<T>(longaddress,Tdata)whereT:unmanaged
void WriteProtected<T>(longaddress,paramsT[]data)whereT: unmanaged

Examples

// Write a 64-bit integer with the value of 1337 at the specified memory location.Write<long>(myLocation,1337);// ImplicitWrite(myLocation,1337L);// Explicit// Write a byte with the value of 5 at the specified memory location.Write<byte>(myLocation,5);// ImplicitWrite(myLocation,(byte)5);// Explicit// Write an array of bytes at the specified memory location.Write<byte>(myLocation,newbyte[]{1,3,3,7});// ImplicitWrite(myLocation,newbyte[]{1,3,3,7});// Explicit

Assembly injection

Codes have functions for assembling x86-64 code at runtime and injecting it.

The following functions are used for hooking assembly code;

// instructions: The instructions to assemble.// address: The address to insert the hook at.// behavior (optional): The behavior of the hooked code (see HookBehavior enum below).// parameter (optional): The execution mode of the hooked code (see HookParameter enum below).voidWriteAsmHook(stringinstructions,longaddress,HookBehaviorbehavior,HookParameterparameter);voidWriteAsmHook(longaddress,HookBehaviorbehavior,paramsstring[]instructions);// HookBehavior.Before: Write a jump/call to the custom code before the original code is done.// HookBehavior.After: Write a jump/call to the custom code after the original code is done (default).// HookBehavior.Replace: Write a jump/call over the original code, replacing it entirely (recommended if the original code contains jumps and calls).publicenumHookBehavior{Before,After,Replace}// HookParameter.Jump: Jump to the custom code (default).// HookParameter.Call: Call the custom code as its own function.publicenumHookParameter{Jump,Call}

A hook will replace an instruction at the starting address with a jmp/call instruction (depending on HookParameter) to the custom code in memory. Please be wary of the length of this instruction when using hooks to ensure the original code will still be valid once jumped back into.

  • 32-bit jmp is 5 bytes.
  • 64-bit jmp is 14 bytes.

Examples

// Writes a mid-asm hook at the specified address that replaces the original code.WriteAsmHook(@" mov eax, eax xor eax, eax ",myHookLocation,HookBehavior.Replace);// Writes a mid-asm hook at the specified address that executes after the original code.WriteAsmHook(myHookLocation,HookBehavior.After,"mov eax, eax","xor eax, eax");

Signature scanning

Codes have support for scanning memory for code-style patterns (added in v1.2).

The following functions are available;

// Pattern length must be equal to mask length.IntPtrScanSignature(byte[]pattern,stringmask);longScanSignature(stringpattern,stringmask);

Examples

// Write a NOP instruction where the pattern matches.WriteNop(ScanSignature("\xAA\xBB\xCC\x00\xDD\xEE","xxx?xx"),1);

Preprocessor

Codes use extended preprocessor features that aren't part of the C# language model.

These must be placed at the beginning of your code.

Importing assemblies

You can import a new assembly if it hasn't already been loaded with the base assemblies for the codes.

Examples

// Loads the System.Numerics assembly.
#load "System.Numerics.dll"usingSystem.Numerics;

Macros

You can create macros just as you would in C/C++ to compact necessary chunks of code into a single line.

Examples

#define MY_CONSTANT 1
#define PRINT(in_str) Console.WriteLine(in_str)
#define PRINT_MULTI(in_str, in_count) \
for (int i = 0; i < in_count; i++) \
Console.WriteLine(in_str);
Code "Example Code"PRINT(MY_CONSTANT);// Writes 1 to the console.PRINT_MULTI("Hello world!",10)// Writes "Hello world!" 10 times to the console.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Code Features

Gabriel edited this page Sep 26, 2023 · 2 revisions

Table of contents

Memory

Reading

The following functions are exposed for reading from a memory address;

char[]Read(IntPtraddress,IntPtrcount);TRead<T>(longaddress)whereT:unmanaged
T Read<T>(IntPtraddress)whereT: unmanaged

Examples

// Read a float value from the specified memory location and output it to the console.Console.WriteLine(Read<float>(myLocation));

Writing

The following functions are exposed for writing to a memory address;

voidWrite<T>(longaddress,Tdata)whereT:unmanaged
void Write<T>(longaddress,paramsT[]data)whereT:unmanaged// Use WriteProtected for writing data to protected memory pages.void WriteProtected<T>(longaddress,Tdata)whereT:unmanaged
void WriteProtected<T>(longaddress,paramsT[]data)whereT: unmanaged

Examples

// Write a 64-bit integer with the value of 1337 at the specified memory location.Write<long>(myLocation,1337);// ImplicitWrite(myLocation,1337L);// Explicit// Write a byte with the value of 5 at the specified memory location.Write<byte>(myLocation,5);// ImplicitWrite(myLocation,(byte)5);// Explicit// Write an array of bytes at the specified memory location.Write<byte>(myLocation,newbyte[]{1,3,3,7});// ImplicitWrite(myLocation,newbyte[]{1,3,3,7});// Explicit

Assembly injection

Codes have functions for assembling x86-64 code at runtime and injecting it.

The following functions are used for hooking assembly code;

// instructions: The instructions to assemble.// address: The address to insert the hook at.// behavior (optional): The behavior of the hooked code (see HookBehavior enum below).// parameter (optional): The execution mode of the hooked code (see HookParameter enum below).voidWriteAsmHook(stringinstructions,longaddress,HookBehaviorbehavior,HookParameterparameter);voidWriteAsmHook(longaddress,HookBehaviorbehavior,paramsstring[]instructions);// HookBehavior.Before: Write a jump/call to the custom code before the original code is done.// HookBehavior.After: Write a jump/call to the custom code after the original code is done (default).// HookBehavior.Replace: Write a jump/call over the original code, replacing it entirely (recommended if the original code contains jumps and calls).publicenumHookBehavior{Before,After,Replace}// HookParameter.Jump: Jump to the custom code (default).// HookParameter.Call: Call the custom code as its own function.publicenumHookParameter{Jump,Call}

A hook will replace an instruction at the starting address with a jmp/call instruction (depending on HookParameter) to the custom code in memory. Please be wary of the length of this instruction when using hooks to ensure the original code will still be valid once jumped back into.

  • 32-bit jmp is 5 bytes.
  • 64-bit jmp is 14 bytes.

Examples

// Writes a mid-asm hook at the specified address that replaces the original code.WriteAsmHook(@" mov eax, eax xor eax, eax ",myHookLocation,HookBehavior.Replace);// Writes a mid-asm hook at the specified address that executes after the original code.WriteAsmHook(myHookLocation,HookBehavior.After,"mov eax, eax","xor eax, eax");

Signature scanning

Codes have support for scanning memory for code-style patterns (added in v1.2).

The following functions are available;

// Pattern length must be equal to mask length.IntPtrScanSignature(byte[]pattern,stringmask);longScanSignature(stringpattern,stringmask);

Examples

// Write a NOP instruction where the pattern matches.WriteNop(ScanSignature("\xAA\xBB\xCC\x00\xDD\xEE","xxx?xx"),1);

Preprocessor

Codes use extended preprocessor features that aren't part of the C# language model.

These must be placed at the beginning of your code.

Importing assemblies

You can import a new assembly if it hasn't already been loaded with the base assemblies for the codes.

Examples

// Loads the System.Numerics assembly.
#load "System.Numerics.dll"usingSystem.Numerics;

Macros

You can create macros just as you would in C/C++ to compact necessary chunks of code into a single line.

Examples

#define MY_CONSTANT 1
#define PRINT(in_str) Console.WriteLine(in_str)
#define PRINT_MULTI(in_str, in_count) \
for (int i = 0; i < in_count; i++) \
Console.WriteLine(in_str);
Code "Example Code"PRINT(MY_CONSTANT);// Writes 1 to the console.PRINT_MULTI("Hello world!",10)// Writes "Hello world!" 10 times to the console.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Code Features

Gabriel edited this page Sep 26, 2023 · 2 revisions

Table of contents

Memory

Reading

The following functions are exposed for reading from a memory address;

char[]Read(IntPtraddress,IntPtrcount);TRead<T>(longaddress)whereT:unmanaged
T Read<T>(IntPtraddress)whereT: unmanaged

Examples

// Read a float value from the specified memory location and output it to the console.Console.WriteLine(Read<float>(myLocation));

Writing

The following functions are exposed for writing to a memory address;

voidWrite<T>(longaddress,Tdata)whereT:unmanaged
void Write<T>(longaddress,paramsT[]data)whereT:unmanaged// Use WriteProtected for writing data to protected memory pages.void WriteProtected<T>(longaddress,Tdata)whereT:unmanaged
void WriteProtected<T>(longaddress,paramsT[]data)whereT: unmanaged

Examples

// Write a 64-bit integer with the value of 1337 at the specified memory location.Write<long>(myLocation,1337);// ImplicitWrite(myLocation,1337L);// Explicit// Write a byte with the value of 5 at the specified memory location.Write<byte>(myLocation,5);// ImplicitWrite(myLocation,(byte)5);// Explicit// Write an array of bytes at the specified memory location.Write<byte>(myLocation,newbyte[]{1,3,3,7});// ImplicitWrite(myLocation,newbyte[]{1,3,3,7});// Explicit

Assembly injection

Codes have functions for assembling x86-64 code at runtime and injecting it.

The following functions are used for hooking assembly code;

// instructions: The instructions to assemble.// address: The address to insert the hook at.// behavior (optional): The behavior of the hooked code (see HookBehavior enum below).// parameter (optional): The execution mode of the hooked code (see HookParameter enum below).voidWriteAsmHook(stringinstructions,longaddress,HookBehaviorbehavior,HookParameterparameter);voidWriteAsmHook(longaddress,HookBehaviorbehavior,paramsstring[]instructions);// HookBehavior.Before: Write a jump/call to the custom code before the original code is done.// HookBehavior.After: Write a jump/call to the custom code after the original code is done (default).// HookBehavior.Replace: Write a jump/call over the original code, replacing it entirely (recommended if the original code contains jumps and calls).publicenumHookBehavior{Before,After,Replace}// HookParameter.Jump: Jump to the custom code (default).// HookParameter.Call: Call the custom code as its own function.publicenumHookParameter{Jump,Call}

A hook will replace an instruction at the starting address with a jmp/call instruction (depending on HookParameter) to the custom code in memory. Please be wary of the length of this instruction when using hooks to ensure the original code will still be valid once jumped back into.

  • 32-bit jmp is 5 bytes.
  • 64-bit jmp is 14 bytes.

Examples

// Writes a mid-asm hook at the specified address that replaces the original code.WriteAsmHook(@" mov eax, eax xor eax, eax ",myHookLocation,HookBehavior.Replace);// Writes a mid-asm hook at the specified address that executes after the original code.WriteAsmHook(myHookLocation,HookBehavior.After,"mov eax, eax","xor eax, eax");

Signature scanning

Codes have support for scanning memory for code-style patterns (added in v1.2).

The following functions are available;

// Pattern length must be equal to mask length.IntPtrScanSignature(byte[]pattern,stringmask);longScanSignature(stringpattern,stringmask);

Examples

// Write a NOP instruction where the pattern matches.WriteNop(ScanSignature("\xAA\xBB\xCC\x00\xDD\xEE","xxx?xx"),1);

Preprocessor

Codes use extended preprocessor features that aren't part of the C# language model.

These must be placed at the beginning of your code.

Importing assemblies

You can import a new assembly if it hasn't already been loaded with the base assemblies for the codes.

Examples

// Loads the System.Numerics assembly.
#load "System.Numerics.dll"usingSystem.Numerics;

Macros

You can create macros just as you would in C/C++ to compact necessary chunks of code into a single line.

Examples

#define MY_CONSTANT 1
#define PRINT(in_str) Console.WriteLine(in_str)
#define PRINT_MULTI(in_str, in_count) \
for (int i = 0; i < in_count; i++) \
Console.WriteLine(in_str);
Code "Example Code"PRINT(MY_CONSTANT);// Writes 1 to the console.PRINT_MULTI("Hello world!",10)// Writes "Hello world!" 10 times to the console.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Code Features

Gabriel edited this page Sep 26, 2023 · 2 revisions

Table of contents

Memory

Reading

The following functions are exposed for reading from a memory address;

char[]Read(IntPtraddress,IntPtrcount);TRead<T>(longaddress)whereT:unmanaged
T Read<T>(IntPtraddress)whereT: unmanaged

Examples

// Read a float value from the specified memory location and output it to the console.Console.WriteLine(Read<float>(myLocation));

Writing

The following functions are exposed for writing to a memory address;

voidWrite<T>(longaddress,Tdata)whereT:unmanaged
void Write<T>(longaddress,paramsT[]data)whereT:unmanaged// Use WriteProtected for writing data to protected memory pages.void WriteProtected<T>(longaddress,Tdata)whereT:unmanaged
void WriteProtected<T>(longaddress,paramsT[]data)whereT: unmanaged

Examples

// Write a 64-bit integer with the value of 1337 at the specified memory location.Write<long>(myLocation,1337);// ImplicitWrite(myLocation,1337L);// Explicit// Write a byte with the value of 5 at the specified memory location.Write<byte>(myLocation,5);// ImplicitWrite(myLocation,(byte)5);// Explicit// Write an array of bytes at the specified memory location.Write<byte>(myLocation,newbyte[]{1,3,3,7});// ImplicitWrite(myLocation,newbyte[]{1,3,3,7});// Explicit

Assembly injection

Codes have functions for assembling x86-64 code at runtime and injecting it.

The following functions are used for hooking assembly code;

// instructions: The instructions to assemble.// address: The address to insert the hook at.// behavior (optional): The behavior of the hooked code (see HookBehavior enum below).// parameter (optional): The execution mode of the hooked code (see HookParameter enum below).voidWriteAsmHook(stringinstructions,longaddress,HookBehaviorbehavior,HookParameterparameter);voidWriteAsmHook(longaddress,HookBehaviorbehavior,paramsstring[]instructions);// HookBehavior.Before: Write a jump/call to the custom code before the original code is done.// HookBehavior.After: Write a jump/call to the custom code after the original code is done (default).// HookBehavior.Replace: Write a jump/call over the original code, replacing it entirely (recommended if the original code contains jumps and calls).publicenumHookBehavior{Before,After,Replace}// HookParameter.Jump: Jump to the custom code (default).// HookParameter.Call: Call the custom code as its own function.publicenumHookParameter{Jump,Call}

A hook will replace an instruction at the starting address with a jmp/call instruction (depending on HookParameter) to the custom code in memory. Please be wary of the length of this instruction when using hooks to ensure the original code will still be valid once jumped back into.

  • 32-bit jmp is 5 bytes.
  • 64-bit jmp is 14 bytes.

Examples

// Writes a mid-asm hook at the specified address that replaces the original code.WriteAsmHook(@" mov eax, eax xor eax, eax ",myHookLocation,HookBehavior.Replace);// Writes a mid-asm hook at the specified address that executes after the original code.WriteAsmHook(myHookLocation,HookBehavior.After,"mov eax, eax","xor eax, eax");

Signature scanning

Codes have support for scanning memory for code-style patterns (added in v1.2).

The following functions are available;

// Pattern length must be equal to mask length.IntPtrScanSignature(byte[]pattern,stringmask);longScanSignature(stringpattern,stringmask);

Examples

// Write a NOP instruction where the pattern matches.WriteNop(ScanSignature("\xAA\xBB\xCC\x00\xDD\xEE","xxx?xx"),1);

Preprocessor

Codes use extended preprocessor features that aren't part of the C# language model.

These must be placed at the beginning of your code.

Importing assemblies

You can import a new assembly if it hasn't already been loaded with the base assemblies for the codes.

Examples

// Loads the System.Numerics assembly.
#load "System.Numerics.dll"usingSystem.Numerics;

Macros

You can create macros just as you would in C/C++ to compact necessary chunks of code into a single line.

Examples

#define MY_CONSTANT 1
#define PRINT(in_str) Console.WriteLine(in_str)
#define PRINT_MULTI(in_str, in_count) \
for (int i = 0; i < in_count; i++) \
Console.WriteLine(in_str);
Code "Example Code"PRINT(MY_CONSTANT);// Writes 1 to the console.PRINT_MULTI("Hello world!",10)// Writes "Hello world!" 10 times to the console.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Code Features

Gabriel edited this page Sep 26, 2023 · 2 revisions

Table of contents

Memory

Reading

The following functions are exposed for reading from a memory address;

char[]Read(IntPtraddress,IntPtrcount);TRead<T>(longaddress)whereT:unmanaged
T Read<T>(IntPtraddress)whereT: unmanaged

Examples

// Read a float value from the specified memory location and output it to the console.Console.WriteLine(Read<float>(myLocation));

Writing

The following functions are exposed for writing to a memory address;

voidWrite<T>(longaddress,Tdata)whereT:unmanaged
void Write<T>(longaddress,paramsT[]data)whereT:unmanaged// Use WriteProtected for writing data to protected memory pages.void WriteProtected<T>(longaddress,Tdata)whereT:unmanaged
void WriteProtected<T>(longaddress,paramsT[]data)whereT: unmanaged

Examples

// Write a 64-bit integer with the value of 1337 at the specified memory location.Write<long>(myLocation,1337);// ImplicitWrite(myLocation,1337L);// Explicit// Write a byte with the value of 5 at the specified memory location.Write<byte>(myLocation,5);// ImplicitWrite(myLocation,(byte)5);// Explicit// Write an array of bytes at the specified memory location.Write<byte>(myLocation,newbyte[]{1,3,3,7});// ImplicitWrite(myLocation,newbyte[]{1,3,3,7});// Explicit

Assembly injection

Codes have functions for assembling x86-64 code at runtime and injecting it.

The following functions are used for hooking assembly code;

// instructions: The instructions to assemble.// address: The address to insert the hook at.// behavior (optional): The behavior of the hooked code (see HookBehavior enum below).// parameter (optional): The execution mode of the hooked code (see HookParameter enum below).voidWriteAsmHook(stringinstructions,longaddress,HookBehaviorbehavior,HookParameterparameter);voidWriteAsmHook(longaddress,HookBehaviorbehavior,paramsstring[]instructions);// HookBehavior.Before: Write a jump/call to the custom code before the original code is done.// HookBehavior.After: Write a jump/call to the custom code after the original code is done (default).// HookBehavior.Replace: Write a jump/call over the original code, replacing it entirely (recommended if the original code contains jumps and calls).publicenumHookBehavior{Before,After,Replace}// HookParameter.Jump: Jump to the custom code (default).// HookParameter.Call: Call the custom code as its own function.publicenumHookParameter{Jump,Call}

A hook will replace an instruction at the starting address with a jmp/call instruction (depending on HookParameter) to the custom code in memory. Please be wary of the length of this instruction when using hooks to ensure the original code will still be valid once jumped back into.

  • 32-bit jmp is 5 bytes.
  • 64-bit jmp is 14 bytes.

Examples

// Writes a mid-asm hook at the specified address that replaces the original code.WriteAsmHook(@" mov eax, eax xor eax, eax ",myHookLocation,HookBehavior.Replace);// Writes a mid-asm hook at the specified address that executes after the original code.WriteAsmHook(myHookLocation,HookBehavior.After,"mov eax, eax","xor eax, eax");

Signature scanning

Codes have support for scanning memory for code-style patterns (added in v1.2).

The following functions are available;

// Pattern length must be equal to mask length.IntPtrScanSignature(byte[]pattern,stringmask);longScanSignature(stringpattern,stringmask);

Examples

// Write a NOP instruction where the pattern matches.WriteNop(ScanSignature("\xAA\xBB\xCC\x00\xDD\xEE","xxx?xx"),1);

Preprocessor

Codes use extended preprocessor features that aren't part of the C# language model.

These must be placed at the beginning of your code.

Importing assemblies

You can import a new assembly if it hasn't already been loaded with the base assemblies for the codes.

Examples

// Loads the System.Numerics assembly.
#load "System.Numerics.dll"usingSystem.Numerics;

Macros

You can create macros just as you would in C/C++ to compact necessary chunks of code into a single line.

Examples

#define MY_CONSTANT 1
#define PRINT(in_str) Console.WriteLine(in_str)
#define PRINT_MULTI(in_str, in_count) \
for (int i = 0; i < in_count; i++) \
Console.WriteLine(in_str);
Code "Example Code"PRINT(MY_CONSTANT);// Writes 1 to the console.PRINT_MULTI("Hello world!",10)// Writes "Hello world!" 10 times to the console.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Code Features

Gabriel edited this page Sep 26, 2023 · 2 revisions

Table of contents

Memory

Reading

The following functions are exposed for reading from a memory address;

char[]Read(IntPtraddress,IntPtrcount);TRead<T>(longaddress)whereT:unmanaged
T Read<T>(IntPtraddress)whereT: unmanaged

Examples

// Read a float value from the specified memory location and output it to the console.Console.WriteLine(Read<float>(myLocation));

Writing

The following functions are exposed for writing to a memory address;

voidWrite<T>(longaddress,Tdata)whereT:unmanaged
void Write<T>(longaddress,paramsT[]data)whereT:unmanaged// Use WriteProtected for writing data to protected memory pages.void WriteProtected<T>(longaddress,Tdata)whereT:unmanaged
void WriteProtected<T>(longaddress,paramsT[]data)whereT: unmanaged

Examples

// Write a 64-bit integer with the value of 1337 at the specified memory location.Write<long>(myLocation,1337);// ImplicitWrite(myLocation,1337L);// Explicit// Write a byte with the value of 5 at the specified memory location.Write<byte>(myLocation,5);// ImplicitWrite(myLocation,(byte)5);// Explicit// Write an array of bytes at the specified memory location.Write<byte>(myLocation,newbyte[]{1,3,3,7});// ImplicitWrite(myLocation,newbyte[]{1,3,3,7});// Explicit

Assembly injection

Codes have functions for assembling x86-64 code at runtime and injecting it.

The following functions are used for hooking assembly code;

// instructions: The instructions to assemble.// address: The address to insert the hook at.// behavior (optional): The behavior of the hooked code (see HookBehavior enum below).// parameter (optional): The execution mode of the hooked code (see HookParameter enum below).voidWriteAsmHook(stringinstructions,longaddress,HookBehaviorbehavior,HookParameterparameter);voidWriteAsmHook(longaddress,HookBehaviorbehavior,paramsstring[]instructions);// HookBehavior.Before: Write a jump/call to the custom code before the original code is done.// HookBehavior.After: Write a jump/call to the custom code after the original code is done (default).// HookBehavior.Replace: Write a jump/call over the original code, replacing it entirely (recommended if the original code contains jumps and calls).publicenumHookBehavior{Before,After,Replace}// HookParameter.Jump: Jump to the custom code (default).// HookParameter.Call: Call the custom code as its own function.publicenumHookParameter{Jump,Call}

A hook will replace an instruction at the starting address with a jmp/call instruction (depending on HookParameter) to the custom code in memory. Please be wary of the length of this instruction when using hooks to ensure the original code will still be valid once jumped back into.

  • 32-bit jmp is 5 bytes.
  • 64-bit jmp is 14 bytes.

Examples

// Writes a mid-asm hook at the specified address that replaces the original code.WriteAsmHook(@" mov eax, eax xor eax, eax ",myHookLocation,HookBehavior.Replace);// Writes a mid-asm hook at the specified address that executes after the original code.WriteAsmHook(myHookLocation,HookBehavior.After,"mov eax, eax","xor eax, eax");

Signature scanning

Codes have support for scanning memory for code-style patterns (added in v1.2).

The following functions are available;

// Pattern length must be equal to mask length.IntPtrScanSignature(byte[]pattern,stringmask);longScanSignature(stringpattern,stringmask);

Examples

// Write a NOP instruction where the pattern matches.WriteNop(ScanSignature("\xAA\xBB\xCC\x00\xDD\xEE","xxx?xx"),1);

Preprocessor

Codes use extended preprocessor features that aren't part of the C# language model.

These must be placed at the beginning of your code.

Importing assemblies

You can import a new assembly if it hasn't already been loaded with the base assemblies for the codes.

Examples

// Loads the System.Numerics assembly.
#load "System.Numerics.dll"usingSystem.Numerics;

Macros

You can create macros just as you would in C/C++ to compact necessary chunks of code into a single line.

Examples

#define MY_CONSTANT 1
#define PRINT(in_str) Console.WriteLine(in_str)
#define PRINT_MULTI(in_str, in_count) \
for (int i = 0; i < in_count; i++) \
Console.WriteLine(in_str);
Code "Example Code"PRINT(MY_CONSTANT);// Writes 1 to the console.PRINT_MULTI("Hello world!",10)// Writes "Hello world!" 10 times to the console.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Code Features

Gabriel edited this page Sep 26, 2023 · 2 revisions

Table of contents

Memory

Reading

The following functions are exposed for reading from a memory address;

char[]Read(IntPtraddress,IntPtrcount);TRead<T>(longaddress)whereT:unmanaged
T Read<T>(IntPtraddress)whereT: unmanaged

Examples

// Read a float value from the specified memory location and output it to the console.Console.WriteLine(Read<float>(myLocation));

Writing

The following functions are exposed for writing to a memory address;

voidWrite<T>(longaddress,Tdata)whereT:unmanaged
void Write<T>(longaddress,paramsT[]data)whereT:unmanaged// Use WriteProtected for writing data to protected memory pages.void WriteProtected<T>(longaddress,Tdata)whereT:unmanaged
void WriteProtected<T>(longaddress,paramsT[]data)whereT: unmanaged

Examples

// Write a 64-bit integer with the value of 1337 at the specified memory location.Write<long>(myLocation,1337);// ImplicitWrite(myLocation,1337L);// Explicit// Write a byte with the value of 5 at the specified memory location.Write<byte>(myLocation,5);// ImplicitWrite(myLocation,(byte)5);// Explicit// Write an array of bytes at the specified memory location.Write<byte>(myLocation,newbyte[]{1,3,3,7});// ImplicitWrite(myLocation,newbyte[]{1,3,3,7});// Explicit

Assembly injection

Codes have functions for assembling x86-64 code at runtime and injecting it.

The following functions are used for hooking assembly code;

// instructions: The instructions to assemble.// address: The address to insert the hook at.// behavior (optional): The behavior of the hooked code (see HookBehavior enum below).// parameter (optional): The execution mode of the hooked code (see HookParameter enum below).voidWriteAsmHook(stringinstructions,longaddress,HookBehaviorbehavior,HookParameterparameter);voidWriteAsmHook(longaddress,HookBehaviorbehavior,paramsstring[]instructions);// HookBehavior.Before: Write a jump/call to the custom code before the original code is done.// HookBehavior.After: Write a jump/call to the custom code after the original code is done (default).// HookBehavior.Replace: Write a jump/call over the original code, replacing it entirely (recommended if the original code contains jumps and calls).publicenumHookBehavior{Before,After,Replace}// HookParameter.Jump: Jump to the custom code (default).// HookParameter.Call: Call the custom code as its own function.publicenumHookParameter{Jump,Call}

A hook will replace an instruction at the starting address with a jmp/call instruction (depending on HookParameter) to the custom code in memory. Please be wary of the length of this instruction when using hooks to ensure the original code will still be valid once jumped back into.

  • 32-bit jmp is 5 bytes.
  • 64-bit jmp is 14 bytes.

Examples

// Writes a mid-asm hook at the specified address that replaces the original code.WriteAsmHook(@" mov eax, eax xor eax, eax ",myHookLocation,HookBehavior.Replace);// Writes a mid-asm hook at the specified address that executes after the original code.WriteAsmHook(myHookLocation,HookBehavior.After,"mov eax, eax","xor eax, eax");

Signature scanning

Codes have support for scanning memory for code-style patterns (added in v1.2).

The following functions are available;

// Pattern length must be equal to mask length.IntPtrScanSignature(byte[]pattern,stringmask);longScanSignature(stringpattern,stringmask);

Examples

// Write a NOP instruction where the pattern matches.WriteNop(ScanSignature("\xAA\xBB\xCC\x00\xDD\xEE","xxx?xx"),1);

Preprocessor

Codes use extended preprocessor features that aren't part of the C# language model.

These must be placed at the beginning of your code.

Importing assemblies

You can import a new assembly if it hasn't already been loaded with the base assemblies for the codes.

Examples

// Loads the System.Numerics assembly.
#load "System.Numerics.dll"usingSystem.Numerics;

Macros

You can create macros just as you would in C/C++ to compact necessary chunks of code into a single line.

Examples

#define MY_CONSTANT 1
#define PRINT(in_str) Console.WriteLine(in_str)
#define PRINT_MULTI(in_str, in_count) \
for (int i = 0; i < in_count; i++) \
Console.WriteLine(in_str);
Code "Example Code"PRINT(MY_CONSTANT);// Writes 1 to the console.PRINT_MULTI("Hello world!",10)// Writes "Hello world!" 10 times to the console.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Code Features

Gabriel edited this page Sep 26, 2023 · 2 revisions

Table of contents

Memory

Reading

The following functions are exposed for reading from a memory address;

char[]Read(IntPtraddress,IntPtrcount);TRead<T>(longaddress)whereT:unmanaged
T Read<T>(IntPtraddress)whereT: unmanaged

Examples

// Read a float value from the specified memory location and output it to the console.Console.WriteLine(Read<float>(myLocation));

Writing

The following functions are exposed for writing to a memory address;

voidWrite<T>(longaddress,Tdata)whereT:unmanaged
void Write<T>(longaddress,paramsT[]data)whereT:unmanaged// Use WriteProtected for writing data to protected memory pages.void WriteProtected<T>(longaddress,Tdata)whereT:unmanaged
void WriteProtected<T>(longaddress,paramsT[]data)whereT: unmanaged

Examples

// Write a 64-bit integer with the value of 1337 at the specified memory location.Write<long>(myLocation,1337);// ImplicitWrite(myLocation,1337L);// Explicit// Write a byte with the value of 5 at the specified memory location.Write<byte>(myLocation,5);// ImplicitWrite(myLocation,(byte)5);// Explicit// Write an array of bytes at the specified memory location.Write<byte>(myLocation,newbyte[]{1,3,3,7});// ImplicitWrite(myLocation,newbyte[]{1,3,3,7});// Explicit

Assembly injection

Codes have functions for assembling x86-64 code at runtime and injecting it.

The following functions are used for hooking assembly code;

// instructions: The instructions to assemble.// address: The address to insert the hook at.// behavior (optional): The behavior of the hooked code (see HookBehavior enum below).// parameter (optional): The execution mode of the hooked code (see HookParameter enum below).voidWriteAsmHook(stringinstructions,longaddress,HookBehaviorbehavior,HookParameterparameter);voidWriteAsmHook(longaddress,HookBehaviorbehavior,paramsstring[]instructions);// HookBehavior.Before: Write a jump/call to the custom code before the original code is done.// HookBehavior.After: Write a jump/call to the custom code after the original code is done (default).// HookBehavior.Replace: Write a jump/call over the original code, replacing it entirely (recommended if the original code contains jumps and calls).publicenumHookBehavior{Before,After,Replace}// HookParameter.Jump: Jump to the custom code (default).// HookParameter.Call: Call the custom code as its own function.publicenumHookParameter{Jump,Call}

A hook will replace an instruction at the starting address with a jmp/call instruction (depending on HookParameter) to the custom code in memory. Please be wary of the length of this instruction when using hooks to ensure the original code will still be valid once jumped back into.

  • 32-bit jmp is 5 bytes.
  • 64-bit jmp is 14 bytes.

Examples

// Writes a mid-asm hook at the specified address that replaces the original code.WriteAsmHook(@" mov eax, eax xor eax, eax ",myHookLocation,HookBehavior.Replace);// Writes a mid-asm hook at the specified address that executes after the original code.WriteAsmHook(myHookLocation,HookBehavior.After,"mov eax, eax","xor eax, eax");

Signature scanning

Codes have support for scanning memory for code-style patterns (added in v1.2).

The following functions are available;

// Pattern length must be equal to mask length.IntPtrScanSignature(byte[]pattern,stringmask);longScanSignature(stringpattern,stringmask);

Examples

// Write a NOP instruction where the pattern matches.WriteNop(ScanSignature("\xAA\xBB\xCC\x00\xDD\xEE","xxx?xx"),1);

Preprocessor

Codes use extended preprocessor features that aren't part of the C# language model.

These must be placed at the beginning of your code.

Importing assemblies

You can import a new assembly if it hasn't already been loaded with the base assemblies for the codes.

Examples

// Loads the System.Numerics assembly.
#load "System.Numerics.dll"usingSystem.Numerics;

Macros

You can create macros just as you would in C/C++ to compact necessary chunks of code into a single line.

Examples

#define MY_CONSTANT 1
#define PRINT(in_str) Console.WriteLine(in_str)
#define PRINT_MULTI(in_str, in_count) \
for (int i = 0; i < in_count; i++) \
Console.WriteLine(in_str);
Code "Example Code"PRINT(MY_CONSTANT);// Writes 1 to the console.PRINT_MULTI("Hello world!",10)// Writes "Hello world!" 10 times to the console.

Clone this wiki locally