Skip to content

MASTG-TECH-0065: Reverse Engineering iOS Apps

iOS reverse engineering is a mixed bag. On the one hand, apps programmed in Objective-C and Swift can be disassembled nicely. In Objective-C, object methods are called via dynamic function pointers called "selectors", which are resolved by name during runtime. The advantage of runtime name resolution is that the names must remain intact in the final binary, making the disassembly more readable. Unfortunately, this also means that the disassembler provides no direct cross-references between methods, making it challenging to construct a flow graph.

References

Tests

MASTG-TEST-0317: Broken Symmetric Encryption Modes MASTG-TEST-0313: References to APIs for Preventing Keyboard Caching of Text Fields MASTG-TEST-0321: Hardcoded HTTP URLs MASTG-TEST-0323: Uses of Low-Level Networking APIs for Cleartext Traffic