Skip to content

Instantly share code, notes, and snippets.

View PsychoTea's full-sized avatar

Ben Sparkes PsychoTea

View GitHub Profile
struct IOExternalMethodArguments
{
uint32_t version;
uint32_t selector;
uint64_t asyncWakePort;
uint64_t asyncReference;
uint32_t asyncReferenceCount;
const uint64_t *scalarInput;
uint32_t scalarInputCount;
const void *structureInput;
@PsychoTea
PsychoTea / PanicParser.py
Last active June 11, 2023 19:54
A collection of useful iOS-related scripts
import sys
import json
import re
kslide = 0x0
if len(sys.argv) < 2:
print("Usage: PanicParser.py [file path]")
exit()
import idc
def define_func(addr, name):
idc.MakeCode(addr)
idc.MakeFunction(addr)
idc.MakeNameEx(addr, name, idc.SN_NOWARN)
print("%s @ %s" % (name, hex(addr)))
@PsychoTea
PsychoTea / writeup.md
Created March 4, 2025 20:59
Cracking Powersoft ArmoniaPlus Password Protected Presets

Cracking Powersoft ArmoniaPlus Password Protected Presets

Presets in ArmoniaPlus can be protected with a password. While this feature could be used to stop someone modifying presets in a workspace accidentially, it seems to most commonly be used by speaker manafacturers wanting to "protect" their EQ/DSP settings for their speakers (ie. EAW greybox files).

Fortunately, it's easy enough to bypass the password protection in Armnonia by editing the DLL's using dnSpy. This can also be useful if you forget a preset password you previously set.

  1. Ensure Armonia is closed
  2. Open PowersoftSDK.Entities.dll in dnSpy(Ex) (must be running as admin)
  3. Browse to the PowersoftSDK.Entities.Components.Base namespace and open the LockerComponent<T> class
  4. Edit the IsCodeValid function and simply replace the contents with a return true statement
@PsychoTea
PsychoTea / fixup_adrp_add.py
Created September 21, 2025 22:07
A small Python script using r2 to fix up adrp/add instructions which become invalid after creating a kernel cache with kmutil.
#!/usr/bin/env python3
import argparse
from dataclasses import dataclass
import re
import shutil
import r2pipe