The iOS Reverse Engineer's position is focused on the porting and maintenance of virtual iOS devices on our proprietary hypervisor. The role of our iOS Engineers encompasses a broad range of development processes writing a specification from requirements, participating in specification reviews, providing estimates, writing the code, performing unit tests, performing code reviews of other developers’ code, and working with testers.
Responsibilities:
- Conduct Code implementation, code reviews, debug, develop, and test of virtual iOS devices
- Work on custom peripherals or drivers
- Create and write high quality code; create and maintain working software
- Tune code for optimal resource utilization, reliability, performance and energy efficiency
- Architect and design new code
- Write and execute test cases based on templates and best practices
- Ensure that the latest versions of iOS are ported to work on our hypervisor
- Work with members of our hardware modeling team to ensure iOS-related hypervisor code works correctly
- Maintain and implement automated test environment and regression tests
- Collaborate with Product Managers, Development teams, Engineers and stakeholders to develop a strong understanding of the product requirements and product roadmaps
- Evaluate and validate embedded design alternatives to create optimum system designs
- Work closely with verification and validation (QA) team to ensure full test coverage, and quick closure of reported firmware defects
- Develop scalable solutions that adhere to performance specifications and align with customer needs
- Familiarity in technical writing and documentation
Requirements:
- Bachelor’s Degree in Computer Engineering/Computer science or equivalent experience
- Deep understanding of iOS architecture, system frameworks, and services
- Strong iOS reverse engineering skills
- Knowledge of ARMv7/ARMv8 (aarch32/64) instruction set
- Proficient in C, Objective-C (Swift, C++ are desirable)
- Experience with reverse engineering tools like IDA, Ghidra, Binary Ninja
- Expertise in iOS debugging tools and techniques, crash report and panic log analysis
- Familiarity with iOS SDK, IPC, IOKit (tweaks development is a plus)
- Ability to use LLDB, GDB, Frida
- Knowledge of at least one script programming language (shell, python, etc.)
- Experience with software version control using Git