iPhone越狱大神都是怎么进行破解的?头文件包含的干货
看似原始的做法,却是相当高效的引用方式。
编程语言的头文件包含
- C/C++支持头文件包含。
- PHP还可将include语句置于条件语句中,include_once类似ObjC的#import可以保证不会重复包含。PHP还提供require包含指定文件,它和include的差异是前者出错时会停止执行,后者不会。
头文件包含的本质
- 文本插入。
- #include包含.h是最常见的用法,但不限于.h, 任何合法的文件都可以被包含。
头文件插入后的行号错误
- 用gcc -E选项预处理后的代码,可以看到形如# 5 "1.c"之类的插入行,它们在提示编译器把后面的代码行数看做是第五行。之所以存在是因为,头文件插入文本破坏了源代码的行号,编译器需要理清真实的行号。#line
作用类似。
不使用头文件的情形
- 头文件包含在一些破解和逆向可能有奇用,这是C/C++语言设计导致的。比如,早期iPhone越狱破解,虽然大家不知道苹果给的库的真实头文件,但通过逆向猜到了头文件的样子,可以写这样一段头文件声明,就可以使用库函数了。
- 一个更简单的例子,你不想用stdio.h其他的声明, 也可以写一个自己的头文件,只包含printf原型,即可使用printf.
若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。