Skip to content

Instantly share code, notes, and snippets.

View holly-hacker's full-sized avatar
:shipit:

HoLLy holly-hacker

:shipit:
View GitHub Profile

Keybase proof

I hereby claim:

  • I am holly-hacker on github.
  • I am holly_hacker (https://keybase.io/holly_hacker) on keybase.
  • I have a public key whose fingerprint is 179E 76A3 DFFB CFC7 FB50 6B82 7906 4AFB 3133 FCCF

To claim this, I am signing this object:

//META{"name":"HoLLy's theme compilation","description":"Compilation of themes. Includes ClearVision Amethyst, Compact Account, Title bar, and some custom things.","author":"HoLLy","version":"1"}*//{}
/* "ClearVision - Amethyst v4" by @Zerthox */
@import url(https://gitcdn.xyz/repo/Zerthox/ClearVision/master/themes/ClearVision_Amethyst.theme.css);
/*Compact Account by Maple*/
@import url(https://gitcdn.xyz/repo/mrmaple240/betterdiscord-mini-themes/master/CompactAccount.theme.css);
/*Status Circles Edit*/
/*TODO*/
@holly-hacker
holly-hacker / ManagedHook.cs
Last active August 12, 2021 08:27
Creating managed hooks
namespace ns { class cl1 { void m1() {
// call to make sure they're JITed
// can probably be done another way
Assembly.GetCallingAssembly();
MainForm.PGetCallingAssembly(); // whatever method you want
MethodInfo m1 = typeof(Assembly).GetMethod("GetCallingAssembly", BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public);
MethodInfo m2 = typeof(MainForm).GetMethod("PGetCallingAssembly", BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public);
private static void Main(string[] args)
{
// Find the location of the running osu! client
string p = Process.GetProcessesByName("osu!").FirstOrDefault()?.MainModule.FileName;
if (p == null)
throw new Exception("Couldn't find process");
// Load this assembly and find the InterProcessOsu class
var ass = Assembly.LoadFrom(p);
var ipoType = ass.ExportedTypes.First(a => a.FullName == "osu.Helpers.InterProcessOsu");
namespace SMAZ {
const codebook: { [idx: string]: number } = {
// tslint:disable-next-line:object-literal-sort-keys
" ": 0, "the": 1, "e": 2, "t": 3, "a": 4, "of": 5, "o": 6, "and": 7, "i": 8, "n": 9, "s": 10, "e ": 11, "r": 12, " th": 13, " t": 14,
"in": 15, "he": 16, "th": 17, "h": 18, "he ": 19, "to": 20, "\r\n": 21, "l": 22, "s ": 23, "d": 24, " a": 25, "an": 26, "er": 27, "c": 28,
" o": 29, "d ": 30, "on": 31, " of": 32, "re": 33, "of ": 34, "t ": 35, ", ": 36, "is": 37, "u": 38, "at": 39, " ": 40, "n ": 41, "or": 42,
"which": 43, "f": 44, "m": 45, "as": 46, "it": 47, "that": 48, "\n": 49, "was": 50, "en": 51, " ": 52, " w": 53, "es": 54, " an": 55,
" i": 56, "\r": 57, "f ": 58, "g": 59, "p": 60, "nd": 61, " s": 62, "nd ": 63, "ed ": 64, "w": 65, "ed": 66, "http://": 67, "for": 68,
"te": 69, "ing": 70, "y ": 71, "The": 72, " c": 73, "ti": 74, "r ": 75, "his": 76, "st": 77, " in": 78, "ar": 79, "nt": 80, ",": 81,
" to": 82, "y": 83, "n
// Inspired by DiscordInjections, but written from scratch
// https://github.com/DiscordInjections/DiscordInjections/blob/ea8cd3bfcbe2d1bf233f5b002df1830d9eafd245/engine/plugins/hooks/index.js
declare interface Window {
webpackJsonp: WebpackHelper.WebpackJsonpObject[];
}
namespace WebpackHelper {
declare interface InputConditions {
conditions?: [(x: any) => boolean];
@holly-hacker
holly-hacker / nsm_player.user.js
Created October 14, 2018 16:11
NinSheetMusic MIDI player
// ==UserScript==
// @name NinSheetMusic MIDI player
// @version 1
// @grant none
// @include https://www.ninsheetmusic.org/browse/series/*
// ==/UserScript==
function injectJs(url, callback) {
script = document.createElement('script');
@holly-hacker
holly-hacker / Evaluator.cs
Created October 29, 2018 20:05
Mathematical expression parser
using System;
using System.Collections.Generic;
using System.Linq;
namespace test20181029_matheval {
public static class Evaluator
{
private static Dictionary<char, Func<double, double, double>>[] functions;
@holly-hacker
holly-hacker / CytusChartDump.README.md
Last active February 2, 2021 03:09
Cytus2 chart dump

Cytus 2 chart dump

Explains how to dump decrypted chart data from Cytus 2.

Requirements

  • Rooted android device (or emulator) capable of running GameGuardian
  • IDA Pro 7.0+
  • RoslynPad or LinqPad for .csx scripts

Steps

  1. Dump libil2cpp from memory (.so in apk is packed) and open it in IDA Pro. You can use something like GameGuardian for this. Keep in mind that there are 2 memory regions that make up the full binary.
@holly-hacker
holly-hacker / TeachConvert.cs
Last active November 25, 2018 18:14
Converts Teach2000 files to CSV and Anki's APKG format.
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml;
using AnkiSharp; // Import form NuGet package
namespace TeachConvert