Name: ios-codingchallenge
Owner: Sauce Labs
Description: Coding Challenge for iOS Reverse Engineering
Created: 2018-01-30 09:46:29.0
Updated: 2018-01-30 09:46:29.0
Pushed: 2018-01-30 16:33:59.0
Homepage: null
Size: 3420
Language: null
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Coding Challenge for iOS Reverse Engineering
Welcome to the awesome Sauce Labs coding challenge for the iOS Developer position for the Real Device Cloud team. This challenge is supposed to check if you can adapt to new situations quickly and solve tricky problems like we do on a daily basis :-) The challenge might seem like a lot to do in only two hours and that is intentional. Do not worry if you cannot manage to complete all of the tasks, we do not expect you to!
The next section provides suggestions for tools that will enable you to solve the challenge. Although, if you chose a different approach and/or different tools that is absolutely fine! Reverse Engineering is all about trying different approaches and we like to be surprised :-)
Solid ObjectiveC coding skills
A Macintosh running OS X
An installation of Java 8 on your Mac
A clone of this repository
Make sure you have a good Hex Editor, I recommend iHex (https://itunes.apple.com/us/app/ihex-hex-editor/id909566003?mt=12) which is available for free in the Mac AppStore. Of course feel free to use your own favorite editor.
You will most likely need a decent disassembler for this challenge. I recommend https://www.hopperapp.com/ . The free trial will be enough for this challenge.
please run mkdir /private/tmp/codingchallenge
and touch /private/tmp/codingchallenge/1337unixdomainsocket.sock
in a console window to set up the file for a unix domain socket
run java -jar 1337server.jar
the server should welcome you with a message in the commandline telling you that it is listening for connections. It is okay to restart the server if you should need to do so.
Please read the tasks carefully and then you are good to go! The time you have is limited to a maximum of two hours. If you manage to solve all the tasks before that, congratulations! If you cannot complete all of the tasks in time, don't worry as this challenge is about how you solve problems and how you prioritize rather than solving every last bit.
The situation is tough, Apple has a great server solution, the 1337-Server, for controlling iOS devices but sadly they use the proprietary LeetProtocol. The protocol is closed source and there is no documentation for it. Therefore the only way to create the functionality we need so desperately is to reverse engineer the protocol. We put our faith in your skills to do it! Solve as many tasks as you can in two hours.
/private/tmp/codingchallenge/1337unixdomainsocket.sock
which means that your client will need to connect to that socket.