#development

1 messages · Page 551 of 1

vivid dew
#

just the one?

silver rampart
#

ah yes the classic climate change approach

#

"we will run out of this thing very soon"

"oh no, I hope that doesn't happen. moving on"

lime pivot
lime pivot
#

well, that's not the actual story but that's sure what it felt like

ocean raptor
#

I don't have ipv6 setup KEKW

grim sparrow
gentle grove
#

imagine not having ipv6

ornate lance
#

Howdy! I'm somewhat new to jailbreak tweak development, so apologies if this is a newbie question. I'm attempting to hide a UICollectionViewCell from a UICollectionView in an app, but everything I've attempted has left an empty gap where the cell had been. Is there something I need to run on the UICollectionView to re-layout the remaining cells? Is there a specific way I should be removing the cell I want to hide?

tepid olive
#

UIKit moment

tepid olive
ornate lance
#

I've been having a heck of a time finding anything exposed I can hook into to disable the "ad" cell from being inserted into the UICollectionView

tepid olive
#

Is the app swift

ornate lance
#

Yeah

tepid olive
#

good luck

ocean raptor
ocean raptor
#

Also, I got approved to chariz PES_EvilRondo, you can tell they're getting desperate

grim sparrow
#

That way you don’t need to technically remove the cell or edit the data source

#

It becomes “invisible”

ornate lance
#

I’ve attempted to set the frame height/width to 0, and while this does hide the content of the ad cell, the space is still there and doesn’t get filled with the remaining cells

#

Perhaps I’m setting that too late, though? Is there a specific function to reliably hook for setting the height?

grim sparrow
#

Do you know if the cell has a specific class

ornate lance
#

Yeah, that’s what I’ve been hooking, specifically setNeedsLayout

ornate lance
#

Within that class

grim sparrow
#

This is what you want to hook

#

That’s called before layout

#

Do you know just from the indexPath if it’s an ad?

ornate lance
#

I'm not sure how to hook the delegate, I've not messed with those before

grim sparrow
#

Exact same logic

#

Just a different class

ornate lance
#

I don't have any references to any delegates, unless the UICollectionView or UICollectionViewCell references one?

ocean raptor
#

self.delegate

grim sparrow
#

^

#

Just printing the delegate will tell you what class you need to hook

#

Alternatively

#

Do you know what specific class the ad cells are?

#

like AppNameAdCollectionViewCell

#

Or something

ornate lance
restive ether
#

🗿

grim sparrow
#

God I just realised we were talking about collection views

#

I am awful at advice at 4am

ornate lance
#

😅

tepid olive
#

Amy needs some meth to stay awake

grim sparrow
#

This is what you need

#

If you want an easy ish method you could hook UICollectionViewDelegateFlowLayout

#

And if the cell is of an ad cell type create a new size with height 0 and return that

#

If it’s not just return orig

ornate lance
grim sparrow
#

Technically no

#

You could just do %hook UICollectionViewDelegateFlowLayout if you wanted to

#

And that would hopefully get every collection view in the app

#

Assuming they are using a flow layout, which is usually most common

ornate lance
grim sparrow
#

[cell isKindOfClass: NSClassFromString(@"WhateverTheAdCellClassIs")];

ornate lance
#

Ok maybe another dumb question

ornate lance
#

oop

#

I'm not having luck calling that linked function

#
                UICollectionViewCell* cell = self.cellForItemAt(indexPath);```
#

It looks like that method is from UICollectionViewDataSource rather than UICollectionViewDelegateFlowLayout

late ridge
#

u in objc??

#

that would be [self cellForItemAt:indexPath]; if you're using objc message passing syntax

ornate lance
#

Hmmm. Tweak.x:61:33: error: receiver type 'UICollectionViewDelegateFlowLayout' for instance message is a forward declaration UICollectionViewCell* cell = [self cellForItemAt:indexPath];

indigo peak
#

Just took layoutSubviews

#

easy

late ridge
#

ya

#

good dev fiore

indigo peak
#

fr

#

calculatorhistory was released with a layoutSubviews hook

late ridge
#

oh boy

#

and I have that installed on my phone

indigo peak
#

I changed it

late ridge
#

gj

hardy glen
#

How long would it take to disasm UIKitcore let’s see

indigo peak
#

@hardy glen progress?

#

Thank you “developer” for making my year better

#

Definitely not being extremely wholesome because I will get trolled

hardy glen
hardy glen
#

@silver rampart is that normal fr

silver rampart
#

not my project but no

hardy glen
#

yea ik i just figured you would know the most about it than anyone here

silver rampart
#

chmod +x $(which dyldex); chmod +x $(which dyldex_all)

#

I'll double check the git/pip pkg and make sure everything is marked as executable tomorrow, but it should already be, that's odd

hardy glen
#

yea i have no clue lmao, ill try it on a vm and see if i have the same issue

vivid dew
hardy glen
#

F

#

hold up thats the wrong screeenshot

#

which dyldex still doesn't return location

vivid dew
#

sir you are [redacted]

hardy glen
#

dyldex not found

hardy glen
vivid dew
hardy glen
#

im a try on my mac lets see if its a me problem

silver rampart
#

I'm incredibly drunk and forgot the $ before editing

#

and you copy pasted the original

hardy glen
#

lmao

silver rampart
#

it's 2 am here IOWatchdog

hardy glen
#

okay cool its not a me problem

silver rampart
#

system info?

hardy glen
#

i tried on arch linux and this is mac os monterey

#

both permission denied

silver rampart
#

works fine on a completely fresh digitalocean dropet

hardy glen
#

i literally just did this on both machinespython3 -m pip install dyldextractor

#

wtf

silver rampart
#

ot's likely an implementation specific thing related to pip and the scripts dir or sometghhin

hardy glen
#

yea most likely

silver rampart
# hardy glen yea most likely

if you have the time on a system, you can try python3 -m pip install git+git://github.com/KritantaDev/DyldExtractor.git

#

assuming some implementations of python3/pip/setuptools set the executable bit on scripts= files if it isn't already set (which is the case for dyldex for some reason), and some dont

hardy glen
#

it works

silver rampart
#

👍

hardy glen
#

thank you, i knew i didn't just extract the cache for no reason lmao

silver rampart
# hardy glen it works

could you on the same system, try python3 -m pip install --force-reinstall git+git://github.com/arandomdev/DyldExtractor.git , by chance?

#

want to make sure this is an issue with varying setups of python / tools and not install method

silver rampart
#

fuck

hardy glen
#

lmfao finally extracted what i needed

silver rampart
#

for most versions

#

(clicking this bit downloads the pre-extracted fw for you)

rain falcon
#

nfr

silver rampart
#

i

#

wtf

#

i deleted this header to make the repo look prettier in a screenshot earlier today

#

and someone pr'ed this

hardy glen
#

lmao wtf

hardy glen
silver rampart
#

@hardy glen can you python3 -m pip uninstall dyldextractor and then pip3 install sdfiawejfjawifaj

hardy glen
#

That is very true

#

Yes

silver rampart
#

and see if it works again

hardy glen
#

it works

silver rampart
#

(and if you really have nothing else to do rn, python3 -m pip uninstall sdfiawejfjawifaj; python3 -m pip install dyldextractor and see if it breaks again)

faint stag
#

classic jailbreak detection moment fr

lime pivot
#

"FakeCarriera.app" lmao bro

#

if you're gonna do fs checks for tweaks from iOS 3 at least get the names right

silver rampart
silver rampart
#

autocorrect wya

plain python
silver rampart
#

^^^

plain python
#

Chimera/Odyssey/Taurine probably already slides past some outdated jb detection

#

since we don't use Cydia or substrate

#

probably also the low marketshare of Taurine but eh

silver rampart
#

force app devs writing anti jailbreak to actually learn something about macho/dyld

#

instead of copy pasting some filesystem checks from a 2014 bl9g post or something

plain python
#

honestly though

#

I hope iOS 16 can make me stop caring about jailbreaking my iPhone

#

since iPadOS 15 has already made me go like "yeah I don't need to jailbreak this, I'm happy with stock"

silver rampart
#

join the android side

#

it's so nice here

plain python
#

I got back into chromebook stuff

silver rampart
#

literally everything I ever wanted from ios on an unrooted android

#

never going back on my daily phone

plain python
#

probably just a matter of time until I run into android anyways since chrome os runs android apps now

silver rampart
#

the RE is still fun though

tacit spade
tacit spade
plain python
tacit spade
#

sure, I mean I respect that

silver rampart
plain python
#

iOS jailbreak scene is boring af compared to chromebook modding

#

tried innovating in the iOS jailbreak scene? lol the pushback is rough

tacit spade
#

i guess I don’t know how to RE anything else yet and I’m too busy to learn

silver rampart
#

but having S21 ultra android 12.0 on my daily ohone and never ever REing/fucking with it is just nice

#

does more than I ever wanted my daily drive phone to ever do

#

without root

plain python
#

iOS app store devs: "combine, SwiftUI, swift 5.3? yessss"
jailbreak devs: "BUT MY 4 YEAR OLD xxx"

tacit spade
#

No?

tacit spade
#

Didn’t think so, one second

plain python
#

no one should be using layoutSubviews anymore

#

that's a bad habit that is rampant in the jailbreak scene from outdated tactics

silver rampart
#

it's due to outdated/lack of guides/docs

tacit spade
#

I can’t find it hang on

silver rampart
#

every new dev is foomed to repeat 2012 mistakes

#

bc everything in the scene is stuck in 2012 and all our docs/info is shit

plain python
faint stag
tacit spade
plain python
#

Sileo 2.0 is drastically better than Sileo 1.0 mostly because a lot of the outdated shit was rewritten/removed

tacit spade
#

“Sorry, Ethan, there’s something wrong”

plain python
#

though there's still certain things that need updating (ahem layoutSubviews)

lime pivot
#

and never would have noticed because they have no clue what FakeCarrier or "FakeCarriera" even is

silver rampart
lime pivot
#

if they googled for 10 seconds they'd realise everything about it is from like 2009

plain python
#

Swift apps won't even run on that iOS version

lime pivot
#

lmaooo that's actually very true

#

I mean, you can't even read /Applications or /Library on iOS 14 at all

#

these lists are hanging by a thread pretty much only because I believe /etc/apt is still accessible

plain python
lime pivot
#

one out of like 30 paths still exists

plain python
#

sandbox = EPERM

silver rampart
#

luckily jailbreaks spray files literally everywhere

plain python
#

file not existing = ENOENT

lime pivot
#

does it still reveal existence? I figured that was the point, why block access to the files/dir listings but allow learning if a file/dir exists

silver rampart
#

so many far better techniques for jailbreak detection

tacit spade
#

i mean

silver rampart
#

although ig them not being often used / known about == less mitigation

tacit spade
#

let’s say you’re working as a software engineer for one of these companies

#

you have nothing against jailbreaking

silver rampart
tacit spade
#

it might even be how you got into iOS Development

plain python
silver rampart
#

"technically implememfwsx this moving on"

tacit spade
#

your boss sends you an email

#

“we need jailbreak detection”

#

what are you going to do

#

A. Spend lots of time learning how modern jailbreaking works

#

B. Copy the first Gist you find

silver rampart
tacit spade
#

and that

#

is why jailbreak detection is terrible

faint stag
# faint stag https://github.com/search?l=Swift&q=%22FakeCarrier%22&type=Code yeah, they did ...
GitHub

iOS Jailbreak detection analysis - Comparison of jailed and jailbroken iOS devices - jailbreakdetection/checksystemState.swift at 9084ec985d26ba95a23d6d9e2831b889c210ffca · abhinashjain/jailbreakde...

tacit spade
#

it’s when server-sided apps do jailbreak detection that I get worried

#

it’s like

#

how… how easily can the client mess things up, then?

#

because the way this should work is that I can’t change anything

#

besides maybe what a label says

silver rampart
#

fs checks are the easy way

#

and easily bypassible

#

there are far more competent ways to do jb detection based on the plethora of insecurities typical jailbreaks introduce to ios

lime pivot
tacit spade
#

also the reason I opened this channel was to ask if I can hook a uiwindow without hooking the keyboard window (tbh I’m probably thinking about this problem the wrong way)

lime pivot
#

at any rate, literally none of these github noob jb detection things realise that

hardy glen
#

Some apps don’t even make sense to be needing JB detection. I heard a toothbrush app had JB detection lmao

tacit spade
#

i remember that post!

lime pivot
#

they're just using FileManager.default.fileExists(atPath:)

silver rampart
#

but

#

sec

tacit spade
#

this would not be the first time

lime pivot
#

of course implying that means they're idiots not to google jb detection and slap in the same trash stack overflow code everyone uses

silver rampart
#

so

tacit spade
#

hackers don’t deserve the cleansing power of sonicare

silver rampart
#

like

#

fuck i'm not in a good state for advice lol

lime pivot
#

when in reality they aren't thinking particularly hard about where their priorities are and whether there's literally any possibility whatsoever of the app allowing bad things to happen if hacked

tacit spade
#

i mean I won’t lie I’m developing in my head so

tacit spade
#

it’s not particularly uh time sensitive

plain python
tacit spade
silver rampart
plain python
#

if it was just an order from higher up to slap in jb detection just because some pentester said so, I'd just slap the same stackoverflow thing with maybe updated file paths

tacit spade
silver rampart
tacit spade
#

okay, how about I contextualize my question

#

So y’all know the blur tweak

#

the one I have been making for what

#

4 years

silver rampart
#

hooking model == lame; hooking view == lamest; hooking controller == less lame; no hooks == least lame;

#

is my view

tacit spade
#

so basically I’ve gotten to the point where I can manage what displays behind in app in springboard

#

wild stuff

#

here’s the problem

#

The main window needs to be completely transparent

#

ok easy

#

except when you do that

#

guess what doesn’t work right

#

hit testing!

#

not to worry! CALayer has a property called hitTestsAsOpaque

#

yay! I can scroll!

#

but if I dare open the keyboard

#

oops now the keyboard window intercepts all touches

silver rampart
#

could hook the keyboard window's subclass and intercept that value on it

tacit spade
#

Sure but that seems hacky

hardy glen
#

UIRemoteKeyboardWindow

tacit spade
#

what about other system windows

#

basically I only need this hook one time, for the lower-most window

silver rampart
#

could hook the viewcontroller responsible for creating the keyboard window and add a bit that removes that value (which would require a similar model for the rest)

lime pivot
tacit spade
#

for the sole purpose of not breaking the hit test chain

tacit spade
lime pivot
#

well at least he's not final

tacit spade
#

actually he’s a fantastic prof

silver rampart
#

could implement a class test with a global variable pre-check

#

class test fails, set global, dont run branch again if global== false

tacit spade
silver rampart
#

still hacky but without the 0.0000002nanosecond performance hit

tacit spade
#

i mean, I’m not modifying a property of the uiwindow instance itself, just a property of a property

#

so in other words the hook entry point doesn’t really matter

#

is there another way to get the lower-most window

lime pivot
tacit spade
#

again, only needs to run once

silver rampart
#

can you hook a function in whatever creates the keyboard window, and just set said property-property there?

lime pivot
#

***one*** person did their own research

silver rampart
lime pivot
#

and yet still included checks for RockApp, Icy, WinterBoard, SBSettings, MxTube, IntelliScreen, FakeCarrier, and blackra1n

tacit spade
lime pivot
#

none of which are apps that run on their iOS 12.4 deploy target

tacit spade
#

not with that attitude

lime pivot
silver rampart
tacit spade
#

wait

#

oh my god

#

mainWindow

#

im a goddamn idiot

silver rampart
#

u figured out a better hack pog

tacit spade
#

or whatever it’s called

#

keyWindow?

lime pivot
#

also, what the hell even is tweakPath in that code

silver rampart
#

yes

lime pivot
#
    "/Library//SSLKillSwitch2.dylib",   // disable SSL certificate validation
    "/Library//tsProtector.dylib",``` ????
tacit spade
#

it’s been forever

silver rampart
#

however keyWindow is deprecated but (still works)

lime pivot
#

none of these paths even exist

hardy glen
#

thats deprecated isn't

#

it

lime pivot
#

keyWindow will throw an exception on multi-window iPad apps

tacit spade
silver rampart
#

'fuck ipdad users'

lime pivot
#

yeah fuck the ipdads

tacit spade
#

/Library**/MobileSubstrate/DynamicLibraries/**

#

where they have Library//

#

actually my first jb device was iPad

#

so I will think of the iPads

tacit spade
#

that’s right folks it’s time to look at the private methods in public headers

#

accidentally slaps self with ipad

tacit spade
#

wait I don’t guess uikitcore is public

silver rampart
#

uikit isn't real

#

it's a fake for uikitcore which actually iplements what you use when you import ukit

plain python
silver rampart
tacit spade
plain python
#

think it was around iOS 13 they split uikit

tacit spade
#

hmm

#

maybe 12?

#

feels like it’s been a thing since before I got good at the codes

#

(trademark)

silver rampart
#

any way you could improve the mobile experience

tacit spade
#

I’m on the GitHub app looking at headers

silver rampart
#

could you clarify? i rather like it but i'm very interested in what other ppl want on mobile UI

tacit spade
#

Idk, the whole native app thing is just very convenient for me

silver rampart
#

definitely

#

bigger buttons that are harder to miss and all

hardy glen
#

You could use runtime browser if you are jailbroken

tacit spade
#

I mean I love your site, love the highlighting, leagues ahead of limneos’s

tacit spade
#

not on my main

silver rampart
#

i hate when apps/sites neuter things for mobile tho

plain python
hardy glen
#

Yea I like krits website

tacit spade
silver rampart
#

i dont get it

#

would be beyond easy to do on limenos' site

tacit spade
#

oh and I like how there aren’t ads

silver rampart
tacit spade
#

because limneos hasn’t extracted enough money from the community

#

sorry limneos your stuff is amazing please don’t send the tweak mafia

silver rampart
#

the syntax highlighting is easy to implement, i like to think the (fully client side JS hacky BS) logos generater helps set it apart

#

if u click line numbers it'll open a (scrollable, properly done) second pane with logos hooks for said methods

tacit spade
#

anyone know if uiscene hosts the keyboard window

silver rampart
#

if you're planning on checking that from within the uiwindow hook, that's a ton more runtime calls

tacit spade
#

okay here I’ll try to make this a bit more clear

#

i need to run this code one time

hardy glen
#

No idea but I am making a clipboard manager and personally use UIRemoteKeyboardWindow if that helps

tacit spade
#

window.layer.hitTestsAsOpaque = TRUE;

#

window needs to be the lower-most uiwindow

#

for the sole purpose of not breaking the hit test chain

silver rampart
#

let me find a jb phone a d fuck around

#

sec

tacit spade
#

lol I won’t lie mine isn’t even on me

#

so no rush I’m just trying to think through it

silver rampart
#

have literally fuckall else to do except stumble around

#

3 am woops

tacit spade
#

heh

#

i mean, good thing to keep in mind, any windows that display on top of the main app window are either intentionally transparent or have opaque content- that will be made transparent by my tweak dammit

#

it should still hit test fine though

#

as long as there is something to catch hit tests WAIT

silver rampart
#

this is why hooking M or C is usually less of a headache

tacit spade
#

IS THAT WHY YOU EXIST

silver rampart
#

hm

#

@tacit spade can you just check the .hidden attrib

#

if it's 1, fail hit tests always kinda thing

tacit spade
#

would hidden be 1 if it has no background color but alpha = 1

#

@silver rampart actually are you in front of a term or something

silver rampart
#

can walk over to it

tacit spade
#

preferably one that can ssh and then start up cycript

#

load cycript into a system app, I’ll walk you through the steps of making it transparent

#

the simpler the better

silver rampart
#

just lmk what info you need to find out

tacit spade
#

i don’t actually

#

know

#

uh

silver rampart
#

am competent

tacit spade
#

okay

#

load into any app

#

then uh

#

open the keyboard somehow

#

once you’ve done that

#

do choose(UIScene) — there should only be one

#

then choose(UIScene)[0]._allWindows

#

see how many there are

#

and uh ._windows would be great too

#

@silver rampart if ur there

silver rampart
#

most difficult part is figuring out where tf my SE is

tacit spade
#

lmao

#

that’s actually the problem I’m having

#

@silver rampart don’t stay up too late for this by the way. sleep is a good

#

oh my god I think I just turned on the tv

silver rampart
tacit spade
#

my dad’s sick so my mom’s in that room on the couch

#

oh my god

silver rampart
#

top 10 reasons living alone is nice

tacit spade
#

it appears to be off

#

NOPE

#

frick frick frick frick

silver rampart
#

top #11 reasons having a dumb-tv is nice

tacit spade
#

well

#

i turned it off manually

#

my mom was still asleep somehow??

#

definitely woke up teddy tho

#

he was just sitting there like “i am a dog and this seems perfectly normal”

#

When you’re hiring people

silver rampart
#

trying to work through it with flex/lldb

tacit spade
#

Oh

#

i gotcha

#

search the heap for UIScene

#

choose() is a cycript function btw

silver rampart
#

if this is any help to you, keyboard window implements the property windowLevel with value 10000001

#

(yes that is base 10, not binary notation)

sour halo
tacit spade
#

it float

#

i mean I could check to make sure window level is -10 < x < 10

#

should give me room with any funky things

#

I don’t like how that’s undefined behavior though

#

i mean

#

i suppose I could just make my own uiwindow

silver rampart
#

sec finally found obj you were looking for maybe

tacit spade
#

Actually you might’ve been right the whole time. I’m not sure modifying the keyboard window is a good idea at all… though im not sure how I would blacklist all of its views

#

Also if anyone knows how to call this app fly-in animation please let me know

sour halo
#

Apollo user

tacit spade
tacit spade
#

I suspect the former will work with Lucidity much better

silver rampart
tacit spade
#

hmm

#

Okay

silver rampart
#

blind guess

#

said object is kept as a property in CSCoverSheetViewController.overlayController

tacit spade
#
%hook UIWindowScene
- (id)initWithSession:(id)arg1 connectionOptions:(id)arg2 {
   if (self == %orig) {
        self._windows[0].layer.hitTestsAsOpaque = TRUE;
    }
    return %orig;
}
%end```
silver rampart
#

what bundle does that inject into

tacit spade
tacit spade
#

com.apple.UIKit

silver rampart
#

mobilesubstrate standard bundle fitlers really need blacklists smh my head

tacit spade
#

eh

#

just added a guard against springboard

#

no big deal

tacit spade
#

what would it take to get my uni to let me live alone

silver rampart
#

ping me tomorrow and i should be far less useless kek

tacit spade
#

same tbh

faint stag
#

tfw app has reverse engineering detection

plain python
untold river
plain python
#

and rootless procursus will probably fly under the radar

lime pivot
#

amazing

#

that’s a huge step up

#

from checking for blackra1n.app and attempting canOpenURL cydia:// without declaring it

#

also why tf does uncover have a url scheme

plain python
#

lol they actually check for libhooker.dylib on disk

#

well seems they are aware of libhooker's existence

#

speaking of which, I do want to get libhooker working on sideloaded apps for stock iOS at some point

#

iOS 16 pls make me no longer need to to jailbreak my iPhone

plain python
lime pivot
#

“Special thanks: 👏🏻
kubajakowski for pointing out the problem with canOpenURL(_:) method” lmao never mind they didn’t even figure it out themselves

plain python
#

some people might legitimately need proxies, and anyways DNS poisoning is a thing

weary heath
#

Maybe for organisations that need you to be connected to an internal VPN

weary heath
plain python
#

so you’ll be able to hook stuff in system libraries too

ocean raptor
#

Can't believe it'll be 2022 tomorrow

untold river
#

still waiting for them to add sileo support

#

or zebra

#

installer, even

lime pivot
grim sparrow
silver rampart
#

144hz monitor just arrived

#

this is how they packaged the stand

tepid olive
#

LMAO

grim sparrow
#

At least they're saving on cardboard

tacit spade
#

i don’t see the problem, it helps it to stand

faint timber
lethal kayak
#

we need more bamboo straws

grim sparrow
#

paper straws are a crime against humanity

restive ether
grim sparrow
#

wanna know the funniest thing about paper straws

#

they aren't even fucking recyclable

restive ether
#

it’s more it costs more energy and stuff to make plastic than one paper straw

grim sparrow
#

overall paper straws are worse for the environment

restive ether
#

also recycling is a scam

#

and the top 100 worldwide companies create 75% of all pollution

#

so

#

the carbon footprint model was designed by BP to make it look like individuals were the driving factor

main apex
faint timber
#

Like now you pay for plastic bags at the stores

restive ether
#

they don’t charge for straws

faint timber
#

It’s outright banned in my city tho

restive ether
#

bags yes

#

in my county the way it works is you’re supposed to have to ask

#

they aren’t supposed to be out or straight give. to you

tepid olive
#

i thought they disabled single user mode

shell nova
#

I wonder why they made it like that

#

I kinda like the keyboard commands better than the single power button command

indigo peak
#

@gaunt dew especially this message

silver rampart
#

especially this message

indigo peak
#

hey I do that second one all the time!

vivid dew
#

especially this message

indigo peak
#

where the fuck did that come from

#

I forgor about that

vivid dew
#

you said it not me

indigo peak
gentle grove
#

@gritty crystal send the review thing here

gritty crystal
#

apparently something adjusted the indentations

#

so everything was considered edited

gentle grove
#

troll

#

send it

#

its a develpoer jkoke

high citrus
#

Happy new year 🎆 (utc+1)

glacial matrix
fallow ravine
#

Dumb take but I like the new “hold power button”. I don’t use the keyboard shortcuts very often and I almost always have to Google them when I need them. Simple approach removes the need to do that for me personally

#

I work in an office with both M1 and intel in abundance

#

and often fix both KEKW

atomic horizon
#

has anyone got nodejs embedding into a tweak?

tepid olive
#

Please don’t

indigo peak
#

Nope and never consider it

#

Please don’t

atomic horizon
#

why not?

#

:trole:

tepid olive
#

keep yourself safe

gentle grove
atomic horizon
hardy glen
vivid dew
#

who the FUCK is joe

atomic horizon
#

joe biden

hardy glen
#

Think ur ass needs to get up and look for perry instead of worrying about irrelevant stuff

vivid dew
#

the only thing i need is meth

hardy glen
#

If i believed anyone did meth here, it would definitely be you

late ridge
lime pivot
#

mario kart 1

#

every app becomes mario kart

hardy glen
#

You are definitely a crack type of guy

#

Also i have acquired your task port

vivid dew
hardy glen
#

Sorry idk what a task port is

#

Apparently

#

Can’t talk rn

tepid olive
atomic horizon
#

but why did they reply to me?

indigo peak
#

Bro I would get bored in chem last year and I’d start mixing random things

hardy glen
indigo peak
#

It was pretty fun

atomic horizon
#

but why did they reply to me if its not my business?

indigo peak
#

I also burned my hand and spilled hydrochloric acid on my other hand

hardy glen
indigo peak
#

Most of the time

atomic horizon
#

imma start infinity war

#

to finish thanos thing

indigo peak
#

You already started a war asking for JavaScript tweaks

indigo peak
#

I didn’t realize it at first

hardy glen
#

My chemistry class had an explosion

indigo peak
#

Until my hand at a yellow tint

hardy glen
#

The wire extension fucked up

#

And blew up

gentle grove
hardy glen
#

@indigo peak i think i might work on flexdump

subtle grail
#

fellow wine-cat enthusiast

#

fancy cat

hardy glen
#

Either flexdump or update flexextend

indigo peak
#

Flex dumpy

hardy glen
#

Flexdump would be pretty cool

#

Ngl

indigo peak
#

I need to order a new iPhone SE battery

#

So I can work on tweaks

#

iOS 13.1.3 or something

hardy glen
#

sorry all my tweaks will only support ios 14.8

tepid olive
#

@hardy glen if you write me 10 lines on what a task port is i will unblock you

tepid olive
#

k

silver rampart
#

it flows better

tepid olive
#

Understandable

glacial matrix
#

Understandabling ✨

gentle grove
#

Since hello-world.rs is written in blazingly pure, configurable, lightweight and memory pure rust(🚀) - the CVEs are secure, memory chad and blazing pure 🚀

ocean raptor
#

I hate email

#

anyone here ever messed with roundcube?

#

I think I found the issue....

tidal jungle
#

yeah I’ve used a rubiks cube before

ocean raptor
#

GOT IT! had to use signing_table in my rpsamd config

silver rampart
#

happy new years dipshits

untold river
#

happy new year devs yall made me realize how much of a dumbass i am

vivid dew
indigo peak
#

happy new year

woeful scaffold
#

Happy new year

#

Also is objective c the only language for iOS development?

tepid olive
#

You can use most programming languages for iOS development

gentle grove
tepid olive
woeful scaffold
indigo peak
indigo peak
#

Tweak.btrolllaugh

#

or is it bf

#

I can’t ewmember

vivid dew
#

btrolllaugh

woeful scaffold
#

I’m unfortunately a c++ based man

tepid olive
woeful scaffold
#

And theos is a standard for a reason I assume?

gentle grove
tepid olive
#

tweak.fla

indigo peak
#

idk the reason

#

but it’s a standard

tepid olive
#

it was first

#

thats usually how things become standards for better or worse

woeful scaffold
#

Dunno, I just tried objective c once a couple of years ago and remember it sucked

indigo peak
#

i like objc

#

like its not bad

#

but its by no means good

#

Tweak.js trolllaugh

gentle grove
#

I hate java

indigo peak
#

java is the worst.

gentle grove
#

I tried to do some plgin stuff

#

its really not, have you ever tried to do jav???

tepid olive
#

everything except TypeScript and Swift is the worst

gentle grove
#

Java uses so much ram

indigo peak
#

die

tepid olive
#

and Julia

#

Julia is great

gentle grove
#

I literally ran out of ram trying to write a plugin

tepid olive
#

it’s sexy as fuck (relatable)

late ridge
#

rust is cool don't make fun of rustaceans

tepid olive
#

u suck

indigo peak
#

happy halloween everyone :D

gentle grove
#

outside of memes rust is actually pretty cool

late ridge
#

the compiler errors 🤤

tepid olive
#

If you like Rust, upvote

#

My vote does not count

gentle grove
#

I don't have an upvote emote

#

Oh there

glacial matrix
indigo peak
#

pls

#

pls man

#

i need a real langugae

#

Tweak.html

glacial matrix
tepid olive
indigo peak
#

eta 2023

tepid olive
#

julia tweak

#

eta when

tepid olive
#

easy it

#

easily

glacial matrix
#

ah, you meant tweaks written in python

tepid olive
#

just get a html parser

#

and a bunch of regex

glacial matrix
#

has java made progress on any type of sensible block/lambda syntax?

gentle grove
#

have you ever written in rust either

tepid olive
#

🚀

gentle grove
#

you should try java

tepid olive
#

I will

gentle grove
#

mainly I would prefer rust because of build tools and environment

tepid olive
#

i’ve used java actually

#

rust as well

indigo peak
#

ez

gentle grove
#

yeah

tepid olive
#

java’s syntax is nice

#

i like

#

but

gentle grove
#

Java is incredibly difficult without an idee

indigo peak
#

but im like

#

stupid

tepid olive
#

just convert it to logos

#

and then preprocess that

indigo peak
#

i mean, true

glacial matrix
#
a_group = Group("A")

@a_group.hook(SBStatusBarManager)
def handleStatusBarTapWithEvent(arg1: _id) -> None:
    print("Hello world.")
    self.orig()

a_group.init()
indigo peak
#
@hook(SBStatusBarManager)
def handleStatusBarTapWithEvent(arg1: _id) -> None:
    print("Hello world.")
    self.orig()

would convert to

%hook SBStatusBarManager
-(void)handleStatusBarTapWithEvent:(id)arg0 {
    NSLog(@"Hello world.");
    %orig;
}
%end
#

not that bad

tepid olive
#

how do python devs survive with that syntax androidskull

glacial matrix
#

it's valid python assuming you have the correct imports and the backing implementation

gentle grove
#

that isn't the syntax for type hinting in python though iirc

glacial matrix
gentle grove
#

Unless I'm misrrmrmbering

glacial matrix
#

you are

gentle grove
#

I know its like that in rust

#

xd

#

for the types

glacial matrix
#

you might be thinking of python 2 syntax

gentle grove
#

what was that like

#

well it didn't have type hinting actually

#

did it

#

isn't type hinting pretty new or something

#

I'm tired

tepid olive
#

i feel like it would confuse me

gentle grove
glacial matrix
#

py2

def handleStatusBarTapWithEvent(arg1):
    # type: (_id) -> None

py3

def handleStatusBarTapWithEvent(arg1: _id) -> None:
tepid olive
#

-> Never

gentle grove
#

just use consistent indentation

#

its not that hard

tepid olive
#

tabs or spaces bobs

indigo peak
gentle grove
#

spaces

tepid olive
#

boba

#

man

indigo peak
gentle grove
tepid olive
#

does python have generics

glacial matrix
#

I'm not sure how I'd define a ctor equivalent, unless it's another decorator

#

yes

gentle grove
#

it does??

tepid olive
#

huh

glacial matrix
#

yes??

indigo peak
#

@ctor

#

ez

glacial matrix
#

yup

gentle grove
#

I've never seen it before

glacial matrix
#

typing.Generic

gentle grove
#

what is it used for thougu

glacial matrix
#

ohboy

#

gimme a minute

gentle grove
#

in python

#

since its not statically typed

indigo peak
#

@glacial matrix I can try to write a converter from python to logos

#

It just won’t have any syntax checks 🗿

glacial matrix
#

you can certainly try

indigo peak
#

will it be good

#

no

#

Will it be funny

#

Most certainly

queen thicket
glacial matrix
#

@gentle grove you do something like this

class BaseClass(Generic[T]):
    something: ClassVar[T]

class MyStringClass(BaseClass[str]):
    pass

class MyIntClass(BaseClass[int]):
    pass

s = MyStringClass("S")
i = MyIntClass(4)

and mypy verifies that the types are correct

gentle grove
#

what's the something: ClassVar[T]

glacial matrix
#

I might have used it wrong (by using ClassVar) but the idea is to link the "T" in "Generic[T]" from "BaseClass" to be the type you pass in the subclass

queen thicket
#

what the hell is that

gentle grove
#

hm

#

I dontninderstand

glacial matrix
#

such that MyStringClass's "something" is a string while MyIntClass's "something" is an int

indigo peak
glacial matrix
#

have you seen typing.List?

queen thicket
#

well I know its python

indigo peak
#

then why did you ask

queen thicket
#

cause it looks weird

glacial matrix
gentle grove
#

what foes that do

indigo peak
#

initializes a integer list with contents of 1 2 and 3 id assume

gentle grove
#

yeah but

glacial matrix
#

plus its explicit type

gentle grove
#

is that the same as without : List[int]

glacial matrix
#

I could also do my_other_list: List[str] = ["1", "2", "3"]

glacial matrix
gentle grove
glacial matrix
#

you dumb

gentle grove
#

does it give a warning or anything

glacial matrix
#

and mypy complains

gentle grove
#

what's mypy

#

is that a separate thing

indigo peak
#

@glacial matrix so can you instantiate a var like in C int someVar; in python by doing someVar: int

glacial matrix
#

the type checker

queen thicket
#

its a type hinter

gentle grove
#

is it included in python

queen thicket
#

but its so ugly

glacial matrix
#

type checker, not hinter

queen thicket
#

check*

#

yea

gentle grove
#

or do you have to run it separately

glacial matrix
#

pip install mypy

#

then mypy

gentle grove
#

that's kind of dumb

queen thicket
#

wat

#

whats dumb

glacial matrix
#

python is still a dynamic language but they have been doing some work towards some "static" typing

gentle grove
#

true

glacial matrix
#

since py3

#

it just gives some guarantees about what functions can take as arguments and give as return values

#

it's taken for granted in C & family and swift

#

well, to some degree I guess, given those type confusion parts in exploits

indigo peak
#

seriously

#

wtf

#

so i dont need to assign it a val

#

i can just do someVar: int and now its declared

gentle grove
#

wtf

#

That's cursed

glacial matrix
#

it's not gonna do much though, until you do assign it a value

#

if you don't, it'll error out when you use it because it's not instantiated

#

one usage would be

some_var: int
if another_var:
    some_var = 1
else:
    some_var = 2
#

instead of the (uglier) alternative

if another_var:
    some_var: int = 1
else:
    some_var = 2
indigo peak
#

@glacial matrix how do you even start making a language converter

#

this shit's hard

glacial matrix
#

with a lot of work

indigo peak
#

what if i just hard coded all the cased tr

#
if re.compile("Group\([^,]*\)") in line:
    do_the_code()
glacial matrix
#

you'll regret using regexes

indigo peak
#

ive legit only made that

#

i cant figure anything else out 🗿

#

i also regret making a file called Tweak.py

glacial matrix
#

the way I'd start it would be to make a basic "hook" decorator that registers the string argument and the function it decorates, into a global registry

silver rampart
#

oh lord whays going on in here

indigo peak
#

i was just gonna check the syntax and add the logosified version into a string

indigo peak
glacial matrix
#

then in a

if __name__ == "__main__":
    hook.print_registry()

you print the data you collected

silver rampart
#

you wouldn't be the first

indigo peak
#

im just trying to make basic hooks

#

idk how this will even go

glacial matrix
#

I'm trying to not reimplement llvm's AST generator for logos.py

indigo peak
#

is logos just py logos but not perl

#

or whatever cursed lanuage it uses

silver rampart
#

ideally it'll have some better logos language support features which logos.pl isn't as capable of

glacial matrix
#

ideally

#

;_;

indigo peak
#

ideally

#

you see

#

ideally can be used to stretch the reality

#

concord is a jailbreak tweak to theme discord ideally going to release before 2022

silver rampart
#

lord I just need to buckle down and learn language server protocol

indigo peak
#

and i havent even gotten good progress

silver rampart
#

it's been missing for too dang long

indigo peak
#

and its 1 and a half hours into 2022

#

i just watched a 10th grader pop open a champagne bottle on snapchat

#

i fell discgusting

silver rampart
#

heads up you need a space before any logos code starts

#

(even if there are no imports afaik)

glacial matrix
#

@indigo peak

import json
from collections import defaultdict
from typing import Callable

hooks = defaultdict(list)


def hook(class_name: str) -> Callable:

    def inner(func) -> Callable:
        func_name = func.__name__
        func_type = func.__annotations__

        global hooks
        hooks[class_name].append((func_name, func_type))

        return func

    return inner


@hook("SpringBoard")
def init() -> None:
    print("SB init")


@hook("SpringBoard")
def dealloc() -> None:
    print("SB dealloc")


if __name__ == "__main__":
    for key, values in hooks.items():
        print(key)
        for value in values:
            print("    ", json.dumps(value))
indigo peak
#

wha tth efuck am i looking at

#

also wha t the fuc is this

glacial matrix
#

python

indigo peak
#

why ownt the uotpit

#

be

#

reconized

silver rampart
#

referencing a global in a different context

indigo peak
#

global fic

silver rampart
#
global output
output += ...
indigo peak
#

ed

#

yah

glacial matrix
indigo peak
indigo peak
#

i legit

#

still dont kkow

#

what im looking

#

at

glacial matrix
#

it lists the hooked classes and their prototypes (in python code)

indigo peak
#
# code = """you cursed python tweak here"""

code = """
a_group = Group("A")

@a_group.hook(SBStatusBarManager)
def handleStatusBarTapWithEvent(arg1: _id) -> None:
    print("Hello world.")
    self.orig()

a_group.init()
"""
depth = 0

groupList = []
hookList = []

output = """"""

def fuckCtor():
    global output
    output += "%end\n%end\n"
    output += f"""
%ctor {{
    %init({",".join(groupList)});
}}
    """

lines = code.split('\n')



for line in lines:
    depth += 1
    line = line.strip()
    if "Group(" in line:
        stat = line.split(" ")

        name = stat[0]
        output += f"%group {name}\n"
        groupList.append(name)
    for groupName in groupList:
        if f"@{groupName}.hook(" in line:
            hookName = line.split("(")[1][:-1]
            output += f"%hook {hookName}\n"
            hookList.append(hookName)

    if depth == len(lines):
        fuckCtor()
    




print(output)
``` ![uhh](https://cdn.discordapp.com/emojis/696449618539708548.webp?size=128 "uhh")
#

just another

#

cirsed project

#

i decied to d

#

o

glacial matrix
#

yeah no

silver rampart
#

real quick intermission

indigo peak
#

:D

silver rampart
#

what are you coding this in

indigo peak
#

i think python?

#

tbhj idk anymmore

silver rampart
#

what ide/context

glacial matrix
#

editor?

indigo peak
#

vscod

#

e

silver rampart
#

sec

silver rampart
indigo peak
#

is that what you needed to see workig

silver rampart
#

pog it works

#

click the python3 notebook button

indigo peak
#

ye

silver rampart
#

not sure if you're familiar with these but

#

shove in code blocks and hit shift+enter to execute them

indigo peak
#

i cee

silver rampart
#

also have objc/c kernels set up for the rare instances those are helpful

indigo peak
#

tweaks in da web browswe

silver rampart
#

half the time i just use them to print out enum header values lol

indigo peak
silver rampart
#

its a pretty powerful machine but dont do anything too crazy for a long period of time lol

#

this should make it a lot easier to write the logos thing you're trying to write

indigo peak
#

prob better thn my machene

silver rampart
#

since you wont have to constantly be switching between vscode writing context and executing and all that

indigo peak
#

ty

#

it wil take some getting used to

#

never used jypitier

#

befoer

silver rampart
#

love it

#

its how i prototype a lot of my stupid shit before moving it to an actual IDE

indigo peak
#

ive always used

#

ide

#

so

#

this is werd

glacial matrix
indigo peak
#

brooooo

#

i was doing %orig rn

#

:c

#

with params

#

so like

#

%orig(0, 0);

glacial matrix
#

I didn't do the body part

indigo peak
#

you got a bit more done that i did

glacial matrix
#

I already have my fair share to deal with regarding code parsing so I'll leave that to you ;P

#

and it's 4:16 here

indigo peak
#

02:16 here :|

#

this is how i live spending the new year

#

new year, new struggles

#

:D

glacial matrix
#

yay?

#

I fear I have to implement the C/C++/Objc token->AST parser myself, or at least some high level of it ;_;

indigo peak
#

is the actual code in the def ...: actually running

#

or am i dumb

#

probably not

#

right

glacial matrix
#

it is not

indigo peak
#

frick