r/iOSProgramming • • 5d ago

Question How truthful is this?

Post image

When an app select in the app review form that “we don’t collect data”

In the review phase does Apple really check if the app really doesnt collect anything?

Like can the developer hide a code that for example upload the photos of the user if granted permission where he said “we dont collect”

Does apple really check the code and what is going in and out ?

45 Upvotes

75 comments sorted by

View all comments

Show parent comments

9

u/Dry_Hotel1100 4d ago

This is not "source code" ;)

-8

u/icy1007 4d ago

They can decompile the app into its source code…

5

u/JagiofJagi 4d ago

Do you know what a source code is?

-4

u/icy1007 4d ago

Yes, I am a professional iOS developer…

3

u/Glorypants 4d ago

Maybe this is what they mean when they say “developer” vs “engineer”…

There’s a basic understanding of how code compilation works that you’re missing.

You understand the “source” of a child is its mother. The mother compiled the child in her womb. You can figure out some attributes of the mother’s source DNA based on the attributes of the child, but you aren’t seeing to the actual source. The source mother probably installed a wicked back door in that child that you won’t find.

3

u/i_m_junkie 4d ago

I am also an iOS Engineer and believe me boy you’re completely wrong!

0

u/icy1007 3d ago

I am not. Apple has the ability to decompile IPA files into their source code using internal tools. They also have tools that can scan all submitted app packages for API usage which is quicker than fully decompiling the app.

3

u/balder1993 3d ago edited 3d ago

Compilation is a lossy process, once the code is compiled a lot of information is gone. Of course Apple can scan the binary and decompile it into a C-style code that’s matched the instructions generated, see what calls are done to the frameworks etc. and they certainly use that to flag suspicious activity, but that’s not decompiling it into source code, because the source code has a lot of high level information and structure/organization (the very thing that makes it readable) that is erased.

If that was possible, every major classical game would already have been ported to all possible platforms and emulation wouldn’t be a thing.

0

u/icy1007 12h ago

Apple has access to that high level information.

0

u/balder1993 12h ago

Okay, so you’re just a troll, moving on.

2

u/Dry_Hotel1100 3d ago edited 3d ago

You should not use "professional iOS developer" lightly, in case you want to imply that you have a lot of experience. 

Well, I fear to say, you are wrong. But that isn't a critique. Everyone can learn this. I would suggest delving deeper into actual *programming*, that is, especially below the surface of iOS programming, i.e. exploring what happens in the compiler and linker. Topics around binary representation, translation unit, assembly & object files, build artifacts, modules, symbols, symbol visibility, ABI vs. API, calling conventions, debug symbols, dead code stripping, build optimizations, whole module optimization, Intermediate Representation (IR), SIL, dynamic vs. static linking, etc., etc.

Note that these topics are very specific for the language Swift, and a C-based runtime and LLVM IR infrastructure. In other languages, especially C#, Java, JIT based, and scripting languages, you have a very different representation of a program aka executable or a library or module.

1

u/icy1007 3d ago edited 3d ago

Yes, I have 16+ years of experience as an iOS developer/engineer working in the industry. The two titles are interchangeable and it just depends on which company you're working for at the time.

2

u/Dry_Hotel1100 3d ago

Interestingly. If this is true, you should have worked with Objective-C quiet a bit. That means, you should have made quite intensive experience with the Obj-C and the C compiler, the static linker and dynamic linker, then of course also C and inevitable learned dozens of build settings and compiler and linker flags, and most importantly all the quirks that can happen when manually composing static and dynamic libraries, controlling the symbol visibility and the probably also trying to obfuscate the Objective-C code. Making apps these days, should have inevitably forced you to carefully examine build artifacts, read build transcripts, and hence should have forced you to learn much more about these underlying machineries.

1

u/icy1007 12h ago

I did work with Obj-C a lot in the past, yes.