00:00
那接着的话呢,咱们看下一个啊,下一个这块呢,想给大家测的叫GD是吧,这个jad的话呢,它主要是用于这个叫反编译啊,指定的已加载的类的一个源码啊,这就这D它的一个作用来过来我们直接做这个测试啊。那这一题。比如呢,我们先测一下咱这个,呃,这个浪包下的这个string啊,浪包下这个string,好,你看这是我做一个回车。哎,停到这儿呢,是因为我们现在花的时间呢比较长啊,你看花了这个三秒多钟啊呃,因为呢,我们这个死string这个类呢,相对来说比较复杂一些啊,这样的话呢,它就通过这个反编译的方式呢,得到我们这个类的啊相关的这个。源码是吧,哎大家呢,就可以去查看了,哎,这是这样的一个情况啊,这样的一个情况,那你也可以呢,针对的是其中具体的某一个方法,比如说呢,是这个Java点哎long包下的。啊,这个死罪。哎,String,比如我们感兴的是这个,感兴趣的是这个to string方法,哎,你就这样查看一下,哎,这就相当于是这个to string是吧?啊也可以呢,比如我们换一个啊看一下这个叫a compare to啊这个方法,那这个参数的话呢,就不用写了。
01:08
那你看这里边就给我们列举出来了是吧?哎,这个叫compared to,哎这样的一个方法的一个源码,哎这呢就相当于对应的一个叫反编译的这样的一个功能啊,哎在这D,比如咱们刚才写的com.at硅谷点Java下的有一个叫picture,哎这样的一个类好回撤一下。哎,这呢,是不是就列出来这个类的相关的源码的一个情况是吧?哎,就这样子啊好,那这个的话呢,就是我们说的这个gad的一个情况,看过了啊,然后下一个的话呢,涉及到叫MC和re DeFine啊,这两个呢,一般呢,都是这个搭配的去使用啊,搭配去使用,嗯,什么意思呢?看一下MC的话呢,它涉及到使用这个memory啊,就是内存的一个编译器啊,能够将这个点Java文件呢去编译生成这个点class的自节码文件。啊,生成磁节码文件,那我生成自节码文件的目的是什么呢?对吧,像我们刚才那个jad呢,咱们有这个对应的一个内存中的一个自节码文件,咱还可以去看一看它这个源码是什么样子的,方便呢,我们去修改代码是吧?诶看看这个代码是不是这个这个写的有问题啊,直接呢在我们命令行中就可以看,那这个MC,我们把这个Java文件翻译成C码文件,目的是什么呢?呃,其实呢,我们通常会跟这个呢re,是做一个搭配使用。
02:21
比如说你生成这个码文件呢,我们可以去替换咱们现有GM当中已加载的这个类。啊,这叫read范啊,这个大家呢,也可以看一下我们文档里边建议呢,改成这个re,呃,Transform啊,替换啊,用它来去写啊,这个编译这个事儿其实也很简单,直接在MC后边就呃编译你对应的这个Java文件是不是就可以了。啊,这个简单演示一下就行啊,啊,比如说呢,我们这个MC啊,咱们在这个OPT下边呢,哎,之前大家看到有一个叫hello这样一个程序是吧。哎,Hello word.java啊直接呢,你这块可以执行,哎,就可以了,哎,它会相当于把我们这个文件的编译生成到这样一个路径下。啊,这样路径像啊,那如果我们当前这个进程当中有这个hello的话呢,咱们可以呢,诶对这个hello word相当于使用它做一个替换啊,比如说叫ready。
03:09
啊ready fun是吧,后边呢,你就直接呢,把我们这个路径呢,给他拿过来啊,我这儿呢做一个复制啊,在这做一个粘贴。哎,就可以了是吧,哎,就是如果呢,我们这个进程当中有这样的一个呃类的一个执行的话呢,我们就相当于做一个替换啊,当然这块你看说明的是没有找到啊,在进程当中没找到啊,因为咱内存中没有跑这个程序是吧?哎,是这样个原因啊,看这个即时呢,相当于去替换内存中执行的一个啊类啊这样一个情况。好,然后后边这个呢,叫做class loader啊,Class loader呢,顾名思义就是查看类的加载器啊,类的加载器,嗯,里边呢,也有相关的几个参数,来跑一下看看啊。嗯,当前的话呢,Class load一下。哎,一直行好,这时候的话呢,大家能看到咱们当前这个进程当中涉及到的一些是不是叫类的加载器啊,诶你看这里边都我们刻画出来了,说你这个加载器这个个数是多少个,哎,然后呢,他们加载了多少个的类,那这块呢,是不是都有展示是吧?哎,那关于这个class loader。
04:16
哎,大家也可以杠H,看看它这个支持我们填写什么样的这个参数是不是都有啊,好,那我们来演示一下啊,Class loader。哎,Class的,然后后边呢,我们比如说先写这个杠T。这个T的话呢,其实就是一个吹的意思,好我们回车。OK,这个大家呢,是不是一看这个结果就知道它相当于是不是以我们这个树形结构的方式展现了我们上面这样的几个类的加载器,它的一个继承数的一个关系啊。对吧,诶你看这个阿尔萨斯呢,这个是在淘宝的这个,呃,相当于这个包名下的啊,诶就是以寄承术的这样一个关系呢,去展示咱们上边呢,看到的这样的几个啊类的加载器啊,这是叫杠T的一个意思,好再来一个class loader。哎,再来一个杠L吧,哎,我们看这是什么意思啊,呃,写完它以后呢,你看这呢是我们这几个类的加载器,呃,这个L的话呢,呃,其实涉及到我们加载的是不是这些那类的这个实例是吧?啊,你加载哪些类的实例啊,相当于这块呢,主要是来查看这个实例的一个统计的一个信息的。
05:16
啊,一个统计的信息,好,嗯,还有什么呢?嗯,还有你看这个叫杠C是吧,这个杠C的话呢,涉及到这个class loader,它的一个后边还得有这个相关的一个参数的情况啊哈希值是吧?哎,我们看写一下啊,哎,Class loader。哎,这个我直接写个杠C,那这时候呢,它就报错了,需要一个Y6值是吧?嗯,这什么意思呢?就是你想看看具体的,比如哪一个这个类类的加载器啊,它的一个情况啊,比如我们这个啊,哎,这个extension class loader,它呢对应的这个哈希值,哎,我们把它呢这个复制一下,然后呢,Class load-C啊后边呢,我们把它呢粘过来。哎,这个时候我们回车那就可以了,哎,这呢就相当于能够列举出来咱们这个对应的这个哈西值的这个克拉的它的这个这的一个UR啊是吧,UR这样一个情况。
06:08
好,这个呢,就是我们来查看这个类啊,查看这个类的加载器,包括类中的方法这样的几个指令啊,咱们就说到这儿,哎,这里边呢,像这个dump没有演示啊,其他这几个呢,这个呃,Re transform,呃,Transform啊其实跟ready fund是一样的是吧?建议呢,大家用这个了行,然后呢,这几个命令呢,大家下来呢,也可以测试一下啊。
我来说两句