#development
1 messages · Page 202 of 1
It’s a file designated to opening the I’m feeling lucky page of google
im doing my own assert
should i abort() or exit(1)
use std/io;
global pub;
fn assert(ElleMeta meta, bool condition) {
if !condition {
fprintf(
stderr,
"%s: Assertion '%s' failed.\n",
meta.caller,
meta.exprs[0]
);
abort();
}
}
``` and is there anything more necessary
does anyone know how to fix Xcode Error loading required libraries. If there is an ongoing installation please re-install.
then if i run just git it says a big error log to big for here
this only happens to git or any command when Xcode is installed, any command i run brings up the Xcode command line tools utility and says this command requires git to be installed (it is installed) + the big error log
okok ty
hey i dont know if this is the right channel but is there any developers here i can pay to make a custom theming tweak for instagram? need one that can be compiled into dylib for IPA and i will pay first of course
send me a pm with all the details!
Debs contain the dylibs, so you could use an already existing one aslong as it works for your device
If its just about getting the dylib of course
yea what i mean by that is i dont want dependanices that dont work on jailed devices
so like no prefrence loader or color pickers that arent compatible yk
*ideally use alderis
I see, well there isnt a simple solution to use existing ones then which use these things
if you want a color picker then use https://github.com/MrGcGamer/LibGcUniversalDocumentation
it uses alderis on < ios 14 and the stock color picker on ios 14+
although idk if its injectable into apps without a jailbreak
considering you need https://havoc.app/package/libgcuniversal
thanks if anyone wants to do this for me ill let them know
I needto learn how to train a tensorflow model
it is so important that cs people learn everything about ai right now
because if you want a career in it later
you HAVE to master it
its going to be the future by statistic
what
yapper
ur not gonna say im a yapper in 5 years
jobs will reject you if you dont have 4+ years in chatgpt coding
i write low level code in ways that AI fails to accurately debug
every time i ask it any question about a problem im having, not once has it gotten it correct
i learnt to proompt, thats not the issue
i know how to proompt to solve problems in less low level environments
it just doesnt know
youre just saying random irrelevant stuff is the point
idk why im even talking to someone thats 99% probability a troll
i dont know why your being so toxic. Im just telling you CS careers are going to be requiring AI knowledge in the future the way its rapidly evolving
How am i being toxic
your passive aggressive tone. im just trying to tell you stuff and youre accusing me of being a troll 🤣
wasnt here to offend anyone or start an argument lol
wtvr
imo you dont need ai to succeed in CS
as long as youre intelligent enough to fuck around and find out
and you have examples of how to do whatever you wanna do
you can do it
thats how it used to be
i program a lot and rarely need AI to help me code, but a lot big tech companies prefer the programmers to be using AI to "improve efficiency" and "cut on labor costs"
right now they dont care about it but in the future they will probably ask for your experience in using AI 🤣
the user below me is dangerous do not trust them

hii i have a few questions:
would an app running as root still prompt the user for permissions for stuff like local network discovery, bluetooth, audio device access etc?
which APIs is responsible for prompting the user for permission for the same stuff as above?
Gosh I hope to god all the tech companies promoting or doing this fail completely.
its sad but thats what its coming too
People should start becoming hackers if that is the case
if big tech companies can save money by laying off thousands of people they will do the same with AI
i really hope it does not start lazy work
i was just about to finish my message lol
was gonna say how its gonna endorse lazier and sloppier code whcih might reveal exploits to hackers
the way everyone keeps using AI now
i am not an expert but my guess is no, but i have no idea if maybe those rooted apps run in the sandbox still somehow
yeah but you can make them ignore sandbox iirc
thats what i would expect
the sandbox is just a boolean in the plist
Does palera1n work on freebsd
it's more complicated than that though
entitlements don't work unless you have signature that allows for the usage of them
else the binary gets killed
yeah but i'm talking about a jailbroken device where you can sign freely stuff
well i mean, running as the root user doesn't bypass every permission possible
it'll get you file access in some places but to interact with bluetooth or local network you still need to use apple's own apis etc
do you know what APIs are used for this?
they're documented
same goes for the private headers for these (sort of)
that's how we make tweaks
specifically, requesting permissions is something app store apps must do
which is why apple would have those documented
private headers required some slight reverse engineering work on ios to build/find
(they're private because the system uses them)
Trust me I've seen the code ChatGPT outputs and its quite poor at anything semi complex
I seriously doubt this. Tech companies want to replace developers with AI, and will try to get AI to do what the devs do but realistically don't care if you use it or not as long as your efficent enough. Job interviews won't care how many years of AI experience you have for a job not using ai just like they don't care what IDE/text editor you use today.
Also I think this may be relevant https://daniel.haxx.se/blog/2024/01/02/the-i-in-llm-stands-for-intelligence/
Interesting take. I understand where you are going and i definetly agree with you on ChatGPT's coding ability. is not very good. However I have witnessed multiple people seeking job opportunities and have been asked about AI experience in terms of usage and helping productivity
My mom is an attourney, and she knows a friend building some legal software. Apparently he chose one developer over another because one was more proficient in ChatGPT and would make things more efficient blah blah
its stupid bullshit
i am seriouskly against it and dont think this culture should evole
i think it is not the worst idea to learn how to use it as a tool to work more efficiently especially given the increasingly bad state of search engines
yea give me a couple hours i was gonna set it up during defcon and accidentally turned off the power strip my modem was plugged into before leaving my house
intjpray
i will remind you in <t:1723690800:R>
gm
i cannot stress enough about how horrible it is the amount we rely on AI
i promise you some big tech company is going to have a major security breach and its going to be because they used chatgpt to code a fundamental part of the app and didnt check for an exploit lmao
thats called job security 
oh
there is a porn gif somewhere in this server
like someone went back to an old message and editied it
Oh no
How can I hook SwiftUI library? For example I want to hook SwiftUI.accessibilityNode
I know how to hook swift classes but I think that in this case the process I'm i injecting into in my plist is wrong, I wrote the app identifier there
You can’t hook swift classes, at least from what I know
I have no idea why, perhaps if someone could explain
😁
Hooking actual SwiftUI views is awful I hear
If they are public, it’s relatively simple. You grab the mangled name of the original function and your replacement function, dlsym both and use MSHookFunction with the pointers
If they are private, you have to manually find the memory address to hook them
That could be true
I‘m just talking about regular swift here
Oh yeah you use a hookf with a MSFindSymbol ?
I don’t know what hookf exactly takes but you basically just MSHookFunction the results of MSFindSymbol
Yeah so hookf would work
I couldn't even find where the UI logic for a SwiftUI view is located
that's completely normal
hook dlsym 
@slim bramble wwdc is over
@slim bramble wwdc is over
Stfu
Stfu
You can indirectly
bro back from the dead
%hookf(void, symbol, arg) { /* whatever */ }
%ctor {
%init(symbol = MSFindSymbol("joe"));
}```
Why's there a #apple-event channel still then?
The betas…
Commented out } moment.
💀
doesn't seem like i missed much tbh
sup
Yeah
Send one in ono again
Yeah saw
I’m gonna send one too
We need more people to send slurs in ono
You lucky hydrate isn’t on rn
Would’ve spam pinged him to snipe
Dm me one
I’m gonna send one too
Fun
you can be both asian and american
pretty sure california is half asian americans atp
I can concur
Ban him then
Does anybody know why and if there is a way to fix the issue where; whenever the shared AVAudioSession's category is AVAudioSessionCategoryPlayAndRecord the overall volume is very low compared to lets say playback and ambient categories ? It also only plays on one speaker instead of two
I’ve got a 3G with a broken home button. An ideas on how to fix that?
Nah for a tweak, the category itself is for when you want to both record and play audio (which is actually how phone calls work i guess) anyways i figured it out, the answer is
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
I made it lol, trying to think of a couple of more features untill i release though, currently it only has your bluetooth idea and just allowing audio when ringer switch is on silent

what more do i need to change the derived data path
this is pissing me off
xcodebuild clean build -scheme nathanlr -configuration Release -derivedDataPath build/DerivedData CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED="NO" BUILD_DIR="build/" MODULE_CACHE_DIR="build/ModuleCache" DERIVED_DATA_PATH="build/DerivedData"```
-iphoneos/nathanlr.build/Objects-normal/arm64/MD.o -index-unit-output-path /usprebooter.build/Release-iphoneos/nathanlr.build/Objects-normal/arm64/GeneratedAssetSymbols.o
/Users/nathan/building/usprebooter_pf/usprebooter/UI/Tabs/ViewsInOptions/ChangelogViewController.swift:11:8: error: no such module 'Markdown'
import Markdown
^```
is this using swiftpods or whatever its called
@proud geyser bro i just realised this button already does that 💀
ohhh yeh 💀💀
is there a shortcut for that to the quick switch with action button
Maybe stock ios isn't bad after all
No idea but i don't think so
this the lame part yk
but better than nothing
ion speak that language
The thing you said, it does exist
Shortcut devs are so real for this tbh
how do i toggle lol
idk how to get condition
you need 3rd party apps for that
ios 18 dev beta 6
ohh yee there is variable
but does it save the value every time the shortcut runs ?
Idk, u could make/delete file for toggle
too much work
i’ll just create 2 shortcuts
i’ve that enables and one that disables
Legit thought this was ios 18
🔥
👍
God I’m tired of waiting for a iOS 17 jb, I am starting to feel the need to contribute. Are there any poc’s?
I literally never saw another one
There was one of rootkit's but it only worked on intel macos i think
this only works on intel
wait, wrong cve
my bad
@plain python please make sure watchOS 11 has timers and alarms are synced with your iPhone
CVE-2024-27815 is the one that only works on intel
hello, the 11:00 PM EST reminder timer has gone off
apple would actually do this
Soon all non pac instructions gonna be deprecated fr
all app store apps need to be recompiled
they thought localhost was a website 😭
Out of all urls they had to choose they chose localhost
Almost as if "localhost" in fact has a special meaning
I wonder what it means
One of life’s mysteries
meow
true
wrong chat :3
umm :3
Do you really live with a that small amount of light 😭
no, the camera is making it look a lot darker than it actually is

Why is your name "the the the the the"
the the the the the
i added struct methods to elle
like impl in rust
fn Vector3.rotate(Vector3 self, Vector3 axis, f32 angle) {
Vector3 u = axis.normalize();
f32 cos_theta = cos(angle);
f32 sin_theta = sin(angle);
Vector3 term1 = self.scale(cos_theta);
Vector3 term2 = u.cross(self).scale(sin_theta);
Vector3 term3 = u.scale(u.dot(self) * (1.0 - cos_theta));
return term1.add(term2).add(term3);
}
Vector3 v = Vector3 { x = 1.0, y = 0.0, z = 0.0 };
Vector3 axis = Vector3 { x = 0.0, y = 0.0, z = 1.0 };
f32 angle = PI / 2.0;
Vector3 rotated = v.rotate(axis, angle);
dbg(rotated.x, rotated.y, rotated.z);
Dude why do people use tailwind
I keep having to look up the shorthand for everythhing when I could just write normal css so much faster
No yeah I also prefer normal css
but tailwind is getting more and more popular so I have to learn it
did u also learn rust bcs of that
💀
How can I get device udid if my tweak is injected into an app?
no i just wanted to do something other than websites
oh
@wooden yarrow's timezone is Europe/Amsterdam 🇳🇱
It is currently 09:02 PM CEST
wtf
trolled
Anyone?
is that error descriptive enough
actually that doesnt make sense
it should be in
there
or rather
Perfer tbid
rust compiler usually says {{integer}}
i see
Does anyone know how i would get the proper argument types for _XBValidateStoryboard
They are all just int in hopper
the same way you find it for any other function
look at the usage of the arguments, and look at what's fed into it when it's called by other functions
the reason im doing this is i need a good workaround for this
Snapshot generation request for bundleID: com.hammerandchisel.discord rejected due to the app being denylisted.```
Opa said theres code to delete the denylist or smth in trollstore, but i couldnt find anything relating to that
try not to cringe challenge
%hookf(int, XBValidateStoryboard) {
return 0;
}```
What tool is that
hopper
nathan try to find anything without being spoonfed challenge (impossible)
https://github.com/opa334/TrollStore/blob/main/RootHelper/main.m#L1395
I looked all over
Whatever I found a workaround
That wouldnt have worked anyways
because it would have just re added it to that plist
then remove it afterwards
but not even sure if this the right plist
yea i looked and i dont think it is
i cannot thats the thing its injecting into the app by replacing the main binary
I am kinda glad this person is not interviewing people anymore
seems like an ass
whar
yikes
i would probably fold it personally
let me take a look through the iterator methods to see if theres something else
the way that output array looks makes me remember something
I understand it is a simple question but is every person you trying to get for a junior position gonna know logic like that when the position you are hiring for is frontend JS
just seems like a gotcha more then oh his fundamental logic is weak
i mean not during an interview i wouldnt, that question screams C so i would probably use cstdlib functions
or just make a loop by hand
idk
that does seem true based on their replies that sacrosanct sent
why would you not hire whatever that is
imagine being a recruiter and still not having grown past being scared of symbols that look a little different
He said he was hiring people for JS so I am confused on why you throw them this question and then don't hire them based off this alone
oh
the person sounded like an ass
but 1. i never had a job and 2. I never had an interview position so i shall not judge whether he's fit
let input = [Some(1), Some(5), None, Some(7), Some(2), Some(9), None, Some(4)];
let mut out = Vec::new();
let last = input
.into_iter()
.fold(Vec::new(), |acc, e| {
if let Some(n) = e {
acc.push(n);
} else {
out.push(acc);
acc = Vec::new();
}
});
out.push(last);
out
something like that
this is terrifying
Most of this is unnecessary
i think that code block needs to be burned at the stake
i swear there is some function im missing that just does this operation
no bloat
Options are only for if it can possibly not be a value (like null in C)
correct
i cant make a null without having an Option
Oh I didn't notice the Nones
What are you even trying to accomplish here?
It's also invalid afaik
acc isn't mutable
You assign to acc but it's not mutable afaik
oh i wrote that backwards
into_iter is deprecated also afaik
It was replaced with iter
that doesnt even make any sense
I'm aware XD
I don't like Rust either, I only use it for embedded purposes
Oh
Guess I was mistaken
iter might just be shorthand
ie where the optimization is necessary
Otherwise I just use C lmao, C is more fun
it does something completely different
Are you sure?
into_iter converts into an interator, iter creates an iterator by taking references of all items
Ah right, I believe iter is preferred as it doesn't take the value
i usually want the values to die though 
Well they'll die at the end of the context
let input = [Some(1), Some(5), None, Some(7), Some(2), Some(9), None, Some(4)];
let mut out = Vec::new();
let last = input
.into_iter()
.fold((Vec::new(), []), |acc, e| {
if let Some(n) = e {
acc.1.concat([n])
} else {
out.push(acc.clone());
[]
}
});
out.push(last);
out
i wonder if this works
sometimes I wonder what the fuck .into_iter and .reduce means
but it's just skill issue
ok i cant think rn how to make it work with reduce and automatically make the right type
oh its because reduce picks the first element right
completly different operation
let me fix it
this is awful
i need to learn haskell to make it work right
Rust sucks
you suck
Thanks
other languages suck more than rust
I agree
also running async is so much easier than rust
Also true as it's part of the language
it's just using task.run or adding await to everything
If I could use C# for everything I would lmao
let mut split = vec![vec![]];
for item in that.into_iter().rev() {
match item {
Some(value) => split.last_mut().unwrap().push(value),
None => split.push(vec![]),
}
}
``` would this work?
ok but ngl c# for backend would be cool
the problem was i wanted to do it functionally
oh
but i cant figure it out
For backend?
I think it exists
what's scala
functional JVM language
functional as in the paradigm
not as in the language works (although it does very well)
maybe i should learn fp during my holidays instead of doing web slop
ASP.NET, no?
ngl thats the only thing ive interacted with it being used for
this is what i came up with
let split: Vec<Vec<_>> = array
.into_iter()
.fold(vec![vec![]], |mut acc, item| {
if let Some(value) = item {
acc.last_mut().unwrap().push(value);
} else if !acc.last().unwrap().is_empty() {
acc.push(vec![]);
}
acc
});
assuming
let array = vec![Some(1), Some(2), None, Some(3), Some(4), None, Some(5)];
\the way i was thinking of is you have a tuple as the accumulator so one can be the output vec, and the other can be the current string youre working on
that makes sense, in my impl i just see if its Some, if it is i mutate the last vec, otherwise i push a new vec
if you do it that way its less functional 
true true
should i write bobafeed in scala'
whats bobafeed
but i hate jvm
I only use accumulators when I write a delta-sigma modulator
im gonna write an activitypub (mastodon), atproto (bluesky), and nostr implementation thats modular so you can put it on your regular website instead of running subdomains and putting an entirely isolated microblog platform
i see
but i find it hard to justify writing anything in any language other than rust
c best
real statement
where is swift
🪢
Can confirm
you would know about knots
LMFAO
get his ass boba
@silver rampart where da headers at home dawg
----- move occurs because `batch` has type `std::iter::Take<Map<FlatMap<FlatMap<RangeInclusive<i32>, Zip<std::iter::Repeat<i32>, RangeInclusive<i32>>, {closure@src/main.rs:12:19: 12:22}>, Zip<std::iter::Repeat<(i32, i32)>, RangeInclusive<i32>>, {closure@src/main.rs:13:19: 13:23}>, {closure@src/main.rs:14:14: 14:19}>>`, which does not implement the `Copy` trait
average rust functional programming experience
clone() is the answer
ok now my entire program just turned red
i think you need to up your dosage
make a type alias or two i beg
that's a tooltip
that’s fine then ig
This is just C++ with extra steps
how
also i just raelized ive messed up
i have been bamboozled
they only went through 1/10th of all the ssns

and i assumed my math was wrong
no reason in particular, I need a justification for not learning Rust 
Also what is this repository anyway 
@gentle grove write a fuse filesystem for it
i have just accidentally created 1.4 million files due to a bug
burn it
i did rm -r and i can hear the cpu fans spinning up
how easy is that to do
that sounds fun
there are probably 6 different bindings for it in rust given how rust is
it shouldn't be too hard
you only need to implement directory listing and file reading calls
FUSE-Rust does not just provide bindings, it is a rewrite of the original FUSE C library to fully take advantage of Rust's architecture.
you should be able to calculate the file contents for any given offset and length quite easily
does fuse let you multithread stuff by opening files and stuff
so if you opened several files, would you be able to handle all those and then multithread the generation
that seems like a good idea
oh this is easy
things are easy when someone makes a library and does all the work for you
i hope its thread safe
its not
someone has a fork
theres an existing one https://github.com/wfraser/fuse-mt
you should do it
we will test how WIP that crate truly is
this is the most productive thing ive done the past 3 months
i really should start work on bobafeed
wtf are you making “rust-ssn-batches”
rust ssn generator
ssn-batches FUSE filesystem written in Rust
easier if you make the filenames more human accessible by putting the first 3 digits as the filename
or should i write my own bindings directly on top of libfuse
You could
But do you really want to do that
maybe
how hard could they have made the c interface to use
I've only ever made a FUSE filesystem through a 4-year-old nodejs package that liked to corrupt files on write
So I don't know
@gentle grove I think there are multiple APIs
And you are allowed to choose between them
yeah obviously but libfuse is the reference implementation in c
There's like an easy API that is single threaded
And a hard one that allows multithreading
Or something like that
I was referring to libfuse itself
all these years of async but i dont really know how it really works
is anything truly async with no spinloop
from what ive read before, apparently some hardware calls are
i think theres a multithreaded synchronous api
mode 2 listed here
ill brb
what the shit is this stupid ass C syntax for returning func pointers
void (*__fastcall getFPSLogHandler(__int64 a1))(__int64, const char *, ...)
???
from cdecl.org: "declare getFPSLogHandler as function (__int64) returning pointer to function (__int64, const char *, ...) returning void"
Is that from a reverse engineering tool
no i had to make that type myself
RE tool just said void*
what does __fastcall do again
And why is it __int64
me when no int64_t
Its nicer without all that gunk https://github.com/BBaoVanC/bobaclient/blob/22cfec17a81c16bc453828a7cbac55164a35ef0e/src/main.cpp#L31
But apart from that yeah thats just how it is
someones gonna need to decrypt the fortnite ipa 🙏
well yeah ofc
I would ssy make an alias
but no typedef in re tool so
L
Did not know about cdecl.org
cool tool for understanding cursed C types
I feel like c is the language you least need that type of website on though because it has the smallest set of syntax
other languages are way more complex
cdecl just gives me syntax error
Grrat
So ellekits jitlesshook definitely causes a memory leak, each time the hook gets called the program starts using more memory and after 947 calls it crashes with this error ```
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Subtype: KERN_PROTECTION_FAILURE at 0x000000016ba63fa8
Exception Codes: 0x0000000000000002, 0x000000016ba63fa8
VM Region Info: 0x16ba63fa8 is in 0x16ba60000-0x16ba64000; bytes after start: 16296 bytes before end: 87
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
Stack 16b94c000-16b9d4000 [ 544K] rw-/rwx SM=PRV thread 4
GAP OF 0x8c000 BYTES
---> STACK GUARD 16ba60000-16ba64000 [ 16K] ---/rwx SM=NUL stack guard for thread 5
Stack 16ba64000-16baec000 [ 544K] rw-/rwx SM=PRV thread 5
Termination Reason: SIGNAL 10 Bus error: 10
Terminating Process: exc handler [4843]
C is not real
I think the websiye makes it harder to understand
lmao 😭
use std/io;
def Foo {
i32 a;
}
fn Foo.divide_by(Foo *self, i32 num) {
self.a /= num;
}
fn main() {
Foo foo = Foo { a = 10 };
foo.divide_by(2);
dbg(foo.a); // foo.a = 5
}
``` object oriented programming
Thats a new way to write class method definitions
fn Foo.divide_by
well most of the other parts of the language use snake case also
but its not opinionated like rust or gleam
you can use camelCase or snake_case if you like
even CapsCase
Does anyone know what causes this memory leak in the exception handler of ellekit?
but the concept of defining the struct that a method should be binded to isnt anything new, im pretty sure cpp has the same thing
i wrote code like this before
#include "common.h"
#include "utilities.h"
#include "auth.h"
void Utilities::authenticateWifi()
{
PRINT_DIVIDER();
Wifi::setup();
Wifi::hostname();
delay(300);
if (Wifi::connect())
{
Serial.printf("Successfully connected to Wifi with SSID: %s.\n", WiFi.SSID());
}
else
{
Serial.println("Failed to connect to Wifi. Retrying...");
return authenticateWifi();
}
delay(300);
PRINT_DIVIDER();
Wifi::debug();
}
uint32_t Utilities::getAbsoluteHumidity(float temperature, float humidity)
{
const float absoluteHumidity = 216.7f * (
(humidity / 100.0f) * 6.112f
* exp((17.62f * temperature) / (243.12f + temperature))
/ (273.15f + temperature)
);
return static_cast<uint32_t>(1000.0f * absoluteHumidity);
}
then again thats a namespace not a struct
namespace Utilities
{
extern void authenticateWifi();
extern uint32_t getAbsoluteHumidity(float temperature, float humidity);
}
I was talking about them.not being within a class definition.block
Just free standing
I guess more like c++
thats an intentional choice because of the semantics of how theyre used
Foo.divide_by creates the literal function Foo.divide_by()
its then the compiler's job to infer the struct that the dot method was accessed on and get the right method
foo when compiled returns the right Foo struct so the compiler correctly turns foo.divide_by(2) into Foo.divide_by(&foo, 2)
this is intentionally not put in a grouped block because that way you can also understand instance methods on primitive types semantically
fn i64.max() {
return 9_223_372_036_854_775_807;
}
fn i64.min() {
return -i64.max() - 1;
}
fn i32.max() {
return 2_147_483_647;
}
fn i32.min() {
return -i32.max() - 1;
}
fn bool.to_string(bool self) -> string {
if self {
return "true";
} else {
return "false";
}
}
probably yeah
the step of turning foo.divide_by(2) into Foo.divide_by(&foo, 2) means that i can just turn it into Foo::divide_by(&foo, 2) and keep the dot access the same
this system also allows for namespaces technically lol
def Meow {};
fn Meow.print() {
print("hi");
}
fn Meow.add(i32 a, i32 b) {
return a + b;
}
ok there i made it ::
use std/io;
def Foo {
i32 a;
}
fn Foo::add(Foo self, Foo other) {
return Foo { a = self.a + other.a };
}
fn Foo::divideBy(Foo *self, i32 num) {
self.a /= num;
}
fn main() {
Foo foo1 = Foo { a = 10 };
Foo foo2 = Foo { a = 30 };
foo2.divideBy(15);
Foo res = foo1.add(foo2);
Foo res2 = Foo::add(foo1, foo2);
dbg(res.a, res2.a); // both are 12
}
i love regex
Ok so changing the loop of the exception handler fixes the crash and stack overflow
@gentle grove
😭

lmfao
U have the ipa ?
No
Thats why im asking lol
It works down to ios 15.0
Someone with a ipad 7 on ios 18 in europe needs to decrypt it
Yea
I got kinda close but idk
Yeah
But tbf the Fortnite ipa is FairPlay’d so you need a jailbroken device
Does apple documentation ever straight up lie ? They say AVAudioSessionCategoryDuckOthers is not compatible with ambient or soloambient categories here https://developer.apple.com/documentation/avfaudio/avaudiosessioncategoryoptions/avaudiosessioncategoryoptionduckothers?language=objc . So i designed my tweak to automatically close that option when switching from playback to ambient or solo ambient. For some reason the switch does indeed automatically turn off, Yet it somehow still continues to duck the external music.
sorry for the end i got confused 💀
Can I simply chnage ur region or what ever or do u Gota like “be” in EU for side loading ?
the EU stuff is a lot more convoluted than just "Apple ID region" or "VPN"
I mean do we even know the like extent to where we could spoof it ?
Or like is it some bool u could chnage on a checkm8 iPad
I got it
Kirb did it
With something like TrollFools you could probably inject something into eligibilityd and get the EU shit
But there’s not really a point cuz you would have TS….
Can you send it ?
Idk opa did it
Oh
Such a stupid fucking name 😭
fr
first "ra1n" now "troll"
Foodra1n
might as well combine the types and name it tr0ll
💀
tra1n
methra1n
iCrazera1n

does anyone unfortunately know js
yes
alright question
say I have a .load var with a .onload wrapper, if the src uri says http why does it instead end up executing as https
this is more browser related than js related
however
the website may redirect to https automatically?
it may also set the upgrade-insecure-requests CSP rule
ie if the uri points to a cdn, the cdn may rewrite http to https automatically
thanks
is this real
yes
My sources say yes
Yes it’s a picture of @native dune, taken last week
woa...
WHAT
woa...
Ofc the Furry would know
stupid ass dog
I maybe a stupid ass dog, but at least I am not a furry like you
I’d rather kms
Hmm
Why can't you guys just name everything like every other developer and just choose a mythological creature or smth
LMAO
Persephone was bipolar otherwise no one comes as close in terms of mental illness
I figure this channel could be useful too, soo
what are the 8 you’ve found so far
https://book.hacktricks.xyz/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox
https://developer.apple.com/documentation/security/app_sandbox
https://newosxbook.com/files/HITSB.pdf
https://support.apple.com/en-jo/guide/security/sec15bfe098e/web (yeah ik this is sort of goofy lol)
https://www.cs.auckland.ac.nz/compsci702s1c/lectures/na-2021/COMPSCI-702-iOS-Sandboxing.pdf
okay 5 not 8
but like 70% of the stuff I know from sandbox is just knowledge I've gained from RE & discussions w others as well as experiences with jailbreaking so I'd really rather just rely on written resources 💀
From where should i download ldid on my mac, the xcode project i want to build requires it
had it in ~/Downloads but thanks for reminding me 🙏
procursus

Hi, I can't seem to compile my project for rootless - when launching an application, attempts to load a external library (like Cephei) result in a failure:
ASI found [dyld] (sensitive) 'Library not loaded: '/Library/Frameworks/Cephei.framework/Cephei'
Referenced from: '/private/preboot/B9BCB79E679A1E14B503500DBD6B89AC2640C007EB5C61EF1739370E6FDBF53672D7E800574EA330B7D3ED9AEDFAC305/jb-pABIBJRw/procursus/Applications/TestApp.app/TestApp'
Reason: tried: '/Library/Frameworks/Cephei.framework/Cephei' (no such file), '/System/Library/Frameworks/Cephei.framework/Cephei' (no such file)'
and as a result - application crashes.
I'm pretty sure this could be worked around by specifying DYLD_LIBRARY_PATH at runtime (which would be a pain in the ass).
Is there any other solutions to this?
Is Cephei installed?
And are you linking to the rootless build of Cephei?
Yes
How do i make my tweak search for libraries i linked to in @executable_path/Frameworks at runtime?
I'm not sure, as I just specified _EXTRA_FRAMEWORKS = Cephei and it kinda always worked xD
According to the error message (assuming it is the full one), the system isn't even searching /var/jb to find Cephei
Which is probably an issue with how you're building the app
Yeah, that's what I'm concerned about. Is there a way to specify where a library should be at compile time, so that system can find it?
The library itself should contain that information
Normally there isn't anything you need to do
Yeah, I just have other private libraries that I compile and use. The only way they "load" is by modifying the usage to be static.
Is there a way I could make a dynamic library (which works just fine on rooted, but fails with basically the exact same error as i sent before).
How do you compile these libraries and the app itself?
Could you share the Theos makefile?
Just viewed the file again and noticed an issue xD
I specified _INSTALL_PATH manually, so probably should fix that
Thanks for the help though!)
You should be compiling rootless projects with THEOS_PACKAGE_SCHEME=rootless
You don't need to (and shouldn't) manually specify an install path
Yes, I do.
I guess i could use install name tool but is there any way to tell theos to change the load command?
https://github.com/theos/lib/blob/master/iphone/rootless/Cephei.framework/Cephei.tbd
It seems that it in fact uses a rootless build of Cephei, so an issue could stem from my Makefile.
My App's makefile is as such:
INSTALL_TARGET_PROCESSES = TestApp
include $(THEOS)/makefiles/common.mk
APPLICATION_NAME = TestApp
$(APPLICATION_NAME)_FILES = $(wildcard *.m)
$(APPLICATION_NAME)_FRAMEWORKS = UIKit CoreGraphics MobileCoreServices MapKit
$(APPLICATION_NAME)_EXTRA_FRAMEWORKS = Cephei AltList
$(APPLICATION_NAME)_CFLAGS = -fobjc-arc -DTP_PACKAGE_SCHEME=\@\"$(THEOS_PACKAGING_SCHEME)\"
$(APPLICATION_NAME)_LIBRARIES = TUtils
$(APPLICATION_NAME)_CODESIGN_FLAGS = -Sentitlements.xml
include $(THEOS_MAKE_PATH)/application.mk
It's being launched by aggregate makefile:
export THEOS_PACKAGING_SCHEME = rootless
export THEOS_PACKAGE_INSTALL_PREFIX=/var/jb
export ARCHS = arm64 arm64e
export TARGET = iphone:15.6:15.0
export GO_EASY_ON_ME = 1
export COPYFILE_DISABLE=1
include $(THEOS)/makefiles/common.mk
SUBPROJECTS += TUtils App
before-stage::
$(ECHO_NOTHING)find . -name '.DS_Store' -type f -delete$(ECHO_END)
include $(THEOS_MAKE_PATH)/aggregate.mk
Yeah, something is definitely wrong with rootless library detection - I deleted the Cephei libraries from the $THEOS/lib (the rooted ones) and it can't compile (can't find Cephei headers).
Does anyone know what the first load command is? When i look at the load commands of ellekit before and after sideloading using sideloadly i see that the first one changes
Before:
otool -L libellekitJITLess.dylib
libellekitJITLess.dylib:
/usr/local/lib/libellekitJITLess.dylib (compatibility version 1.0.0, current version 1.0.0)
After:
otool -L libellekitJITLess.dylib
libellekitJITLess.dylib:
@executable_path/Frameworks/libellekitJITLess.dylib (compatibility version 1.0.0, current version 1.0.0)
Oh its the id
this means you're linking to the wrong cephei at build time, the path it searches for should start with @rpath and /var/jb/ needs to be in the rpath
but theos does all of this for you
You have to configure rpath flag if you are on theos iirc. However i would be very surprised because normally /@executable/Frameworks/ should already be setup. (So you could just use it without configuring anything). If you want more control over where the dylibs are injected, if you have a in entreprise/Udid/paid apple developer(?) certificate esign lets you choose that before installing
This doesn't seem to work for me, for some reason. Even a basic app done with nic.pl and some example code fails
im gonna call my next project cardea
what 
Is there a tweak to debug websocket requests made on apps ?
i think you can do this in network manager inside [[FLEXing]]
Open FLEX anywhere!
Tanner Bennett
1.5.0+rootless
Free
com.pantsthief.flexing
how do i open FLEXing? i just installed it
nmvm
brew install ldid-procursus
Or apt install ldid with Procursus installed
Thanks
Is there a way to make a flex patch that replaces all instances of a color with a different color?
There is for sure a way to replace all colors to a diff one but a specific one
I don't think so
just use flora tbf
[[Flora]]
@acoustic imp do you know how i can programatically resume paused/stopped music (spotify/apple music etc) ? Preferably without a button
There is a command
Wait lemme lookup 16Player sources
MRMediaRemoteSendCommand
Thanks
i love macros
#[macro_export]
macro_rules! unknown_function {
($location:expr, $name:expr, $module:expr $(,)?) => {{
let mut similar_name = None;
let mut lowest_distance = usize::max_value();
for func in $module
.borrow_mut()
.functions
.iter()
.filter(|func| func.name != "nil")
{
let distance =
crate::misc::levenshtein::levenshtein($name.as_str(), func.name.clone().as_str());
if distance < lowest_distance {
lowest_distance = distance;
similar_name = Some(func.name.clone());
}
}
panic!(
"{}",
$location.error(format!(
"Function named '{}' has an unknown interface.{}",
$name.clone(),
if let Some(similar) = similar_name {
format!(
"\nA function with a similar name exists: '{}'",
similar.replace(".", "::")
)
} else {
"".into()
}
))
)
}};
}
hm can this not be a function
it probably can but it’s used in a bunch of places and i don’t wanna have to think about cloning anything
already uses
$name.clone()twice
true
actually why do you clone $name for the format! one
can that not just be a .as_str instead
idk i just cloned to get the borrow checker out of my way
at one point i do need to refactor and use as little clones as possible
noo the borrow checker should not be something you get out of your way from but rather an opportunity to think about what your program is actually doing
not when i’m prototyping
i hate that rust assumes the code i write is production code from the start
sometimes i wanna just do my thing and make it work
hm
bad lang for it
agree
guess that's what you get in exchange for never having to worry at runtime
truee
the only error i’ve ever run into at runtime that the compiler didn’t (and couldn’t) catch is a BorrowMutError for a refcell
not really
they’re for having internal mutability
you can pass an immutable reference to a refcell and mutate the inner value of the refcell mutably
that also means the errors for borrowing become runtime because there’s no way for the borrow checker to follow the same rules anymore
i guess compile time ref errors (specifically borrow checker errors) are turned into runtime errors deriving from this
so you need to manage a single mutable borrow manually
yeah that's what i mean
yeah i think so
and so obv if the compiler cannot figure it out at compile time
then you will die at runtime!
yep
very useful for recursive tail call methods that mutate some structure though lol
the death of me istg
cloning instead of messing with the borrow checker is actually really common advice because it will almost certainly be optimized out
and code quality is generally more important
theyre semaphores, so sort of a different idea behind what problem they solve
often shared mutability (ie between multiple threads) is impossible to solve at compile time
Did i do something wrong? Each log shows up as if String was empty
- (BOOL)isEqualToString:(NSString*)String {
NSLog(@"isEqualToString %@ %@", self, String);
return %orig;
}
it shouldn’t matter but why is String capitalised?
Looks ok to me, are you sure the process isn’t just checking that it’s an empty string
Im not 100% sure but it seems a bit peculiar so i wanted to make sure, thanks
the c++ compiler is absolutely insane
it literally compiles for loops into gauss sums
and switch cases into jump tables
the optimizations that the compiler is able to do are insane
thats literally what a switch is so thats not surprising
yeah but it actually is smart enough to also compile equivalent if statements into the same thing
yeah but its not impressive because we've decided that's a standard feature of any modern compiler
still impressive to me
it is
i forgot the
on this one
oh lmaoo
Which imports should i look out for regarding ssl pinning?
i failed to do something... :3
i failed to do something... :3
anytime you want to do anything with network traffic you die from it
Organizations use it in mobile apps because they want to impose barriers for people reverse engineering their APIs (commonly motivated by compliancy purposes)
it’s not dumb if it works
NSDepression
I mean i did find a function which seems very likely to handle it, but when hooking it doesnt seem to get called
gm
To avoid man in the middle attacks
Hey, question, im being asked to do a python simple code , they tell me to do it on spyder anaconda, but it isnt running and im courious if i could just do it in vscode , would the IDE (the enviroment) change something or not?
i mean if your IDE has different commands for running the program then maybe
but if you can just run it on the terminal then no
Nah i believe both enviroments have the same commands and protocols
Just afraid that the files would incript or
Uh change
But technically its the same
ofc your gay ass would love man in middle attacks
if (access(newPath, F_OK) == 0) {
char path2[PATH_MAX];
snprintf(path2, sizeof(path2), "%s%s", path, ".bak");
rename(path, path2);
copy(newPath, path);
increaseJetsamLimits(attrp);
int ret = orig_posix_spawn(pid, path, file_actions, attrp, argv, envp);
remove(path);
rename(path2, path);
return ret;
}```
I know this method is straight dogshit but basically i want to preserve the path for the pid, if i hardlink and then unlink the file later on, the path for the pid will change, same with renaming, it doesn't do it if you copy the file however and delete it after, but that will cause wear on the nand, does anyone happen to know a way on how to not have the path for the pid change without writing new file data?
i have a fullscreen nspanel, i've managed to resize the width of it, but i still can't click outside the window (trying to patch ControlCenter)
i've tried everything, if someone has an idea (tried ignoresMouseEvents to true etc...)
can ANYONE tell me why it does this
in a string test if i iterate through the characters and print them with %c it prints perfectly
but if i try to print their corresponding ascii representation i get this huge number
Send code 
test = 74 65 73 74
in little endian it’s 74736574
74736574 in base 10 = 1953719668
holy shit
yes
the reason why was because i was loading word from the pointer instead of byte, so it was reading more than it needed to
thank god that means i can do this now
fn string::to_uppercase(string self) {
i32 length = self.len();
string out = malloc((length + 1) * #size(char));
for i32 i = 0; i < length; i += 1 {
char c = self[i];
if c >= 'a' && c <= 'z' {
out[i] = self[i] - ('a' - 'A');
} else {
out[i] = c;
}
}
return out;
}
🙏
memory leak ⁉️ ⁉️ ⁉️ ⁉️
good
there is an iOS app called Wizz, you meet new people there and stuff. is anyone willing to remove an element from it which pops up every time u do something 5 times?
and if there is any more tweaks you would wanna do, you can
(im not paying for anything so if you want to do it for fun, let me know)
now that this is fixed
that means
brainfuck compiler!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
nice
almost UB

no just memory read/write operations were always turned into a base type as per every other operation in the IR
because the backend compiler doesnt allow unsigned types and sub-int types anywhere except for memory store/load and comparisons
so temporarily i just made everything be turned into a base type but that, obviously, has implications that i didnt think of at the time lol
I saw these messages earlier and had no clue what you’re talking about but I just saw the video lol
ah hell nah man this shit is unreversable
Swift jumpscare
wdym preserve path for the pid
is this with ida 9
yes
well not really it is reversable just need to find out how
what the hell are these dyld offsets
global variables n shit
the autostruct plugin is nice, it would clean some of that up
Just annoyed this wasn’t built into 9
Not related to jailbreaking but it’s been 3 days and GitHub still hasn’t given me copilot for free despite accepting my student benefits
Damn I just realised I’m an asshole for whining about how long it takes to get something for free by virtue of where I study
thats weird
although i rememher it taking me 30 days to get github student approved
But it just says I’ll get my benefits “soon”
soon
Some weird c*nt gonna do some ascii analysis to find my GitHub username
Pardon my Australian
That word means something different here
What does soon say when you click
Semesters started over a month ago and it’s been over 72 hours 😫
And considering big tech companies use high upper bounds for wait times to surprise or to not disappoint, I’m thinking it’s gonna take ages
Cause some approval agent or manager is on vacation
Or some stupid shit like that
that is one option
but its often easier to just run it on a jb device
It's possible to run tweaks in the sim but I'm not sure when stuff was last updated
omg simject is still active??
simject is a command-line tool and iOS dynamic library that allows developers to easily test their tweaks on the iOS Simulator. - akemin-dayo/simject
shoutout Karen and Poomsmart
do you use a jb device
yeah i have a few
would live reload work
aemulo cant really be tested in the sim cause it requires nfc
the swift previews thing?
well thats what live previews does
it rebuilds the binary in the background
it just does it sneakily
doesnt the regular build take a lot of time
not really
obviusly it depends on ur machine but even on m1 you can do debug builds in a second or so
(assuming you havent cleared previous build cache)
ill give it a try thanks 🙏
yeah am on m1
8gb of ram but i make do 😔
it's not really updated for modern sims
ie. once they made everything read only
i have a fork that basically turns it into rootless but its not perfect
some issues with the theos modding i had to do
Yeah that’s more or less what I guessed
ellekit for sim works, and people have suggested that i just replace simject with an injector bundled with ellekit
might do that
naming things is so hard 😭
what do i call this function
string i = "me";
i.push_strings("wo");
io::assert(i.equals("mewo"), "result is ".concat(i));
push_strings
i already have pop for popping the last char, so that means i need push to push a char to the end
to maintain the convention
but then i also want a method where you can push strings to the string
fn string::push_strings(ElleMeta meta, string *self, ...) {
// - 1 to account for `string *self` which isnt variadic
variadic args[meta.arity - 1];
string res = *self;
for i32 i = 0; i < meta.arity - 1; i += 1 {
res = res.concat(args.yield(string));
}
*self = res;
}
its not like concat because it edits the string in-place
theres quite a lot of string methods now though lol
fn string::len(string self);
fn string::is_empty(string self);
fn string::contains(string self, string needle) -> bool;
fn string::starts_with(string self, string prefix) -> bool;
fn string::ends_with(string self, string suffix) -> bool;
fn string::equals(string self, string other);
fn string::to_upper(string self);
fn string::to_lower(string self);
fn string::ascii_lower();
fn string::ascii_upper();
fn string::slice(string self, i32 start, i32 end) -> string;
fn string::concat(ElleMeta meta, ...) -> string;
fn string::push_strings(ElleMeta meta, string *self, ...);
fn string::color(string self, string color, bool reset);
fn string::repeat(string self, i32 count);
fn string::insert(string *self, i32 index, char c);
fn string::pop(string *self) -> char;
fn string::push(string *self, char c);
extend
thank you
also wtf is color
io::println("All string tests have passed!".color("green", true));
it just uses the shell color codes and optionally adds the reset code at the end of the string
oh interesting
different terminals have different escape sequences though
yeah that function is very unfinished
you can
its part of .color for now though
hm
io::println("All string tests have passed!".color("bold", false).color("green", true);
also should probably use like an enum for that instead of string
that way you can't just use color "eogbeorbg3"
also why is slicing using signed ints
.
and most other arguments
shoukdnt they be u32
that is shrimply because unsigned ints dont properly map to the right IR instructions yet
this
its annoying
oh
its funny how insanely sugared an expression like this is:
"All string tests have passed!"
.color("bold")
.color("italic")
.color("underline")
.color("green")
.reset()
unsugared (without dot chaining, this is what compiler turns the expr above into):
string::reset(
string::color(
string::color(
string::color(
string::color(
"All string tests have passed!",
"bold"
),
"italic"
),
"underline"
),
"green"
)
)
(i changed the api to make reset a thing you put at the end instead of a bool in every .color)
ah yes the pyramid
🙏
reminds me of 0x7ff code lmao
wtf 😭
LMAOOOO
WHAT THE FUCK
AJKBDAKWDJADBA
bro writes programs that work great! it's just that, y'know
i dont think he's ever had a lesson on readability
💀
i hope they learn you can do
# if TARGET_OS_OSX
puts("im running on macos");
# else
puts("im running on a superior OS");
# endif
``` with macros
real
BxihirJaJb.o
lmfao
my commits be like:
real
bro theres one in a spigot plugin thats at dozens of levels
like jt wouldnt load on web github
Cleanest Java
It was just them chaining the same async callback to repeat it
@hasty ruin @wooden yarrow https://github.com/Slimefun/Slimefun4/pull/618/files
😭 what the hell

theres no indentation on. Mobile
LMFAOOOOO
@slim bramble
What
absolute perfection (had to change screen resolutions to take a screenshot of this)
Manual obfuscation I love it
simplest java code
is NSString containsString case sensitive?
yes
Open source obfuscation
this is case sensitive
NSString *string = @"Hello, World!";
BOOL contains = [string containsString:@"world"];
if you want insensitive you can do something like
NSString *string = @"Hello, World!";
BOOL contains = ([string rangeOfString:@"world" options:NSCaseInsensitiveSearch].location != NSNotFound);
``` i think?
someone correct me if im wrong
i love that video
it was used as media when testing 16Player on my potato ipad 
😭
average dimentio kpf
least over-complicated system
// struct access
if ty.is_struct() {
should_get_address = true;
name = format!("{}.{}", ty.get_struct_inner().unwrap(), name)
// struct * access
} else if ty.is_pointer() && ty.clone().get_pointer_inner().unwrap().is_struct()
{
name = format!(
"{}.{}",
ty.get_pointer_inner().unwrap().get_struct_inner().unwrap(),
name
)
// string access
} else if ty.is_pointer()
&& ty.clone().get_pointer_inner().unwrap() == Type::Char
{
should_get_address = true;
name = format!("string.{}", name)
// string * access
} else if ty.is_pointer()
&& ty.clone().get_pointer_inner().unwrap().is_pointer()
&& ty
.clone()
.get_pointer_inner()
.unwrap()
.get_pointer_inner()
.unwrap()
== Type::Char
{
name = format!("string.{}", name)
// primitive access
} else {
name = format!("{}.{}", ty.id(), name)
}
Why do you do this to yourself



