Microsoft Word - iOSAppReverseEngineering.docx

(Romina) #1

Chapter 5 Objective-C related iOS reverse engineering  


In previous chapters we have already introduced the fundamental knowledge and tool


usage in iOS reverse engineering. Now, you should be able to satisfy your curiosity by playing


with private methods and develop some mini tweaks. However, since you’ve come so far, I


believe you have a strong delving spirit and truly want to improve your programmatic ability. If


so, it’d be better for you to try something more challenging. Well, starting from this chapter,


iOS reverse engineering will enter polar night, and you’ll have to face the most arcane yet


magical hieroglyphics in the programming world. Take a deep breath first, and then ask


yourself, “Is iOS reverse engineering a right choice for me?” After finishing this chapter,


hopefully you will get the answer.


Next, we’ll meet the first advanced challenge in iOS reverse engineering: reading ARM


assembly. According to the previous chapters, you have already got the idea that Objective-C


code would become machine code after compiling, and then will be executed directly by CPU.


It is overwhelming work to read machine code let alone write them. However, it’s lucky that


there is assembly, which bridges Objective-C code with machine code. Even though the


readability of assembly is not as good as Objective-C, it’s much better than machine code. If you


can crash this hard nut, congratulations, you have the talents to be a reverse engineer.


Conversely, if you cannot, AppStore may suit you better.


6.1 Introduction to ARM assembly


ARM assembly is a brand new language to most iOS developers. If your major in college is


computer related, you may already have some impression about assembly. Actually, assembly is


too esoteric for most college students; we’re nervous and uncomfortable dealing with it. Is


assembly really too hard to learn? Yes, it’s obscure and difficult to understand. On the other


6

Free download pdf