Skip to content

Instantly share code, notes, and snippets.

View leptos-null's full-sized avatar
🏔️
Darwin tooling

Leptos leptos-null

🏔️
Darwin tooling
View GitHub Profile
@leptos-null
leptos-null / swift-hook.md
Last active October 26, 2024 23:12
Hooking Swift functions

This article aims to describe how to hook Swift functions.

Thanks to help from @NightwindDev for discussion and testing.

Overall, the idea is simple: Write our own Swift code that will have the same calling convention as the target code, then get a pointer to our own code and the target code, and call MSHookFunction with these values.

Code

@leptos-null
leptos-null / asciicheck.c
Created August 20, 2024 04:21
Check input for non-print bytes
//
// Created by Leptos on 12/25/19.
// Copyright © 2019 Leptos. All rights reserved.
//
#import <stdio.h>
#import <fcntl.h>
#import <unistd.h>
#import <ctype.h>
@leptos-null
leptos-null / print.md
Last active July 31, 2024 20:36
Print range with printf without format specifiers

I was reviewing my GitHub gists and saw this:

#include <stdio.h>
#include <stdlib.h>

#pragma clang diagnostic ignored "-Wformat-security"

int main() {
    /* 4 bytes (chars)
@leptos-null
leptos-null / abi.py
Last active September 10, 2023 22:55 — forked from dlevi309/abi.py
script to switch between iOS13 (00000002) and iOS14 (80000002) arm64e ABI
import sys
FAT_MAGIC = b'\xca\xfe\xba\xbe' # big endian
FAT_MAGIC_64 = b'\xca\xfe\xba\xbf' # big endian
MH_MAGIC_64 = b'\xfe\xed\xfa\xcf' # big endian
MH_CIGAM_64 = b'\xcf\xfa\xed\xfe' # little endian
CPU_TYPE_ARM64 = b'\x01\x00\x00\x0c' # big endian
CPU_SUBTYPE_IOS13 = b'\x00\x00\x00\x02' # big endian
@leptos-null
leptos-null / OrderedSet.swift
Last active June 3, 2023 07:57
A simple OrderedSet implementation backed by an Array and a Set
import Foundation
struct OrderedSet<Element: Hashable>: Sequence {
private var order: [Element]
private var membership: Set<Element>
func makeIterator() -> IndexingIterator<Array<Element>> {
order.makeIterator()
}
@leptos-null
leptos-null / redirect_stdout.swift
Created May 27, 2023 03:57
Swift function to redirect stdout. Helpful for using print in environments where stdout is not easily accessible
import Foundation
func redirectStdout(to path: String) throws {
let (openResult, posixErrorCode) = path.withCString {
// idea thanks to https://github.com/leptos-null/ClassDumpRuntime/blob/31e3601/classdumpctl/main.m#L456-L459
// error checking thanks to https://github.com/leptos-null/Forest/blob/ba4b89a/Shared/Tar.swift#L172-L174
let result = open($0, O_WRONLY | O_CREAT | O_TRUNC, 0o644)
let globalError = errno // copy errno since it may change before we access it again later
return (result, globalError)
}
@leptos-null
leptos-null / ForEach+Enumerated.swift
Created February 6, 2023 21:13
SwiftUI ForEach initializers that create enumerated elements
import SwiftUI
extension ForEach {
init<Base: Sequence>(enumerated base: Base, @ViewBuilder content: @escaping (Data.Element) -> Content) where Data == Array<EnumeratedSequence<Base>.Element>, ID == Base.Element, Content: View, ID: Identifiable {
self.init(Array(base.enumerated()), id: \.element, content: content)
}
init<Base: Sequence>(enumerated base: Base, id: KeyPath<Base.Element, ID>, @ViewBuilder content: @escaping (Data.Element) -> Content) where Data == Array<EnumeratedSequence<Base>.Element>, Content: View {
let basePath: KeyPath<EnumeratedSequence<Base>.Element, Base.Element> = \.element
self.init(Array(base.enumerated()), id: basePath.appending(path: id), content: content)
}
@leptos-null
leptos-null / ARCBlood.md
Created April 12, 2020 16:56
Red Cross Blood REST API Reference

Red Cross Blood REST API Reference

This guide is based on research from version 1.7.3 of Red Cross Blood iOS app.

Host: blood.arc.cubeapis.com

This reference is for version 2.1 of the interface.

Authentication

Keybase proof

I hereby claim:

  • I am leptos-null on github.
  • I am leptos_null (https://keybase.io/leptos_null) on keybase.
  • I have a public key ASA0dcmIggGRcMrdxDzFRDAutr7TdLveEOWsHbCkWeWN0Qo

To claim this, I am signing this object:

@leptos-null
leptos-null / watchPreviewDate.m
Created September 19, 2019 05:10
The date used for previews on watchOS, primarily for complications
static NSDate *watchPreviewDate() {
static NSDateComponents *comps;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
comps = [NSDateComponents new];
comps.calendar = NSCalendar.autoupdatingCurrentCalendar;
comps.timeZone = NSTimeZone.localTimeZone;
comps.year = 2014;
comps.month = 9;
comps.day = 9;