00:00
下边啊,咱们就来进行这个解读啊,那刚才呢,我们也提到了,说这个CLASS4解码文件的一个解构啊,哎一共是从上往下包含了这样一些项,那首先呢,第一项啊,这呢是一个无符号数表示的是用四个字节啊来存储的一个结构啊,这个结构呢叫做magic magic翻译过来呢,我们翻译成呢叫魔术,哎叫做魔术,魔术的主要作用呢,在这也有说明,就是识别,哎class文件格式,哎就是这样个意思,数量呢就一个,那对应呢,到我们这个Excel这里边来看的话呢,就是我们那这个每一个框呢,其实就是一个字节了,那四个字节,那就是我们这一部分啊这呢,我们比如说用一个黄色的来表示它呢,其实就是我们所谓的叫魔术啊,在这我们也可以写一下啊。哎,叫做魔术,那魔术呢,刚才也说到了,用它呢来识别咱们当前的资金码文件呢,就是一个class文件,那有同学呢,会会想这是不是多此一举啊,就是我们当前啊,你会看到这个文件呢,是一个点class结尾的,那自然而然的它就应该是一个词解码文件吧。
01:05
哎,其实呢,也不能这么说对吧,什么意思啊,你比如说我们这块呢,随便的,嗯,举个例子啊,咱这块明明创建的是一个Excel啊,里边呢,随便的大家去写一些这个数据啊,编辑一些数据。哎,这个我用英文的格式啊好。英文格式,那你编译这个数据呢,明显呢,它其实是一个Excel这样格式的文件,但是呢,如果你要是呃,简单的只是把它这个后缀啊,改写成了点class。啊,看似呢像是一个磁解码文件,但其实呢,它是一个非法的磁解码文件,对吧?啊,那这时候呢,我们说这个其实不能够被我们,呃这个类加载器所加载的,只有这样才行,那我们仅仅是通过这个后缀呢,来识别一个文件,是不是合规的资金码文件呢,是不太靠谱的啊,就是不安全啊,所以呢,我们这里边又引入了一个叫魔术的一个概念。啊,你看这里边写了使用魔术而不是扩展名来识别啊,主要呢,是基于安全方面的考虑啊,因为呢,文件扩展名呢,是可以随意改动的,那刚才我不就改动了吗。
02:10
是这意思吧,好,那我们要想表示当前我们这个文件哈,就是一个合规的资金码文件,这里边儿有一个格式验证啊,这个格式验证在我们后边类的加载时候呢,呃,也会说到这个验证的这个过程啊,那魔术的话呢,我们是用开头class文件四个字节来表示的啊,无符号的这个整数,它的这个内容信息啊,也就是说只要你是一个合法的司机码文件,它必须都是叫cay baby。诶,这个呢,大家应该一看也都能理解啊,叫咖啡宝贝啊,那张爱语言的话呢,我们说这个一开始,从他这个呃诞生起这个名字之初,就跟这个咖啡呢有不解之缘,对吧?这是印度尼西亚的叫爪哇岛生产咖啡,所以呢,我们在一说到扎拉的时候呢,通常都会有一个呃,这个咖啡上面是冒着这个热气是吧,就是这个咖啡的一个标识,所以呢,凡是我们看到说是呃这个自检码文件啊,只要是合规的,都应该是以咖啡baby呢开头的。
03:06
啊,这个我都不用过多的再去举这些例子了啊,随便大家呢,你找一个嗯,自解码文件啊,比如说这个散点class ctrl c一下,我们把它呢放在这个桌面上,那再把它呢,大家使用这个no PA加加呢打开。啊,是用我们这个插件呢,做一个解析,你看发现它都是以咖啡baby开头的。啊,是这样的一个意思,OK,这呢,就是我们所谓的这样的一个识别,OK啊呃,那么这个事儿的话呢,其实针对于其他格式的文件呢,也都有举个例子啊,比如说。我这块呢,随意的做一个截图,把它保存下来,是一个PNG格式的。啊,这个这个图片了是吧,那我再选一个,比如说比较亮的一个当前这个界面吧,我也做一个截图保存一下,放到我们这个桌面上。可以了,那么这两个图片,你看这两个PNG格式的这个图片对吧,那我们把这个PNG格式的图片呢,咱们也使用这个pad加加呢,去打开一下,那你也使用这个插件呢,做一个呃,解析这是一个啊,然后还有我们这个。
04:08
嗯,使用它打开。来解析是吧,呃,然后这时候呢,大家你把这个比如说第一行啊,前两行吧,这个数据呢,咱们也给大家盯一下,然后做一个对比,大家你会发现呢,我们这个图片格式呢,其实它开头的这些数据,你看发现它也都是一样子的,对吧?哎,那同样的这个事儿呢,还应用于比如说大家像针对于这个MP3格式的,举个例子啊。嗯,比如我这块呢,这个音乐格式catch,嗯在这儿吧,嗯,Song是吧,这呢我就简单说一下啊,像这都是IP3啊,当然呢,你比如把这个IP3呢,你使用这个派加加你打开。啊,那咱们再随便的选一个啊,English mp3是吧。来钟才将家打开。好,然后呢,大家你去比对一下啊,开头的这样的一些这个数据。
05:01
你看哎,49443303啊这块看是基本上也一样,后边就开始不一样了,哎,它其实呢,也有类似于像我们Java这个叫魔术的一个概念啊,就是进行一个校验啊,只要是合规的自己码文件,全都是以KA baby这样一个魔术开始的。这个呢,就是我们说的这个基本的这个概念啊,非常简单,只要呢,不是这样子的,它就会报错是吧,你看这里边写到它就会报错啊,这个错误信息呢,咱们也可以演示一下,比如说我这块呢,随便选一个Java的,哎,就比如就以DEMO为例吧,把它呢,我CTRLC一下。嗯,这样的话呢,我把它放在咱们的一个文件位置啊,比如说我就放在这儿吧。开放,这然后呢,我把它呢,改个名,就把它改成了叫a class结尾的。看似呢,它是一个资金转文件,但其实呢是不合规的,对吧,那我们在这里边呢,诶输入一个CMD。哎,然后Java,哎,DEMO,嗯,咱们要解释运行嘛,自己码文件哈,一回车大家会发现呢,这时候呢,就给我们报错了,那这个错误信息呢,信息呢,你看这里边写的呃叫做class form error啊说不是一个呃适合的一个magic value就是一个模数,你这是这个数,这是不对的。
06:10
OK,就相当于我们这个啊文件你试图呢,用no派加加呢去打开啊,这个都不用去还原了,开头呢这叫package,它也不是这个CA baby是吧,所以就不对。那就这样一个道理啊,这个事儿其实比较简单啊,这个大家能够理解,这个魔术啊,识别是一个合格的资金码文件啊,进行一个校验就可以了。
我来说两句