00:00
好的,同学们,刚刚呢,我们讲了一下分析后的原理,然后呢,接下来呢,讲另外一个知识点,那么刚刚同学们提了几个问题,我觉得非常好,我接下来准备讲一下啊,第一个问题是这个同学说是通过LA找的函数吗?诶等下我就来给你讲一讲,其实就是通过字符串找的,知道吧,就是通过字符串找的,好等一下呢,我给你演示,这节课呢,我重点就讲这个好,然后呢,这里有同学就问了一个问题,交换后可以查到n rock的地址吗?当然可以啊,我们来看一下嘛,我来看一下啊,断点仍然断在这个reing这里,断点仍然断在这里,我们来看一下好不啊,大家一定要多提问好吗?题与课堂相关的啊,你提前我不会的怎么办?那我就好尴尬了,你知道吗?哈,OK啊,嗯。来看到先来到这里啊,先来到这里,我们来到这个地方之后呢,接下来我们现在呢,还是以密接。历史的一下啊,然后呢,这个地址我先找到,稍等一下啊,我把这个地址找到,找到之后呢,把它清空,然后呢,我们查看一下,加上。应该是。8018没错吧。
01:00
8018OK,好,然后呢,这个时候呢啊。李,什么杠S,我们直接看一下0S,这个时候01859DB074,好,这个时候是ns log个没毛病对不对,好注意看啊,这个地址是n log。注意看。这个DB074,这个是N,注意这个地址,然后呢,接下来我们先单步过掉,因为现在你去P我们的一个值谁呀,我们现在是不是有一个叫做麦啊,不是。呃,System啊,System刚才说哥,咱们是不是有这么一个指针呢?是的吧,咱们现在是不是有这么个这个指针,现在还是什么,还是零,看到了吗?这个指针还是零,接下来过掉啊不,不能过掉。单步走一个,走一个之后我再批。注意看。它的值变成什么?看到了吗?和刚刚这个地这个地址。啊。同学交换后还可以查找到ns log的地址吗?通过谁是不是就是通过我们之前绑定的那个C,什么ns log这个指针呢?你看现在这个指针是不是发挥其作用呢?它的地址是不是就是它了?
02:07
看明白了吗?看明白了敲一啊,看明白了吧,啊,就这么一个逻辑,所以说绑定的原因就是这个,知道吧,OK好吧。好OK啊,学到了就好啊,一定要学到,一定要积极思考啊,不思考肯定不行,接下来玩了啊,开始玩了啊,那么刚刚在这个地方Facebook hook这哥们很屌是吧?啊,可以改变这个系统的函数,然后呢,知道了它原来是这么变的,对不对?那么接下来我就想问了,哎,你给我传的是一个。是不是啊,同学们,你给我传的是一个ns log对吧?啊,你给我传的是一个,我怎么通过这个ns log。找到你的这个值呢,我告诉你,我现在不通过N斯洛格找,我先通过。我们的符号去找看着啊,我接下来给你把ns log这几个字符串找到好不好,有没有兴趣啊,我通过我现在因为我已经很快就能找到这个符号的地址了,对不对,我通过这个符号,我在这个文件里面找到n s logg这几个字符有没有问题。
03:12
在我们的ma文件里面去找二进制里面有没有问题。没问题,敲个一嘛,想找一下敲个一嘛,好不好是吧,好不好。不求一很没面子的,是因为延迟,我相信好OK,好,看到了一个一好,那么接下来注意看啊。我们来看一下。看这里啊,接下来我告诉大家怎么找好吧,它其实原理就是通过ma o不断的去找的,所以说ma o这个东西重要吗?非常重要,知道吗?非常重要,首先我们来看到这里啊,NS多少个这个指针,我们知道它的偏移地址。对不对,我们知道它偏移意子,那注意这个只能在哪里呢?在一个叫做lazy symbol一个表里面,注意它是什么呢?它是我们的一个符号表,那么既然是表注意听好了,那么对应着它就有一个对应关系,它在这个表的第几个。
04:04
是不是第一个注意咱们的什么free是第几个,一二三四五六七八九十十一第11个对不对,好,那接下来。老师,这个对应关系有用吗?当然有用,接下来给大家介绍第二个表。哪里?呃,Dynamic symbol,看到吗?这里有一个symbol table,这个就是真正的表了,这里有一个indirect symbols indirect symbols,注意我们刚刚是找的第一个是n log,对不对?那么在这个表里面第一个注意看是谁ns log。第11个是谁,一二三四五六七八九十诶。呃,11。Free。是不是符对应的,它们是对应关系,和刚刚这个表类表里面是对应的,知道吗?你是第几个到这里就是第几个,所以说在这个indirect symbols里面,第一个就是NX log,我为什么跟你讲这个表呢?因为通过那个表找到这个表,那么这个表里面就有了数据,有了什么呢?有了这个data,注意这个是我们又一个关键的数据了,那么这个data塔注意看里面是不是有值。
05:11
这个data塔保存的是什么值呢?又是下一个表的index值,注意啊,它是另外一个表的什么值呢?另外一个一个表可以看作为一个数组,是另外一个表的角标,注意这个是十十六进制7A,接下来打开咱们的计算器。是不是多少。7A。实进制122对不对,这个122是什么呢?就是另外一个表的第122个数据,所以说通过这个表里面的贝塔值找到另外一个表里面的122个数据在哪里呢?在一个符号表里面,在申报推S里面,注意在申报推S面有个申bos,在这个表里面就是我们真正的符号表,在这个表里面的第122个,注意这里有一个什么,有标号123对吧,第122个标号往下走。
06:03
才八十一百一十,诶122看到吧,在这里第122个表,那么这个时候找到是不是N根根,注意看是不是的。是的吧,就这么找的,找到这张表里面的NS多个,好一步一步来的啊,那么在这个申报时,这个表里面有一个N多个,接下来我们又看什么呢?又看它的data塔,注意看它的数据,那么在这个data塔里面呢,注意看。在这个data里面有一个值叫做什么9B,这个9B是什么呢?这个9B啊,它就是属于咱们string table的一个index,什么意思呢?使均table的index刚刚是不是咱们的这个申bos这个表的index,这个表的一个角标是不是,那么接下来这个值呢,就是咱们的字符角标的字符表格的角标啊这个这个角标好,那么也就是说从table偏移一个0XB。
07:02
0X9B,好,那么接下来找到咱们的符号字符的这个这个这个表格,这个字符的表格是什么呢?就是咱们静态的数据,那么来到这里时均table,这里面全是厂支付产厂料。注意,这里面全是咱们的一些字符串的常量。我们用到的不重复的知道吗?存在内存里面的,好,那么接下来怎么找呢?我们先从这里注意从它的起始位置在哪里,是不是CF24啊OK,刚刚那个是什么,刚刚这个是。嗯,多少9B。9B啊,是的,9B,好,我们来到计算器啊,先来到16星车,先把它清零。呃,先是9B啊,9B加上什么呢?加上咱们的这个table里面的,从起始位置开始啊,从这里开始, Cf2是 Cf2是加9B等于多少。加上CF24等于多少?等于CFBF对吧?等于CFBF,那既然是CFBF,我们找一下呗,CFCFB4从B4开始啊,这里是B4吧,B5 B6 B7 B8 B9b abbbb CBD BB BF也就从这里开始。
08:17
这里值是多少?5F。5F4153R是二嘛,这对应的是什么?注意。从这里一个两个三个四个五个字符,那从这里开始倒数的12345,这个第一个是什么?下划线,下划线ns logg找到了没有?同学们看到了来朵鲜花。这就是在数据里面的NS多个。那么每一个字符它都是以下划线开始,以杠零结束,也就是点啊,每一个字符它们的风格就是下划线开始。点结束,明白了吧,下半开始点ns log就在这个地方看到了吗?啊,那么函数名称就在这里面,字符表里面呢,都是下文开始点结束,那么这个过程,哎,汉克老师你是怎么知道的呢?对不对?诶还记得我一开始跟大家介绍分析后的时候。
09:16
给大家看的一个这个图吗。啊,给大家看了一下这个图吗?一开始给你们看这个图,看这个东西是不是有点懵逼,接下来我们再看一下。接下来我们再看一下,看一下刚刚我找的这个过程和这个原理,官方的这个图是不是一样的,首先注意啊,我把它放大一点来,首先我们来看一下。首先在哪里,首先是不是在这个lazy symbol这个表格,注意它这个函数是第100061个,呃,1061个,通过lazy symbol哪个说白了吗?就哦这个PPT放放到那边,我把它放放放到PPT这边来好看一点。看到啊雷symbol不就是我们的这个吗?啊,通过懒加载嘛,对吧,懒加载的符号表是不是我说了NS是第一个,那么找我们的什么,找我们的这个symbols,找我们的这个,呃,这个呃,Indirect symbol是不是找这个表,它是一一对应的,然后看这个图,他是第1061个,接下来找找谁找咱们的indirect symbol table是不是找这个也是第1061个,看明白了吗?他们是一一对应的关系,然后接下来取它的值,取它的值进行相加,不就是取这个值吗?取这个值。
10:28
这个贝塔值是不是在这个in里面取一个贝塔值,取data塔值加上谁啊,取data塔值加上谁,加上咱们的一个偏移地址,谁的偏移地址咱们的申boss啊,不是不是偏移地址,就是这哥们就是翻换算成十进制,就找到咱们申bos的什么,找到申boss的这个角标了,对吧?好,那么这个我们刚刚是这么找的,对不对,来到122。不就找到吗?对吧,122好,那他这里也是一样的,他把这个16343就是它的角标,然后呢,找找谁找这个symbol table找到它,找到它之后,接下来在这个里面是不是有一个。
11:06
Data值,这个data值就是咱们string table的一个偏移值,然后呢,通过它找到咱们string table的一个偏移值,看到了吗?这不是使string table里面的偏移值,它找的是谁?找的是系统的close函数,我找的是谁?我找的是系统的n s log函数,看明白了吗?就是这幅图。看到了吗?就是四个表,那么其实咱们系统里面它是从下往上走的,而我们的代码要找是从上往下走的,你只要了解这几个表,然后呢,通过这几个表里面去找,去搜索,去索引,就能找到这个符号,明白了,同学,咱们来朵鲜花知道吗?整个过程就是这么简单。法,整个过程就这么简单,好吧,明白的同学带都笑话。那么在这里面呢,大家可以看到一个非常重要的知识点。其实大家可以看到一个非常重要的知识点叫什么呢?叫做ma o文件。其实啊。我们如果说要去了解咱们的底层,我们一定要了解的一个东西就是咱们的麦克,为什么呢?因为你一定要了解咱们的可执行文件,你才知道咱们的代码,它底层装在哪里加载的。
12:10
这个流程是怎样加载的,原理又是怎样?明白了吧,是吧。这个你你这样,你如果说有什么需要了解的知识点,或者说这个课题,你可以加我们的194个零。六三诶。九九。三幺小燕子老师好不好,然后呢,你也可以关注我们的公众号,然后呢,这个提交到我们的公众号的后台好吧。OK吧?可以提交你想要学习的一些知识点好不好,然后呢,我们也根据同学们的反馈,然后呢,来。这个在公开课上进行分享。呃,底层是不是有不断的改变,麦克文件和加载,呃,它不叫做不断的改变啊,它其实麦克欧文件里面呢,有些东西是可以改变的,那么我跟大家讲一下,为什么要一定要非常了解咱们的骂欧。
13:06
比如说咱们今后要做到一些高级的防护的时候,注意听好了啊,咱们要做一些高级的防护的时候,比方说我们检测我们的这个。呃,这个APP有没有被别人给修改,有没有被别人给注入,有没有在某个破解的环境当中,那么我们就需要不断的去检测什么呢?检测咱们的man欧文件的,我们要去检测我们慢文件里面的一些字段的,然后呢,有看这些字段有没有被修改,如果被修改说明什么说明。你已经被。怎么破坏了?说明你这个APP已经被破了,所以说在你修改的时候,如果检测到是被破坏的状态,那你有些功能就不能打开,比如说微信。它在什么呢?微信这个APP它在越狱环境当中,如果你是越狱手机安装了微信,那么它的指纹支付以及扫脸支付它是会干掉的,为了保证用户的支付安全,他是会把它干掉的。
14:05
所以说当你的APP要想做这些定向的防护的时候,那么你就要了解这个。底层的原理,然后你才能对症下药,明白了吧,那么慢工文件呢,是一个重点啊,慢工文件一定一定是一个重点,那么苹果提供了相应的API,咱们呢,也可以去这个学习,对吧,也可以去学习对不对,OK。那么讲到其实我们要说要说要去了解防护,那么其实你先要了解的是什么呢?进攻知道吧,你要了解的是进攻,你要了解的是攻击的手段,否则的话,你怎么知道别人怎么怎么攻击你,你不知道你怎么防住呢,对不对啊,不知道你就不知道怎么防了,知道吧,好吧,嗯,好,那么这是刚刚关于这个飞后啊,然后呢,接下来的话呢,最后面就就通过符号查找了麦克,好,那么呢,这是。其实已经到了09:34了,已经拖堂了,好吧,那么这是刚刚所讲的一些内容,我把这个视频保存一下。
我来说两句