#development
1 messages · Page 157 of 1
Is there a way to delete everything(restore to default) in /var without factory resetting on newer versions like 17.4
settings
why wouldn't you be able to catch an exception
And ?
C can't iirc
erease content and settings
c++ exists for a reason
Ewww C++ is weird
Oh okay thanks. Thats factory resetting though right
W
@indigo peak did u ever figure out the like rotation thing ?
can i ask what did you do ?
ok so the method i use is only available on iOS 16 lmao
probably not
lunar and mooner does
will it be free tho 
Makefiles are hard
just don't include one
Well I want to build my own code
Yea, basic makefiles are easy but as soon as you want to do something non trivial you get stuck
Like what I'm trying to do is put my object files in build/iOS if I'm building the iOS target and build/macOS for macOS
But it's not working
the tweak is literally a recreation of jellyfish
why do ppl want it to support 15 😭
I don't have one give me your credit card details
why do you have them up there?
tf
24% of the population stores iOS 15 devices up their ass


i see no issue with this code, simple, descriptive name
it does exactly what is says fr
mfw void fr(void) {}
but why
Ok well that has a reason
I name my methods “doSomething” until I can find a proper name for them
.
huh
ok but ngl
required for callback arguments that don't accept null
although I don't know and don't think that's the case here
Lol
Question if you called that do nothing function, would the compiler optimize the call out of existence?
yeah
- (void)doNughtin {
asm ( "nop" );
}
Oh
what is the point
better to have it be optimized out
that is the point
Thats the joke
thank you christian
You could also just literally put nothing there
🤭
Yeah I’m not very good at jokes over the Internet ;-;
I literally said thats the joke
I didn’t see that 
is .xcodeproj folder something i should be pushing to github?
If you like spam calling seekToTime on a player view thing does it just like break ? Like this (end of video)
(the walp video should be like smoothly changing/seeking to that time)
bro without it how would they open it in xcode
as you can tell im pretty new to xcode development lol it had lowkey personal info like development id n stuff
so thought it wasnt necessary
thats fine i just turned the repo private
its empty
yea
question is it possible to make a videocalling app without backend server where it just runs on client nodes
apparently its a thing called p2p
Hello
If there was a certain notification id like to disable, how would i find the class for it?
I'd like to learn so a point in the right direction would be plenty
what
its law
Try looking into BBBulletin
hi cuties
MODS this user has linked to a page that links to PIRACY
wdym pircay

https://github.com/Al4ise/Azule ok anyway
found this
heard its better
help me use it
Just inject with sideloadly fr
i dont want to install it on device though
There’s an export option
Yes
FLEXing allows you to open flex and libflex
Well
do i leave it at cydia substrate
You might want to choose substitute
might?
why would you inject the rootless one
idk man is there any difference
idk
i don't think so
why not tbh
either way sideloadly is gonna patch it so
skull i have a guide for this
where is it
oh it's on gitbook
meh i guess i'll work on updating all that later
Where is da link
🙏
anyone know why corellium is super slow?
i'm on the trial though
you get 6 cpu cores by default with that
Thanks
ASI found [libc++abi.dylib] (sensitive) 'terminating due to uncaught exception of type NSException'
real
anyone know why this might cause IOS 15 to respring hang? (more specifically my 12 mini 15.1.1)
NSDictionary *funcName(NSData *jsonData) {
NSError *error = nil;
id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
return (NSDictionary *)jsonObject;
```
question
objc cli bin how does it exit?
exit is never called
nsthread exit is never called
you should be running all your code in a thread or over xpc/rpc to another binary
Is there any unity decompilers like DnSpy that could be used on mac?
dispatch_queue_t current_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_sync(current_queue, ^
{
NSDictionary *theDict = funcName(theData);
});
Looking for help updating a tweak to run on iOS 16:
For some reason the method i used to display a UIWindow on top of the springboard does not work anymore.
I can see the UIWindow in the "Heap Objects" section of Flex but it is not displaying on the screen.
here is a code snippet:
hook SpringBoard
- (void)applicationDidFinishLaunching:(id)application
{
%orig;
kScreenW = [[UIScreen mainScreen] bounds].size.width;
kScreenH = [[UIScreen mainScreen] bounds].size.height;
springboardWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, kScreenW, kScreenH)];
springboardWindow.windowLevel = 9999999999;
[springboardWindow setHidden:NO];
springboardWindow.alpha = 1;
[springboardWindow _setSecure:YES];
[springboardWindow setUserInteractionEnabled:NO];
springboardWindow.layer.masksToBounds = YES;
springboardWindow.layer.shouldRasterize = NO;
// stuff
}
%end
Any ideas on what changed from iOS 15 to 16?
need some help
I'm hooking __NSCFString: -(NSRange)rangeOfString:(NSString*)arg1
but calling any selector with arg1 causes bus error 10
@radiant idol for 16Player contributions do you want ur black PFP or the one u have here on discord as your pfp?
first thing: dnspy is just a .net debugger and assembly editor
if you just want to reverve enginner binaries for example, consider tools like binary ninja, hopper and hex-rays ida
if you need assets from unity, look into devx unity game recovery
include jade deb in 16player
inspectivec seems to break nsstring selectors called from an nsstring hook
Hmm
Discord one
k
is there anyway to set a 'preferred slice' when using posix_spawn?
Yes
Spawnattrs
There's something about it in xnu src
wdym 'slice'
like arm64/e?
yuh trying to force something to spawn as arm64 not arm64e, i think i found it tho with the spawnattrs stuff
that what i found trying it rn 🙏
inshallah
@native orbit
#define CPU_ARCH_ABI64 0x01000000 /* 64 bit ABI */
#define CPU_TYPE_ARM ((cpu_type_t) 12)
#define CPU_TYPE_ARM64 (CPU_TYPE_ARM | CPU_ARCH_ABI64)
#define CPU_SUBTYPE_BIG_ENDIAN ((cpu_subtype_t) 1)
int main() {
posix_spawnattr_t attr;
posix_spawnattr_init(&attr);
posix_spawnattr_setarchpref_np(&attr, 1, (cpu_type_t[]){ CPU_TYPE_ARM64 }, (cpu_subtype_t[]){CPU_SUBTYPE_BIG_ENDIAN}, NULL); // arm64e slice inshallah
posix_spawnattr_destroy(&attr);
return 0;
}
i just stole code from xnu rosetta tests lol, but it worked
W
big W
fr
man and the one time i did actual research 🥲
cpu_type_t cpu_prefs[] = { CPU_TYPE_ARM64 };
cpu_type_t sub_prefs[] = { CPU_SUBTYPE_ARM64_ALL };
posix_spawnattr_setarchpref_np(&attr, sizeof(cpu_prefs) / sizeof(cpu_prefs[0]), cpu_prefs, sub_prefs, NULL);
this what i ended up doing
whenever i tried doing sizeof(arr) / sizeof(arr[0]) the compikle says like
sIzEOf DOEsn't do WHAt yoU ThiNk It doEs
i tried
be impressed i got that far
it works fine and is stolen from xnu tests bruh
seems ellekit is doing incorrect stack saftey
its crashing in tramp
which one
btw Im using real substrate
not ellekit
no that asm is inspective c
which uses fishhook
my hook is substrate logos
It’s crashing before the blr tho
Bl*
All good no rush or anything
@faint timber W song
Which one
@grave sparrow i was making my schedule for next sem and i have to take CS 301 which is like an algorithm/data struct course but its entirely java and its from 6:30-9:30 monday nights
Probably calculate the olog of n
im going to end my life
bc theres no way for me to skip the course or anything
i legit tutor people in that class
yes
what is the assignment
Thoughts ? Lmk if u helped me or bibi, I still Gota add yan, comrad, Christian, and Idr
can we dm?
add me under people who annoyed you
same
did you copy that credit cell
bc if not
that looks really cool
also i love the descriptions
Nightwind: Huge help couldnt have done it without him
fiore: Big help with the prefs, wouldnt look the same without him
iCraze: helped answer a couple questions i guess
also hold on iCraze has more social media
I guess it is a lot like the iCloud cell
cephei
you can tell capt is avoiding doing his homework becuase he was active in [redacted] #1084320818231787552 #1189739986707288154 & #general
ah yes, [redacted], unkown, unkown and general
@grave sparrow do your homework
fr
their weird gc
just bc youre not in it doesnt mean its weird
Bibi made them, I sorta fixed his layouting
I did the depictions lol
The cells r buttons also(he also messed up GH Links)
dont make it popup
make it actually just open
unless its meant to have all the socials there
That’s for this page
fiore
Open Twitter
Cancel
Killall backboard
calling it twitter based
how do we cancel fiore
surprised it hasnt happened yet
@slim bramble
Should I center the like “tesla_man” ? Like how I have the root page
no
fiore
Cancel
oh
imma be honest, if I'm crediting any of you in a tweak, you'll get a PSGroupCell Footer or maybe a PSButtonCell that links to a social media
Same for iOS 16?
wtf are the gods cooking
that's cool
gm smart rjb people, any ideas why this fails? i can edit the plist from filza just fine but it fails through ssh
ios 16.0 iphone 12 mini jailbroken with dopamine
$ sudo /var/jb/usr/libexec/PlistBuddy -c 'Merge /tmp/5g_enabler.plist' /var/mobile/Library/Carrier\ Bundles/Overlay/device+carrier+Default.bundle+D52g+51.0.plist
Cannot Write File
trying to make a script that enables 5G because my carrier disables it on any iOS lower than 16.4
works from filza just fine but it reverts on its own
ios prevents carrier bundle tampering like that iirc
yes
and then it reverts
because ios noticed that it wasn't correct and redownloaded a fixed one
when commcenter restarts yes
so my idea was running this on a tweak every time commcenter launches
you could probably make a tweak to prevent this
ye
drop it into IDA or something and see what you can find
ill see what i find
If you’re gonna make a tweak, just hook wherever it reads the value
isCarrierBundleSealBroken
return FALSE;
couldnt i just hook whatever function checks if the 5G switch should be displayed
so hook that function to make it think its still sealed and then add the keys to the plist by hand?
yes
alright ill try that when i get home
im assuming my inability to write tweaks is what caused me to respring loop, i have absolutely no idea how to write a tweak other than documentation online
isCarrierBundleSealBroken seems to not exist on my phone's CommCenter binary
yeah i made it up as an example lol
int64_t VerifyCarrierBundleSignature(int64_t arg1, int32_t arg2, int64_t arg3)
just gotta make this return 1
its in a dylib tho, not on the actual binary
dlopen the dylib if it hasnt already been loaded
then use MSFindSymbol to get the symbol from the dylib image
@knotty tusk ^
hm
seems to be doing absolutely nothing with both the unmangled and the mangled symbol name, so either my code is horribly broken or this function isnt the one i should be hooking
something like this:
%hookf(int64_t, VerifyCarrierBundleSignature, int64_t arg1, int64_t arg2, int64_t arg3) {
return 1;
}
%ctor {
const char *dylib_path = "/path/to/the/dylib";
void *handle = dlopen(dylib_path, RTLD_LAZY);
if (handle) {
%init(VerifyCarrierBundleSignature = MSFindSymbol(MSGetImageByName(dylib_path), "_VerifyCarrierBundleSignature"));
} else {
NSLog(@"failed to get handle!");
}
}
I think
well that respring looped me so im assuming something may be null
i have no idea how to access logs so that complicates debugging
You can use RemoteLog (search it up) or the console app on macOS
oh yea the console app
thanks
its not finding the symbol
im guessing its mangled then
__Z28VerifyCarrierBundleSignatureRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE15CBSignatureType16SignatureKeyType doesnt seem to fail
but that still ends up reverting the file so its not the one i should be hooking
It can’t revert the file if it’s not in memory or have a copy so make sure this is not the case
im assuming its just re-downloading it from my carrier and that i hooked the wrong function
Can always chflags
that seems to actually work
it hasnt reverted yet
but 5G is disabled
so now it doesn't revert back but it just ignores the content of the plist
great
Always On Display on ANY iPhone!!
💖 22 🔁 4
neat, someone risked enabling the option and it works? idk if the video is fake
no different then enabling fluid gestures i guess
but your display isn’t going to appreciate this
yeahh
no VRR
something like that
still most likely better to use the LastLook tweak since it’ll probably give you way better battery life than enabling this iOS option
i can confirm that if I chflag the plist after editing it, the 5G option disappears even if the plist says it should be there
i love ios
so just like zefram
But why does burnin and battery matter when I am just going to get a new phone every year?
should be fine on 13 pro/pro max. it would mainly just kill your battery life 
Link in dms
just realized this was the wrong channel yeah, ill dm
what would be needed for a quick CLI accelerometer demo on my dopamine'd iPhone 13?
y'all how do I get GPS coords
Describes the use of location and map services.
I'm thinking just writing in C and compiling with theos?
you mean objective c
@lyric heron ima make it so you need to get your own API key
because it's only 1,000 requests a day for all the APIs
and I don't think that'd be enough
is the what weather question still relevant
or did you decide
🧢
what is this image
least descriptive picture in existence
it's my karate gi
i'm omw home
what am i supposed to show
no ur blind
a jacket or something
get unblind
I was doing clear skies first
but list all weather types you want to be included
as long as you tell me to get mine 
probably reading from the accelerometer and then printing it to stdout
@radiant idol 176
?
TrollStore error
POV no storage
Actually I think that’s like 164
@native orbit me when experimental language: ```/Users/sora/zig-macos-x86_64-0.12.0-dev.3154+0b744da84/lib/std/fmt.zig:470:5: error: invalid format string 'f' for type 'f80'
@compileError("invalid format string '" ++ fmt ++ "' for type '" ++ @typeName(@TypeOf(value)) ++ "'");
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
referenced by:
formatFloatValue__anon_17118: /Users/sora/zig-macos-x86_64-0.12.0-dev.3154+0b744da84/lib/std/fmt.zig:781:24
formatValue__anon_16633: /Users/sora/zig-macos-x86_64-0.12.0-dev.3154+0b744da84/lib/std/fmt.zig:703:58
remaining reference traces hidden; use '-freference-trace' to see all reference traces
/Users/sora/zig-macos-x86_64-0.12.0-dev.3154+0b744da84/lib/std/fmt/parse_float/parse_float.zig:18:9: error: TODO support parsing float to f80
@compileError("TODO support parsing float to f80");
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
guess I have to approximate then
it doesn't support floats at all
shit lang lol
nah it's just strings
use objc
I can just approximate to decimals
the weather API won't care nor will it give different data lol
wait
shit
it doesn't support doubles in its json thing
whatever
zig strings are trash lol
finally got it to compile
fr
like
why is this necessary
const fileforWeather: [:0]u8 = switch (weatherid) {
801...804 => blk: {
const returneventually: [*c]const u8 = "/var/jb/Library/Application Support/WeatherWhirl/clearskies.jpg";
break :blk @constCast(std.mem.span(returneventually));
},
else => blk: {
const returneventually: [*c]const u8 = "";
break :blk @constCast(std.mem.span(returneventually));
},
};
801...804 should match all numbers from 801 to 804, right
(because in the openweathermap API, those are all just different variants of clear skies)
no root_path 
I don't plan on supporting rootful :)
so if a jb wants to have another root path (such as roothide), the same code works there
ah
gets the path at runtime instead of the macro hardcoding it
I'll change it if anyone has issues

I really hope this prevents it from crashing if the weather doesn't have an image implemented const uiimg = helpers.getUIImageForCurrentWeather() catch return;
glizzy
Just ‘if(image != nil){your code here if there is an image }’
that's not how zig works
is there a way to get the abort message
it's crashing from one of my explicitly called abort calls
and they all have specific messages
and I'd like to see which one it is lol
pub fn panic(msg: []const u8, stack_trace: ?*std.builtin.StackTrace, ret_addr: ?usize) noreturn {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer if (gpa.deinit() != .ok) NSLog(helpers.StrToNSStr(helpers.NonStringSliceToSlice(@constCast("Oh well."))));
const allocator = gpa.allocator();
const formattedstr: [:0]u8 = std.fmt.allocPrintZ(allocator, "WeatherWhirl panicking! Error Message: {s}", .{msg}) catch unreachable;
NSLog(helpers.StrToNSStr(formattedstr));
if (stack_trace) |trace| {
var buffer: [50000]u8 = undefined;
var fbs = std.io.fixedBufferStream(&buffer);
const stream = fbs.writer();
std.debug.writeStackTrace(trace.*, stream, allocator, std.debug.getSelfDebugInfo() catch unreachable, .no_color) catch unreachable;
NSLog(helpers.StrToNSStr(helpers.NonStringSliceToSlice(&buffer)));
}
_ = ret_addr;
std.os.abort();
}
cursed
uhmmm
note: while parsing
tf
what file isn't found
explain
ok apparently it just doesn't like my custom panic function lol
pub fn panic(msg: []const u8, stack_trace: ?*std.builtin.StackTrace, ret_addr: ?usize) noreturn {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer if (gpa.deinit() != .ok) NSLog(helpers.StrToNSStr(helpers.NonStringSliceToSlice(@constCast("Oh well."))));
const allocator = gpa.allocator();
const formattedstr: [:0]u8 = std.fmt.allocPrintZ(allocator, "WeatherWhirl panicking! Error Message: {s}", .{msg}) catch unreachable;
NSLog(helpers.StrToNSStr(formattedstr));
if (stack_trace) |trace| {
var buffer: [50000]u8 = undefined;
var fbs = std.io.fixedBufferStream(&buffer);
const stream = fbs.writer();
std.debug.writeStackTrace(trace.*, stream, allocator, std.debug.getSelfDebugInfo() catch unreachable, .no_color) catch unreachable;
NSLog(helpers.StrToNSStr(helpers.NonStringSliceToSlice(&buffer)));
}
_ = ret_addr;
std.os.abort();
}

made it a bit better
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer if (gpa.deinit() != .ok) NSLog(helpers.StrToNSStr(helpers.NonStringSliceToSlice(@constCast("Oh well."))));
const allocator = gpa.allocator();
const formattedstr: [:0]u8 = std.fmt.allocPrintZ(allocator, "WeatherWhirl panicking! Error Message: {s}", .{msg}) catch unreachable;
NSLog(helpers.StrToNSStr(formattedstr));
var buffer: [50000]u8 = undefined;
var fbs = std.io.fixedBufferStream(&buffer);
const stream = fbs.writer();
std.debug.writeCurrentStackTrace(stream, std.debug.getSelfDebugInfo() catch unreachable, .no_color, @returnAddress()) catch unreachable;
NSLog(helpers.StrToNSStr(helpers.NonStringSliceToSlice(&buffer)));
std.os.abort();
}
I like this one better tho lol
dude what
it was just working 😭
error: the following command terminated unexpectedly:```
and now it's working again??
is it like not good to hook the same method on the same class twice in the same tweak? i would do it in dif %groups
someone should make an app that can make an ipad act as an external display in linux on wayland 
wait i can vnc?
yes
i fg ab that method
yea theres sm github for a virtual display
of just plug to cabels from ur pc into ur monitory and ur pc will think u hav 2 screens
hax ™️
i use hyprland (not gnome or kde) so i might just be able to do a headless display i can vnc
or rdp
what is better
uhhh idk try both?
rather, which can i use over usb (if any)
im a plazma kinda guy
i dont think any
jus look on GH
sm nerd probly made somthing
look in your history
we are ballin
do I need special permissions to use CLLocationManager?
any one know a tweak that can chnage the color of the pause/play, skip buttons on the LS? bc im trying to do that but im getting safemoded

It’s probly the same
Well I’m doing (hooked MRUTransportButton) “self.imageView.tintColor = (UIColor)”
“ImageView” is a UIImageView
U can do it with flex
the media player is basically the biggest difference from iOS 15 to 16

The entire lock screen
except ipad its the exact same
devel ment
University Professor failing you cause they come in with a bootlooped MacBook and iPhone due to Zefram:
now with swiftUI lag
Inspiring
No way thank you so much
What exactly should I sign when creating a JWT ? The users username ? Email ? ID ? Entire row of that users info except for password in my db ?
Get trolled
i just did email idk man
prolly the worst thing to use
wait nvm works now
then suggest something better
Sign the key itself and append user password to it 
errrrrm. a server provided unique id!!!
mfw emails can change
or idk depends on your use case
unique id assignment is pretty nice
Where do i get the cydia substrate sdk from?
I use UUIDs for IDs
@native orbit is there a way to parse a block to AST, or will I have to have people pass a string
Or make me pass a string, I’m trying to make a better objc thing for zig
So that you can call a function, and then put a block there that uses objc message send syntax
And I parse it to change it to use the internal functions using AST in comptime
But I might have to use strings anyways
Because the message send syntax won’t compile although the modified AST should change it anyways
Or another thing I could do is make it part of the zig compiler and send a PR, from what I’ve seen Zig is pretty open to changes like that
ask icraze
trol
have you considered
or maybe
perhaps even
ah
yeah or even
what is everyone yapping about
why does the posterboard icon kinda go hard
allat for an icon that you can never see 💀
Fr man
I remember thinking the same
Why so much effort for an invisible icon
i have it in my shortcuts lol
speechmemified_pasteimage.gif
real
Shush
Remember when I blocked you
didnt even notice
are you sure it's universal this time
and not only for you

yes
🧢

do you wanna try 
sure
i dont care about my uptime
no you don't

seriously
damn
not a respring loop or anything
you get stuck on black screen
because springboard doesn't get to fully start
or something
it might not even be infinite recursion
but I think it is because watchdog kills it
oh wait nvm
what
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000016ba1f398
Exception Codes: 0x0000000000000001, 0x000000016ba1f398
VM Region Info: 0x16ba1f398 is not in any region. Bytes after previous region: 1717498777 Bytes before following region: 167016
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
CG raster data 105428000-105430000 [ 32K] r--/r-- SM=PRV
---> GAP OF 0x66618000 BYTES
Stack Guard 16ba48000-16ba4c000 [ 16K] ---/rwx SM=NUL
Termination Reason: SIGNAL 4 Illegal instruction: 4
Terminating Process: SpringBoard [19167]
Triggered by Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libmeniscus.dylib 0x104f38a18 root.viewdidappearhook + 44```

patched asteroid14 did that to me as well
what caused you to unblock him?
he was french
thats just more reason to keep him blocked longer
He insulted my latest project 
But then I forgot I’d blocked him
And then unblocked him
well I think everyone just insluts projects made by people named alfie here
@sonic totem take a look pls kthx
atp I'm prolly just gonna use swift tho
but I would like to get this to work
ICraze abused
how rude
Doing maths
damn
doing maths with me 
What do y’all use for rich presence in vs code? Like is there a preferred extension? I see multiple options.
The most promising one I've seen is vscord (Discord Rich Presense by LeonardSSH)

Why can’t I change the BG color of this view(reaminingTime track) and why doesn’t it show up in flex ??
probably a skill issue
none of them
you will grow out of it
TBT when I almost leaked TS2 via that extension
Thank god no one knew who I was 
can you leak trollstore 3 with that extension 

how do i like disable a cell in prefs? like gray it out ?
Are you doing this via plist or programmatically
Disabling via plist 💀
Bruh idk
I think it’s straight up if identifier == whatever { self.disabled = YES;}
Am I right ? @radiant idol
I think something like that or maybe the property is called “enabled” and you set it to NO
I don’t remember
It’s the same 💀
@radiant idol
yes
ok so yeah just do self.cellEnabled = false
how do readonly properties actually work, like I know that the readonly field only generates a getter and no setter, but how does it actually get set during runtime or whatever
The ivar gets set
Readonly properties are readonly but you’ll always still be able to access the underlying ivar
so there’s an ivar for every property?
Yea
There’s not a property for every ivar, but theres an ivar for every property
Except class properties, I don’t know how those actually work

ah okay
Works, except my custom cells don’t like to follow the rules
Skill issue
wha like UIColor.clearColor
its a static text cell
My cells are better
No, that’s just a method call
self.contentView.alpha = 0.5 
That’s a stock issue
so fix it...
you fix it
Can’t be bothered
i did
@primal perch honda slander
can somebody tell me
why my code
crashes
#include <CoreFoundation/CFCGTypes.h>
#include <CoreGraphics/CGGeometry.h>
#include <Foundation/NSObjCRuntime.h>
#include <UIKit/UIImageView.h>
#include <UIKit/UIScreen.h>
#include <UIKit/UIViewController.h>
#include <substrate.h>
#include <UIKit/UIKit.h>
#include "WeatherHandler.h"
@interface PBUIPosterWallpaperRemoteViewController: UIViewController
@end
void (*ogviewdidload)(PBUIPosterWallpaperRemoteViewController *self, SEL _cmd);
void viewDidLoadHook(PBUIPosterWallpaperRemoteViewController *self, SEL _cmd) {
ogviewdidload(self,_cmd);
UIView *view = self.view;
UIImage *img = UIImageForCurrentWeather();
if(img == nil) {
return;
}
UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
imgView.frame = CGRectMake(0, 0, UIScreen.mainScreen.bounds.size.width, UIScreen.mainScreen.bounds.size.height);
[view addSubview:imgView];
[view bringSubviewToFront:imgView];
}
__attribute__((constructor)) static void init() {
MSHookMessageEx(NSClassFromString(@"PBUIPosterWallpaperRemoteViewController"), @selector(viewDidLoad), (IMP)&viewDidLoadHook, (IMP *)&ogviewdidload);
}
is there a reason to use objc_getClass over NSClassFromString?
oh
and here's those other functions
#include "WeatherHandler.h"
#import <CoreFoundation/CoreFoundation.h>
#include <Foundation/NSDictionary.h>
#include <Foundation/NSJSONSerialization.h>
#include <Foundation/NSString.h>
#include <Foundation/NSURLSession.h>
#include <CoreLocation/CLLocationManager.h>
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#import <libroot.h>
int getIDOfCurrentWeather() {
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager startUpdatingLocation];
NSString *urlstr = [NSString stringWithFormat:@"http://api.openweathermap.org/data/2.5/weather?lat=%f&lon=%f&appid=",locationManager.location.coordinate.latitude,locationManager.location.coordinate.longitude];
NSURL *url = [NSURL URLWithString:urlstr];
[locationManager stopUpdatingLocation];
__block int out = 0;
NSURLSessionDataTask *downloadTask = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if(error) {
return;
}
NSDictionary *results = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSDictionary *weather = [results objectForKey:@"weather"];
NSNumber *id = [weather objectForKey:@"id"];
out = [id intValue];
}];
[downloadTask resume];
return out;
}
UIImage *UIImageForCurrentWeather() {
int id = getIDOfCurrentWeather();
NSString *filePath = @"";
switch(id) {
case 801 ... 804:
filePath = [NSString stringWithFormat:@"%s/Library/Application Support/WeatherWhirl/clearskies.jpg",libroot_dyn_get_jbroot_prefix()];
break;
}
if([filePath isEqualToString:@""]) {
return nil;
}
return [UIImage imageWithContentsOfFile:filePath];
}
whoops
Dhinak being based part 2
what macros
rootless.h
are you trying to remake asteroid
sounds easy
that didn't work so well
^^
I swear to fuck if you steal my idea
make it in objc first
and then switch to zig
yeah I'm doing that now
if I delete all the messages from you in here it’ll seem like my idea
I'll switch to zig in like v2 or smthing because it's faster
and you’re copying my idea
nah I’m working on other projects rn
anyways
oh
what the fuck is that client

which macro
take a wild guess
yes
oh also
do I need special permissions to use CLLocationManager
(this is in the context of SpringBoard)
@timid furnace ```Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread: 8
Application Specific Information:
abort() called
Last Exception Backtrace:
0 CoreFoundation 0x1a8b6540c __exceptionPreprocess + 160
1 libobjc.A.dylib 0x1a1e45c28 objc_exception_throw + 56
2 CoreFoundation 0x1a8cc6400 +[NSObject(NSObject) _copyDescription] + 0
3 CoreFoundation 0x1a8b7a8b8 forwarding + 1340
4 CoreFoundation 0x1a8bdc8fc _CF_forwarding_prep_0 + 92
5 WeatherWhirl.dylib 0x105aa4a8c __getIDOfCurrentWeather_block_invoke + 224
6 CFNetwork 0x1a9b49b50 0x1a9b2c000 + 121680
7 CFNetwork 0x1a9b58a98 0x1a9b2c000 + 182936
I assume that means it's erroring in this block
if(error) {
return;
}
NSDictionary *results = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSDictionary *weather = [results objectForKey:@"weather"];
NSNumber *id = [weather objectForKey:@"id"];
out = [id intValue];
}
if I were to guess
it's probably the JSON
yea you could use some null checks
also you can go from results to id in one go
results[@"weather"][@"id"]
true
it'll be nil if any intermediate is nil
hm
so just check if your JSON parsed correctly first
maybe it's because it's not supposed to be NSNumber?
^
check if results is nil
k
and/or actually pass NSError*
yeah I could do that
this look good
NSDictionary *results = [NSJSONSerialization JSONObjectWithData:data options:0 error:&err];
if(err) {
NSLog(@"%@",err.description);
return;
}
hm
it still crashes springboard
and no NSLog output
and same crash log
just try logging results
you can log a dictionary?
yes
oh
“%@“, results
oh ok
ok well
base = stations;
clouds = {
all = 100;
};
cod = 200;
coord = {
lat = 0;
lon = 0;
};
dt = 1710466181;
id = 6295630;
main = {
"feels_like" = "304.52";
"grnd_level" = 1010;
humidity = 77;
pressure = 1010;
"sea_level" = 1010;
temp = "301.03";
"temp_max" = "301.03";
"temp_min" = "301.03";
};
name = Globe;
sys = {
sunrise = 1710482733;
sunset = 1710526332;
};
timezone = 0;
visibility = 10000;
weather = (
{
description = "overcast clouds";
icon = 04n;
id = 804;
main = Clouds;
}
);
wind = {
deg = 30;
gust = "0.3";
speed = "0.32";
};
}
it looks perfectly fine lol
I wonder if it's because 804 ain't an NSNumber
even though I'm pretty sure it has to be lol
lemme try also logging weather
make sure that's working right
wait
is that not a dictionary
{
description = "overcast clouds";
icon = 04n;
id = 804;
main = Clouds;
}
);
there's parentheses
results[@“weather”] looks like an array
I think that means areay
array
wtf that's so weird
it's not in the documentation
oh it is an array
in the documentation
why
lol
🗿🗿
there's only gonna be one weather at one latitude and longitude
well thay would explain it
why make it an array
just access the first element
yeah
[result[@“weather”] firstObject][@“id”]
ye
or just
weatherarray[0]
NSArray *weatherarray = [results objectForKey:@"weather"];
NSDictionary *weather = weatherarray[0];
if [0] doesn’t exist for some reason it might crash
Bc I don’t think there’s safety
there's literally no situation where it wouldn't exist though lol
I also need to figure out why latitude and longitude are 0
I think it's because missing permissions
not sure tho
ah
WeatherKit needs a developer iOS account
I looked into it
just don’t use weather kit
then what am I supposed to use
idk figure it out
like the weather app APIs???
atria doesnt use weatherkit
ill tell you that much
original aesteroid doesnt use weatherkit
meteorite doesnt use weatherkit
💀
ayyy no more springboard crash
except it isn't setting the background

even though latitude 0 longitude 0 is currently one of my implemented weathers
i mean if you're just using trollstore you'd have to patch the settings app which is uhh
dumb but no one made a tweak for that
Nah a tweak
If u have dopamine or so
Or is that still too hard
then why did u mention trollstore
lol
i mean i know about the system app registrations
but that made me think u weren't jailbroken
(still, no tweak exists rn)
use appsync and change them to user apps
w appsync u can run trollstore apps as user apps
yeah but appsync only works in a jailbroken state and you can't use arbitrary entitlements
so
[0] is unsafe, firstObject is not
Hardcoding ftw
I'm writing a mobile substrate tweak that would like to be able to inject into every process, I'm using the follow (trimmed) plist
<key>Bundles</key>
<array>
<string>com.apple.Security</string>
</array>
This seems to work but the iOS device fails to boot with the repeating message AppleAuthCPRelay:setAuthError 3 in logs, I'm guessing due to some tamper check? My naive solution is to just not hook this process but I can't find any documentation about an <exclude> field or similar
Within your tweak constructor, you can check the process you’re in before initialising any hooks
Thank you for the tip! I got it working thanks to that
💪
@acoustic imp hey, how do you hook the wallpaper on iOS 15?
i was wondering if any one of you knows which binary and which view controller is responsible for rendering this view, since i want to add a button at the bottom to perform some actions
flex it :3
oh yea
that exists
PSUICellularDataOptionsController
oh its in a privateframework
c0caine
SettingsCellularUI.framework
im making c0caine real
alright now i just have to figure out how tf do i hook this to add a button
#import <Preferences/PSListController.h>
#import <Preferences/PSSpecifier.h>
@interface PSUICellularDataOptionsController : PSListController
- (id)getCustomSwitchValue:(PSSpecifier *)specifier;
- (void)setCustomSwitchValue:(id)value specifier:(PSSpecifier *)specifier;
@end
%hook PSUICellularDataOptionsController
- (NSMutableArray*)specifiers {
// do magic here
}
%new
- (id)getCustomSwitchValue:(PSSpecifier *)specifier {
// do more magic
}
%new
- (void)setCustomSwitchValue:(id)value specifier:(PSSpecifier *)specifier {
// do even more magic
}
%end
prob smth like that
oh wow
i didnt compile it or test it in anyway shape or form, but im assuming thats right 💀
i wasnt expecting anyone to do it
i was bored
ill try this when i get home
seemed easy
tysm
tysmmmm i need a button instead so ill modify it when i get home
check the edit 💀
Just to save me the 15 seconds of time needed to switch
can’t firstObject still raise exceptions if the array or set is of size 0
No it’ll return nil
ah ok
i’m on mobile it’s too much effort to open docs smh
yea you're right indexing is not safe
sad
guess i got tricked by NSDictionary
what’s the point of the ?:
it probably also indexes into uninitialized memory but i honestly don’t care enough to check
it’s a fallback i guess
for what, it’s gonna catch
smartest dev
oh yeah also
i made a slight speed improvement in an algorithm for a particular project
this is a test to find the last object in an array of size 100,000 and it’s an average of 10,000 iterations of each
and i’m not just going backwards it’s the same O(k) anywhere in the array where k is the number of properties to search for (for the fast one)
the slow one is O(k) best case (0th object) and O(n*k) worst case (last object) where n is the number of items in the array
arr[-1]
(lua)

@placid kraken if you need me to test any build to fix that wierd issue where some things are black instead of the usual grey then please send me it!
this is surprisingly an issue in carplay too
i’ve been super busy throughout the week but during the weekend i’m gonna try to fix that aswell as a silly crash in facebook
Okay!
thats fine take your time lol
My carplay looks horrendous 
i can just disable tweak injection into carplay
but i wont because I'm sure you'll fix it soon
and i don't use carplay much
it’s been an issue ever since the first release
i have a feeling it’s linked to libgcuniversal lol
i’m gonna write my own methods for parsing the colors and stuff
alright ive gotten to the point where i can (weirdly?) add a group with a footer and a button to the view
but i cant get it to do anything when i tap the button
[button setProperty:NSStringFromSelector(@selector(doButtonTap:)) forKey:@"action"];
im assuming this is wrong
best logic in software dev, its almost always someone elses fault

That doesnt work during runtime does it
Is it possible during runtime?
for sure yes
Like ptrace on linux, does it work same on mac?
If only zefram was open source
well it IS an issue with parsing the colors
and i don’t do that myself it’s a utility method in libgcuniversal
sooooooo naturally
no colon
just the text
i tried with the colon and without the colon
then you put - (void)methodName {}in the same place as your specifiers
needs to match ofc
ill look into it again tomorrow cuz its late-ish and im tired already
No need for NSSstringFromSelector
oh
NSSstringFromSelector
i swear if its that
im on mobile
ok fiore
proof
Yes, funny thing is I almost made a tweak for sm wit the walp. Now iOS is a bit funky, there’s at time 3 different walp view
fake that's from last year

I can send u the code I made with the hooks and interfaces if u want, but I’m not home atm



