#development
1 messages · Page 200 of 1
.
i don't know what that means 
I wanna know how that stuff works
uh so basically a binary is made to run anywhere in the memory space, which means you have to relocate it (update all pointers to the correct addresses, and set all external symbol pointers)
security moment
i want to fake a linux environment on a non-linux system, like wine but not as complicated i hope
and run a linux executable
i assumed i'd need to do something like that
macos has darling, windows has wine, doesn't linux have anything similar?
unless jetsam
WSL?
any binary that directly uses syscalls is gonna be a problem (you'd have to intercept the syscall and handle it yourself)
thankfully most are dynamically linked and dont do that
i guess on linux it would be more common
but on macOS everything has to use libSystem by default so 
i was hoping that'd help
dont wont on arm now
full static compilation is unnecessary in most cases
wouldn't you have to emulate that anyways if you want the linux binary to remotely work
just loop malloc
if i expose my own libc wouldn't the problem be solved

oh maybe
But what if there's programs that use asm
maybe they're niche
i'll think about it when i need to
stdlib is huge though
much huger than syscalls I imagine
And basically every language has its own stdlib
do the work 2x just to support c and c++
what even is zefram
i want to run linux binaries on the switch
what does that do
the idea is stupid and illogical but i want to try
Actually my mac is already rooted 🤓
linux is available on the switch

yes
but
what if i don't want to reboot
zefram is just bootleg cheat engine
can i disable ssl pinning everywhere
.
and what if the program doesn't actually need the entire os
as i said this is a stupid idea
Is that the lower level version of HSTS
but i want to do something low-level
I tweak you
a tweakee would be someone that gets tweaked
A tweaker would be someone that does the tweaking
So you would write the tweak
the only thing i know about HSTS is that you can type thisisunsafe on chrome to bypass broken HSTS

.
Oh that's really useful
Is there a Firefox version
uhh not that easily
apparently you have to disable network.stricttransportsecurity.preloadlist
in about:config
That would only be for preloading I imagine
perhaps
you can even disable SIP and you have basically free reign over whatever you want to do
unless zefram is meant to be like a jailbreak where it bootstraps you with a tweak manager
i might've done that
Probably that
u use kext right?
funny joke right

wait you were joking?
just add a 0 at the beginning and you're good to go
about the crack, yes
at least that's what i need @hasty ruin to think
☹️
C3
?
Hey
mashallah
hey guys
vlas in elle
use std/io;
def DynamicArray {
i32 size;
i32 capacity;
i32 *elements;
}
fn initArray(DynamicArray *arr, i32 initialCapacity) {
(*arr).elements = (i32 *)malloc(initialCapacity * #size(i32));
(*arr).size = 0;
(*arr).capacity = initialCapacity;
}
fn resizeArray(DynamicArray *arr, i32 newCapacity) {
(*arr).elements = (i32 *)realloc((*arr).elements, newCapacity * #size(i32));
(*arr).capacity = newCapacity;
}
fn addElement(DynamicArray *arr, i32 element) {
if ((*arr).size == (*arr).capacity) {
resizeArray(arr, (*arr).capacity * 2);
}
(*arr).elements[(*arr).size] = element;
(*arr).size += 1;
}
fn freeArray(DynamicArray *arr) {
free((*arr).elements);
(*arr).elements = NULL;
(*arr).size = 0;
(*arr).capacity = 0;
}
fn main() {
DynamicArray arr = DynamicArray {};
initArray(&arr, 2); // Initialize with a capacity of 2
addElement(&arr, 1);
addElement(&arr, 2);
addElement(&arr, 3);
addElement(&arr, 4);
for i32 i = 0; i < arr.size; i++ {
printf("arr[%d] = %d\n", i, arr.elements[i]);
}
freeArray(&arr);
}
this is honestly so much fun
meow
ok after doing this maybe the -> is a good idea after all
idk how much more (*arr).a i can bear
im always right 🔥🔥
true
ok lets see i guess
i dont think it has to be a compile time syntactic sugar i think i can do it at parsing time
isn't parsing time still part of "compile time"
yeah but its a different process than the actual "compile" time
its like ast-generation time
so i can sort of cheat and turn a->b into (*a).b in the ast instead of making a seperate expression that takes in a and b and derefs a before accessing b
i feel like that sentence should say "...has to be compile time, i think i can do syntactic sugar at parsing time"
i will perform a double free on you
Once you have updated your profile information log out and log back into GitHub before re-applying.

what is github doing
Weird I’ve never had to do that
thanks i forgot about that, even though its in the name..
yeah i’m going to have to do the same
ok so as it turns out @wooden yarrow
yes, parsing a->b into (*a).b is really really really fucking hard
because its not just a->b it can be a->b.c or a.b->c, a.b.c.d.e.f, a->b.c->e.f.g->h, etc etc
so
i used your other idea
if a is a pointer to some struct, it automatically derefs the pointer into the struct
but only for field accesses
so you can do
printf("%d\n", a.barptr.nya);
``` and it prints the right thing even though `a` is a `Foo *` and `barptr` is a `Bar *`
and the great thing is, you can still manually deref like
printf("%d\n", (*(*a).barptr).nya);
``` and it still works
its very magic
but doing a->b was
to say the least
hell
partly because the way the rhs is parsed is done terribly
while self.current_token().kind == TokenKind::Dot {
self.advance(); // Ignore the TokenKind::Dot
self.expect_token(TokenKind::Identifier);
let location = self.current_token().location.clone();
let inner = Box::new(AstNode::token_to_literal(self.current_token()));
self.advance();
if let AstNode::FieldStatement {
left,
right: inner_right,
location,
..
} = *right
{
right = Box::new(AstNode::FieldStatement {
left,
right: Box::new(AstNode::FieldStatement {
left: inner_right,
right: inner,
value: None,
location: location.clone(),
}),
value: None,
location,
})
} else {
right = Box::new(AstNode::FieldStatement {
left: right,
right: inner,
value: None, // Only the root may have a value
location,
});
}
}
knowing which part to wrap in a deref is basically impossible
so
ok well its not perfect but it works
use std/io;
def DynamicArray {
i32 size;
i32 capacity;
i32 *elements;
}
fn initArray(DynamicArray *arr, i32 initialCapacity) {
arr.elements = (i32 *)malloc(initialCapacity * #size(i32));
arr.size = 0;
arr.capacity = initialCapacity;
}
fn resizeArray(DynamicArray *arr, i32 newCapacity) {
arr.elements = (i32 *)realloc(arr.elements, newCapacity * #size(i32));
arr.capacity = newCapacity;
}
fn addElement(DynamicArray *arr, i32 element) {
if (arr.size == arr.capacity) {
resizeArray(arr, arr.capacity * 2);
}
arr.elements[arr.size] = element;
arr.size += 1;
}
fn freeArray(DynamicArray *arr) {
free(arr.elements);
arr.elements = NULL;
arr.size = 0;
arr.capacity = 0;
}
fn main() {
DynamicArray arr = DynamicArray {};
initArray(&arr, 2);
addElement(&arr, 39);
addElement(&arr, 16);
addElement(&arr, 0);
addElement(&arr, 172);
for i32 i = 0; i < arr.size; i++ {
printf("arr[%d] = %d\n", i, arr.elements[i]);
}
freeArray(&arr);
}
at least it doesnt look deranged
smh straight stolen from hack diff
?
False...
I have majority of the channels in HD removed from channel list
This server i have just development and announcements and development is muted anyway
🔌 Charge your phone
🔌 Charge your phone
❌🔌 Don't charge your phone
⚡
True...
can you run windows arm on m3?
Not bare metal
It’s cool but it’s better when you have access to it
To build ellekit as a static lib, do i just need to change the mach-o type in xcode? I did it but after building the build folder only contains a debug dylib
nvm i didnt select the right target 
is it possible to compile it statically though
Fatal error: Context is missing for Optional(SwiftData.PersistentIdentifier(id: SwiftData.PersistentIdentifier.ID(url: x-coredata://FE5ECE9B-529F-4BD1-9B4C-63CBEDB927E1/Account/p40), implementation: SwiftData.PersistentIdentifierImplementation)) anyone know what causes this issue lol
only occurs when i try to delete account
what's that channel
Why do you even want that
here
Its a bit annoying to use dynamic libs when sideloading an app
I dont even really need all of ellekit just the hooking


the best out of them all
am i the wrong hue of orange or what
You need to get accepted
Hmm idk if ellekit has its own api but for mobilesubstrate injecting CydiaSubstrate.framework into Frameworks folder of the ipa/app works for me.
oh
there was a dev backroom form where one of the questions was "are you french"
yes that's the one
Fr ? Thats the only reason i wanted dev role 💀
Do they accept easily at least
i thought that was a joke 
Idk I was not accepted at first because "french"
But I mean if you're not french and you're known in the discord you're prob going to get accepted
Did you remove my message lmao

yeah but that needs jailbreak
i keep looking at this form and promptly forgetting about it
.
why not just fill it
idk
will do
I still can't tell if this is a meme or not but I filled it out
(it's not)
@hasty ruin check the form
wait icraze handles the form?
sadly
lmao
did i mention that i love nexus, i bought it 6 times i use it every day
never ever thought of pirating it or reverse engineering it i'm good like that
anyone pleaseeeee?
which line is it happening on
You leaking it is the reason OGONO exists
stfu
No i am also on 17.4.
You inject CydiaSubstrate.framework into ipas Frameworks directory
yeah
any thoughts ?
this is my account manager https://hastebin.com/share/jujijeledu.swift
Hastebin is a free web-based pastebin service for storing and sharing text and code snippets with anyone. Get started now.
Where can i learn more about the difference between these 4 ? For example when injecting a framework to @executable / it doesn't work but @executable /Frameworks works (which makes sense i guess). But a normal tweak dylib also works in @executable /Frameworks. I also have no idea what Runpath/@Rpath does
In computing, rpath designates the run-time search path hard-coded in an executable file or library. Dynamic linking loaders use the rpath to find required libraries.
Specifically, it encodes a path to shared libraries into the header of an executable (or another shared library). This RPATH header value (so named in the Executable and Linkable ...
@slim bramble any thoughts regarding my issue..?
Idk sorry
Doesn't this mean injecting in @rpath is simply better
Potentially an ios beta issue maybe
yes but you cant hook
atleast not without symbols
Idk about that but with symbols you can definitely hook. C function hooks require jit.
yeah ellekit can do it without jit, but im too stupid to link to ellekit correctly
I see, i thought you were doing a simple tweak so maybe dynamicaly loading substrate would be easier. Never used ellekit so i can't help sorry
You can probably replace cydia by ellekit
wouldnt it be easier to link to ellekit directly? the issue im currently having though is that the linker cant find the function from this
extern void EKJITLessHook(void* _target, void* _replacement, void** orig);
Just replace CydiaSubstrate.framework and libsubstrate.dylib by libellekit
Or wait a second I'm gonna cook something rq
@olive peak check your dms
Can i have it too. For research purposes
Educational purposes only
You have to build libellekit for jitless
it’s both
hm
of course
they all do
ellekit is the only one that’s jitless
except fishhook ofc
Is there a configuration for that ?
uncomment the isDebugged block of code in the EKHookFunction code
aint there a limit for jitless hooks? like can only have 8 or something
why is there a limit
apple/xnu set limit or something
wtf
6
arm64 has a limit on hw breakpoints
How are hw breakpoints even used to hook shits like black magic 🤯
look at the code
it handles the breakpoint and moves execution to the target function
can someone explain how vlas that hold void* work (nevermind apparently i read the thing wrong)
how can you allocate with the size of each element type if you dont know the element type
or like vectors which have something like
typedef struct {
int size;
int capacity;
char elements[];
} V_Header;
and do like a -1 index to get the size
i get the concept but its still really confusing
yea i was talking about how, for example, you may have something like
fn initArray(DynamicArray *arr, i32 initialCapacity) {
arr.elements = (i32 *)malloc(initialCapacity * #size(i32));
arr.size = 0;
arr.capacity = initialCapacity;
}
``` where elements is an i32 array
i sort of forgot you can just pass the element size
into the function
like ```c
fn initArray(DynamicArray *arr, i32 initialCapacity, i32 size) {
arr.elements = malloc(initialCapacity * size);
arr.size = 0;
arr.capacity = initialCapacity;
}
and now DynamicArray can just hold a void* instead of an i32*
but idk how these work still
apparently its called "flexible array members"
what do you mean
typedef struct
{
uint32_t size;
uint32_t capacity;
char data[];
} VHeader_;
static inline VHeader_* vec_new_(size_t element_size, size_t capacity)
{
assert(capacity < UINT32_MAX);
assert(element_size < UINT32_MAX / 100);
VHeader_ *header = CALLOC(element_size * capacity + sizeof(VHeader_));
header->capacity = (uint32_t)capacity;
return header;
}
static inline void vec_resize(void *vec, uint32_t new_size)
{
if (!vec) return;
VHeader_ *header = vec;
header[-1].size = new_size;
}
static inline void vec_pop(void *vec)
{
assert(vec);
assert(vec_size(vec) > 0);
VHeader_ *header = vec;
header[-1].size--;
}
static inline void vec_erase_ptr_at(void *vec, unsigned i)
{
assert(vec);
unsigned size = vec_size(vec);
assert(size > i);
void **vecptr = (void**)vec;
for (int j = i + 1; j < size; j++)
{
vecptr[j - 1] = vecptr[j];
}
VHeader_ *header = vec;
header[-1].size--;
}
static inline void* expand_(void *vec, size_t element_size)
{
VHeader_ *header;
if (!vec)
{
header = vec_new_(element_size, 8);
}
else
{
header = ((VHeader_ *)vec) - 1;
}
if (header->size == header->capacity)
{
VHeader_ *new_array = vec_new_(element_size, header->capacity << 1U);
#if IS_GCC
// I've yet to figure out why GCC insists that this is trying to copy
// 8 bytes over a size zero array.
// We use volatile to deoptimize on GCC
volatile size_t copy_size = element_size * header->capacity + sizeof(VHeader_);
#else
size_t copy_size = element_size * header->capacity + sizeof(VHeader_);
#endif
memcpy(new_array, header, copy_size);
header = new_array;
new_array->capacity = header->capacity << 1U;
}
header->size++;
return &(header[1]);
}
``` this kind of stuff
header[-1].size
called VLAs or variable length arrays

this should not work
yet it does
this isn't python .
that should just go one sizeof(header) back
possibly resulting in UB
so wtf
its a feature in C
definitely UB if not a feature built in c
if you make a struct like
typedef struct {
int a;
char whatever[]; // Notice how theres no size
} VHeader_
you can access [0] to access into the array or -1 to access the metadata before the array
im sure the -1 part is UB
or something
but it works bevause the struct layout
are you able to quote from the standard for this
because i doubt it
yeah i think theoretically UB
but works out because struct
.
i'm pretty sure negative indexes are defined
C struct data types may end with a flexible array member with no specified size:
Typically, such structures serve as the header in a larger, variable memory allocation:
the -1 behavior is probably UB yeah
but flexible array members are a feature in C
i mean yes ofc defined since array indexing is just *(arr + idx) anyways so *(arr - 1) doesn't change anything but the part before has to be properly allocated
yeah ofc
also called VLAs
negative index is definitely UB if it goes out of bounds of the array
the definition of a VLA is an array with a length defined at runtime
reading a value from stdin and creating a buffer of that size on the stack is considered a VLA
why are you explaining this to me again
idk
i am agreeing with you .
there are more definitions to a vla than flexible array members 🥲
oh
but that code just casts the vec (pointer to char data[]) to a struct VHeader_ * (aka an array of VHeader_) and indexes -1, giving the actual header (remember the original pointer is to the data, which is located at +sizeof(struct VHeader_))
still a VLA though

true
imo this is so cool tho
INLINE uint32_t vec_size(const void *vec)
{
if (!vec) return 0;
const VHeader_ *header = vec;
return header[-1].size;
}
whats the difference between this flexible array member and just an pointer to the array
That's what I'm used to
the array is physically contiguous in memory with the header
Hmm
It's weird
You still have to keep track of the length with your own size property right?
ok guys how would i fix this
ASI found [CoreFoundation] (sensitive) '*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UISwitch cannot be used on tvOS.'``` can i swizzle this? what do i do
if not what would i switch this to on tvos
<key>cell</key>
<string>PSSwitchCell</string>
<key>PostNotification</key>
<string>com.opa334.choicyprefs/ReloadPrefs</string>
<key>default</key>
<true/>
<key>key</key>
<string>launchWithoutTweaksOptionEnabled</string>
<key>label</key>
<string>LAUNCH_WITHOUT_TWEAKS_OPTION</string>
@implementation UISwitch(hook)
+ (id)hook_visualElementForTraitCollection:(UITraitCollection *)collection {
if (collection.userInterfaceIdiom == UIUserInterfaceIdiomTV) {
UITraitCollection *override = [UITraitCollection traitCollectionWithUserInterfaceIdiom:UIUserInterfaceIdiomPad];
UITraitCollection *new = [UITraitCollection traitCollectionWithTraitsFromCollections:@[collection, override]];
return [self hook_visualElementForTraitCollection:new];
}
return [self hook_visualElementForTraitCollection:collection];
}
@end
ugh what is wrong with C
C > elle
correct but pointless
True
C is great
It lets you do whatever
I would say whatever you want but sometimes what you want is not what you accidentally tell it to do
is it bad that i’ve never properly learnt c
i could write something in it
but it probably wouldn’t be in the “c way”
Idk it's not bad
Do some development with some open source c projects and you can see
It's not hard to learn how to do things the c way
i doubt it is i’ve just never needed to do it so haven’t bothered learning
i don't know what's harder writing C or configuring a compiler toolchain
writing c is probably easier
in my gcc->clang overhaul i'm agreeing
i forget how many times i've rebuilt llvm at this point
compiler tool chains ar e much more complex than the c language 
i have fully moved to llvm/clang/compiler-rt in libgcc emulation mode/libc++
....except for /usr/lib32
i can't believe i just took a ghetto ass shortcut
32 bit in 2024 
Wait are you german
No lol random mirror
Blame wine and steam
anyone looking for a german?
No
I don’t build for 32 but I just have multilib support
Nein
One day valve will fully migrate to 64bit
one day
Eventually
Rugmj turning German
i would like to learn german but i haven’t got the time atm
I hope not
mehnch
Bertrand, we talked about this
learn french 
i’m either going to learn spanish or german next
i learned Spanish instead
.
Do German

I'm not learning a language that teaches you to shout on other people 😭
It doesn’t
Fair but now learn french
why did you learn french then
Stay away from any sharp objects
French sounds like you’re holding your nose 90% of the time
close that’s spanish
lies
That’s the only thing the French do good
fr
and croissants
i like those
Also, who has a space before their exclamation points
Nah better
my dad does it for all punctuation and it pisses me off
No
Steal his space key
he even does it for commas
THAT4S GROSS
Oh now that it is another arbitrary punctuation it’s gross?
Couldn’t be French
Does he track you 💀
No I'm talking about the space before the comma
i was in barry
Average #development discussion about development:

Average development discussion about development between developers
.
i suppose
(so people don’t call me homophobic it’s because i wouldn’t want my dad to me queer cos that’d mean he didn’t love my mum)
forgot about being cancelled
Do you mean homophobic here
ducking autocorrect
What’s barry
not necessarily
(queer could also mean bi, for example)
How can i reach livecontainer app devs
Is there like a server or channel for the community other than their github
You can message the developer on Twitter: https://x.com/TranKha50277352
I don't know if they have a Discord
Ok thx
@/duykhanhtran
@slender glade
@hasty ruin wen eta i get a dm making fun of me for filling out the obviously fake form
Incorrect, the application is being reviewed 
people are voting
oh
me with my calcium filled bones toppling down a calcium deficient twink with a single light touch from my fingers
💀
hi
idk what you were thinking when saying that
no one in particular but now there's a person attached
good
@misty cradle when is the good version of my soul coming
Capping your budgets and forcing you to have limited testing time for go over the budget last year by a 100 million
it just did
idk if on dsp yet
Did irko do it
This is so true
My windows devices are never logged in but my apple devices are
es la réalidad
same
however which company won't sell your soul to a pineapple under the sea
apple .
probably
I cba to skip the login page on w11
It’s literally shift f10 oobe bypassnro it takes longer to sign in than to do that
I know
me when sign in for work or school -> sign in options -> domain join instead
That works too
it's quick and easy
Only works on windows pro
I literally refuse to use a microsoft account so I will do anything to get past the online account screen

yeah but microsoft is like annoying and sometimes logs me out automatically
.
Issue is that my windows laptop when I install pro it will go omg this laptop belongs to a school ( it used to but I bought it from the school and the r ict there didn’t remove it ) and can’t set it up
I literally despise onedrive
Oh
Linux :D
I don’t uninstall it
why
I murder it
I would say the same about the "Digital Rights Management" code of another program, however, I was advised not to say anything.
Which one ?
Windows right ?
Yes!
Obviously
many issues
- it should be
[NSMutableArray array]
yeah
and
calling the array method means the array is autoreleased
idk
if you want it not autoreleased you can just alloc init
instead
lmao
the simplest solution is to just ```objc
NSMutableArray *array = [[NSMutableArray alloc] init];
[array release];
that returns a retained object
i don’t understand how you guys use objective c
compter
its releasing an object you don’t own. you could retain it, or create it using alloc+init
why do you need to do that?
y tho
“c is the native programming language of a computer” what
ig but so does pascal
well it wasn’t c
intel pentium
pascal was pretty real
for some reason fortran “doesn’t count”
Swift has classes and arc
And it written in C which is the native programming language
swift can be too restrictive for tweak dev in some cases
no it can’t
just try harder
i’m not arguing with you, i use swift for tweaks
but some cases i’d never use it
what
you have to call ellekit functions directly for it to be enjoyable
swift should be faster than objc in most cases
wdym? you can cast in swift
that’s easy
unsafeBitCast
super useful underrated function

just like using logos sucks
using orion sucks
I’m not convinced, every time I’ve benchmarked them Swift was clearly faster. Dynamic dispatching is slow
capt is just a little slow
I still prefer objc though
Swift when
most people don’t need that that’s a ton of overhead
in a normal situation doing that is bad practice, it’s only in tweak dev where it’s normal to do that
why would you store method names
c++
i hate python, for a language which is meant to be beginner friendly there’s way too many syntactic sugars
they’re not necessary to write code though. Python is great
at least swift includes types in its symbol names
unsafe
thats usually a disadvantage
literally everything in objc is unsafe
exactly
@try
no its not since you can reuse a method name with different types
capt is on his schizo arc
i feel like i’m going to be abused if i say this but, rust
i mean from the perspective of basically any time you would care about a symbol name, you dont want obfuscation
with signal handlers nothing is unsafe
Single handedly causes a
the swift compiler was unable to type check this expression in time spin when building
optimization?
reduces size
how
and again in a normal situation it shouldn’t matter to the average dev
maybe the symbol names should just be simpler
does swift allow spaces for function names???
Yes but Apple must be superior to everything else!
🗣️
you can have spaces in an objc class but you have to build it at runtime
objc is kinda wacky
i mean this contains spaces "test(Swift.String) ➔ Swift.Int"
its not necessary
that is a string though
can you name a function that?
Int can just be 14 in the mangling language
java 🤤
No.
that would be the symbol name without mangling
what the fuck
this cant be real
Finally a capt opinion I can agree with
since you need to include types in the symbol name
there has to be a misunderstanding here
otherwise you can’t have 2 symbols with the same name
not particularly
And mean it
you just don’t get it
as much as i like python, java is definitely faster
🙇♀️
well yeah it will be python is interpreted
python3.12 is very fast, after bytecode is cached
id say rust is a lot better because it's not as ret as objc
i agree with this
-ish
what do you mean by ish
Dynamic linking 
if you use unsafe things then yeah its not gonna be safe
eh who cares
lots of crates have been abusing unsafe

weird
well technically that doesnt have to do with rust, just with libraries 
it’s the ecosystem tho
every ecosystem is unsafe then
you can find lots of python programs using native libraries
or java ones
if python is good where’s python 4
True bestie
python 3.99 release date 2054
i ate it
yeah but for a language which’s main selling point is safety, having popular crates use unsafe when they shouldn’t isn’t great
If rust is good where’s iron?
i dont think theres many popular ones but i havent checked in a while
it is safe if you dont explicitly use unsafe
it works fine
if swift is so good where is sluggish
theres better design patterns available though
i made a thing to help reverse engineer tweak binaries. Swift not supported
biggest turn off for rust is lifetime annotations, once you put them somewhere you’re whole project is polluted
wdym
@hasty ruin try this with 16player
if you have a type that you use everywhere you mean?
i just broke it
got a 500
what’d you do
if you add a ’a in one place it ends up everywhere
just upload a deb
a deb is not a binary
💀
everywhere that the object you add 'a to is used yeah
was i meant to upload the dylib
oops
that's what it says
my guy does it say binary or deb 😭
i didn’t read it
zip
blast, my plan foiled
thats ok ill upload it for you
brotha it's the only thing on screen 💀
it’s 3 am
i MITMd bros network and everything
i’ve not slept
i will give someone five dollars to break into capts house and steal zefram
my nintendo ds lite
too bad you cant read any of the traffic
excuse me for being uneducated but wtf is zefram
fisher price cheat engine
captinc is typing
:typing: captinc is typing
zefram for nintendo ds lite
hi, it's been a long time
people actually use that smelly os?
when zefram for RTKit @grave sparrow
very cool
you should add a feature that generates headers too (i.e. scrape info from limneos or your own header source, find out what methods are %new, adds them to the @interface)
or something along those lines
theyre embedding swift now 
sounds like you wasted your money on a mac and you’re justifying
wait, zefram release 
when you upload a dylib it shows what it hooks
cringe
that’s pretty cool, can i self host?
yeah its open source
I will now upload my 16Player Crack to this website.
No I stopped replying, the telegram middleman thing was sketchy. I finished the tool though. If someone who knows how to use an escrow service wants it it’s theirs
what is an escrow service
i can learn
wait so are you saying if someone wants to pay for it they can have it, but in fancy words
99% of the requests are from tiktok/insta content farms looking for tweaks to feed shit to the camera
why though
You put money in the escrow, I give you the tweak, then I get money from the escrow. You can’t back out of payment because you already paid
so yes
But if I didn’t deliver on expectations there’s a claim to get your money back from escrow
ill act as a mitm on your router
I will be the middle man 🙏 Send money to aaron p613 on cash app.
or you just trust @robust radish and give him the money first
depends, some by crypto, others paypal, sometimes venmo
zefram rgh3
i put it on breachforums myself
i bid 38 cents
Gay
me when the software works as advertised
google is awesome now wtf
what about a dollar, and the french getting banned
i’ll remake zefram if you ban the french
for a macOS injection tool??
not really they just bribed reddit into making them the only search engine it can show up on
It better work with SIP and restricted processes
the joke is he isnt selling it 
they made all the repair tools and manuals available for newer pixels though
erm doesn't that already exist 🤓
so google is awesome in my book now
and is free and open source
Me when they get slapped on the wrist for a billion
dozens exist
that was years ago wasnt it
No yesterday
i wish they would be broken up
what
yeah it’s called uninstalling mac os and using a decent os like linux
what happened to them
all big tech needs to be broken up
i didnt know anything was going on with google
from google to ibm
just need asahi to be finished 
i would only wish a heartbreak on my worst enemy
bootanim.xex for iphone
They got told they are monopoly by US judge
what’s left for them to do?
I believe thats what was offered for the Tinder bypass. Some crypto coin
make it usable
graphics acceleration, i think
good, now the doj needs to do what they did with at&t
macOS is great
i’ve seen loads of people use it
i don’t have mac hardware tho so i haven’t tried it myself
That worked well huh 
Speaker driver is disabled because it kept destroying peoples speakers
baby steps, hopefully in the future my country will get our own equivalent of the GDPR
is this what i think it is
Yeah
its such bullshit how i cant delete my patreon account
I’ll take a 30% loss if someone else assumes the risk and deals with talking to the sketchy buyers
relatable
it’s Linux but prettier
asahi time
mac os is ugly af
Newer corvette
you keep asking this to different people until someone says what you want
why do mfers call macos linux
my nerd brain cannot comprehend
cos it’s unix based and people think unix = linux
vibrator
annihilator
why are the screws not reusable
it's bsd with a "microkernel" which is bullshit in 2024 it's monolithic lol
forever favour
yeah but consider the following
McLaren is a mix bag honestly @grave sparrow but their availability for parts probably lack
the OS isnt boring on a technical level 
i’m going to sleep, good speaking with you other time zone ppl
mfw 2pm
gn
At least a corvette has higher availability since everyone has one
it’s 3 am
no OS is boring to me at a technical level
rolex says literally exactly what i said
corvettes are the cheapest to service
me when that darwin kicks in
tbh im that much of a nerd
what
Also probably better after market stuff you want is better for the corvette as well @grave sparrow
Air Gun / Blowing Ball
blowing what
my ball
Yeah and you can go crazy with it further as well
i LOVE rust
the semantics
the way it feels like if rust was a supercar C was a horse carriage
even though its the same concepts
How about you love touching grass instead
did you search for mentions of rust lmao
I like the stereotype of all rust fanatics having an anime pfp. seems to hold true
rust mfs be normal challenge 
maybe the function chaining is bad tho
fn get_line(&self, at: usize) -> Option<String> {
self.input // Vec<char>
.iter() // Iter<char>
.collect::<String>() // String
.lines() // Lines
.enumerate() // Enumerate<Lines>
.find(|l| l.0 == at) // Option<(usize, &str)>
.map(|i| i.1.to_string()) // Option<String>
}
i have literally been outside all day
no my discord was scrolled up because it does that sometimes
contrary to popular belief it is possible to code outside
😱
i was writing code at a park earlier
i like it
functional programming is cool
i like the ".map" method on options
you can modify the underlying value of the Option if it exists
theres lots of cool combinators on Option and Result
yeah
I understand that usually the ones near me are full of people so I can’t do meth there
i need to break my habit of
if some_option.is_some() {
let res = some_option.unwrap();
// do whatever
}
``` and use
```rs
if let Some(res) = some_option {
// do whatever
}
because right now i have this love and hate relationship with is_some() and is_none()
it makes it a lot easier to think about my code design
but it is so ugly
i mean theyre the same thing so you just have to equate them in your brain
yeah they are but my brain doesnt recognise that i can do that
due to this really bad habit
Top looks wrong bottom is off because of the capital letter
top is the code i write the most often unfortunately
true
PascalCase is the standard in rust for type names
i feel like it would look weirder if it was lowercase tbh
enum option<t> {
some(t),
none,
}
this code has got to be the most cursed thing ive ever written in my life
That looks fine
youre crazy
I am
honestly
this gives me go vibes
i hate go
i just hate it for not being all the way up to my standards
its a very good language
thats how youre supposed to do stuff tbh
i mean if theres an raii way to transfer stuff then do that but otherwise clone is fine
I haven’t touch much rust so I can’t comment much expect parroted opinions
its hell for astnodes if you dont clone everywhere
make it all Copy 
i never understood how copy works (i never looked it up)
if i derive Copy
on the node enum
its implicit clone
can i just put it there without .clone() and it clones automatically
yeah
i thought so
it makes it always transfer by value
wtf is the word, not transfer
capture by value?
yeah
no thats for closures i think
i know what you mena
Any cool hardware projects
you have an enum like
enum Foo {
A(String)
B(i32)
C(char)
}
you have a method create_a(input: String) which returns a Foo::A(input)
What did you do?
now you need to use that Foo:A in various places but the variant will not be modified
i tried to go to wikipedia
Your dns failed 
if you try to pass it directly, it will fail because the value is moved
but if you pass by reference you have to keep track of a bunch of lifetimes potentially and that is hell
so you can clone
but then you end up having .clone() in 10 places
im pretty sure String doesnt derive from Copy either
so clone is your only option
definitely not because it would be impossible to Copy it
yeah
thats a timeout so no
dns was fine
so your only real option is Clone
wdym, what is moved

let addr_temp = self
.new_variable(ty.clone(), &format!("{}.addr", name), Some(func), false)
.unwrap();
func.borrow_mut().assign_instruction(
addr_temp.clone(),
Type::Pointer(Box::new(final_ty.clone())),
Instruction::Alloc8(Value::Const(
Type::Word,
final_ty.size(module) as i128,
)),
);
func.borrow_mut().add_instruction(Instruction::Store(
final_ty.clone(),
addr_temp.clone(),
final_val,
));
func.borrow_mut().assign_instruction(
temp.clone(),
ty.clone().into_base(),
Instruction::Load(ty.clone(), addr_temp),
);
``` addr_temp is a Value::Temporary(String)
```rs
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum Value {
Temporary(String),
Global(String),
/// Const(prefix, literal)
Const(Type, i128),
Literal(String),
}
the Value is moved into assign_instruction
when you pass it
so you have to clone
to use it afterwards*
and you cant pass it by reference into assign_indstruction?
in this case i dont think it matters
but you end up, in your code for assign_function, just calling .to_owned() anyway
but before i was trying to make a struct_pool that is a &Rc<RefCell<Vec<String>>> and my parser would take in that value at initialization
which means the parser needed a lifetime
so that meant i could no longer pass self into the broken up functions anymore to have access to advance() and expect_tokens()
because it works like that
in that case it was easier to take in just a Vec<String>, mutate it, and return a new Vec<String> and override it in the parent function where the parser::new() was called
but still thats just one example of a massive headache i had from lifetimes
i was getting into some horrible &'a RefCell<&'a mut Parser<'a>> type signatures and honestly that was so hell i never want to work with that ever again
just to get "lifetime does not live long enough"
not fun
im tired but is it not solved by AsRef<Value>
im not sure
what languages are you referring to?
probably because you almost exclusively listed functional programming languages which are designed differently
They are just built different
3utools spotted
why is that shit even censored
i hate the moderation
if we’re referring to that as being negative at least let me say it
why can i not just see the print output of a doctest for debugging purposes
How do you program GIR to do that though
3utools is malware so you don’t want people talking about it
true
Makefile
ARCHS = arm64
THEOS_PACKAGE_SCHEME = rootless
GO_EASY_ON_ME = 1
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = Experiments
Experiments_LDFLAGS = -lAudioSession
Experiments_FILES = Tweak.x ringerAudioHook.x
Experiments_CFLAGS = -fobjc-arc
Experiments_FRAMEWORKS = Foundation AVFAudio UIKit AudioToolbox
Experiments_PRIVATE_FRAMEWORKS = AudioSession
include $(THEOS_MAKE_PATH)/tweak.mk```
headers
```#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <AVFAudio/AVFAudio.h>
#import <AudioToolbox/AudioToolbox.h>```
errors
```Tweak.x:107:18: error: no known class method for selector 'primarySession'
[[AVAudioSession primarySession] setCategory: audioSessionCategory error:nil];
^~~~~~~~~~~~~~```
can somebody tell me what i am doing wrong ?
I think you are referencing another version of the framework.
here that method exists, but in the 16.5 sdk that you are using, assuimng it's the theos one, that method doesn't exist at all.
You can verify this with grep --include=\*.h -rn 'path/to/sdk' -e "primarySession", have a look here for reference
How do I find all files containing a specific string of text within their file contents?
The following doesn't work. It seems to display every single file in the system.
find / -type f -exec grep -H '
Does anyone have an idea why my app refuses to show the keyboard (the physical one doesn't work either)? It doesn't even appear in the FLEX screen
it does exist in 16.3 and 17.1. i would be surprised if it is absent in 16.5. anyway i ended up using runtime to use the methods
AVAudioSession is a public class and if you go to apples docs for that class you will see that primarySession doesn't appear, meaning that primarySession is a private method. So you would need to add this code to your headers/tweak.x:
@interface AVAudioSession (Private)
+ (id)primarySession;
@end
cc @cinder frigate
Yeah thats what i ended up doing. Before i was trying to link to the private framework that has the method but couldn't do it. Thanks
my solution to the donut was to just redo it with the real math (using vectors)
it doesnt normalize the vectors because sqrt is a very slow operation
it uses the length squared
technically the original author of the donut also used vectors
am i insane
no
False
good