George
George

Reputation: 1283

Assembly code to system functions (iPhone)

possibly a really dumb question, but could someone explain why one could not write assembly code to trigger system functions or control hardware? For example, would it not be possible to write code to switch screen off/on or even the device's phone?

I am not talking about jailbreaking the device, nor making an app for the app store. Normal app with assembly to call system functions.

If indeed possible, anyone have a good reference or starting point of achieve such tasks?

Thanks

Upvotes: 0

Views: 174

Answers (2)

Variable Length Coder
Variable Length Coder

Reputation: 8116

iPhones use a memory-protected operating system in which each user process is contained in its own virtual memory address space. The address space is protected by the memory management unit (MMU) hardware and trying to access memory outside of regions given to the process by the OS will result in an exception. The OS reserves hardware memory ranges to itself and does not make it available to user processes. As such, it is not possible to directly interface to the hardware from a user process.

Upvotes: 2

Alexey Frunze
Alexey Frunze

Reputation: 62058

It is certainly possible to call system functions from assembly code. And what do you think a C or C++ application does? It does exactly that. C/C++ and assembly code all ultimately convert (at compile time) into machine code that the CPU executes.

I'm not sure where the guide would be for doing things like this, but you can certainly run a C program in a debugger and see how it calls various system functions or you can disassemble this program and read the disassembly without running the program in the debugger.

In any event, you will not get more control over the device from a program written in assembly than from a program written in C. The OS should restrict direct access to certain I/O devices and memory areas at the CPU level, where there's no distinction between assembly and C, it's all the same to the CPU, just a bunch of instructions in machine code.

Upvotes: 1

Related Questions