00:00
今天呢,咱们来讲什么东西呢,就今天咱们来讲这个开发一个类似于这个010艾特这么一个东西啊,就这个玩意啊,但是咱们因为今天就一小时时间啊,咱们肯定是不能讲的什么功能实现的比较完善,咱们简单的实现一个带有这个数的功能,最近打开文件,然后有这个16进制啊,这个浏览,然后能打开文件,能拖拽文件这样一个工具啊好,那么我们现在呢,直接来打开这个studio。好,然后我们新建一个项目啊,新建一个这个MFC的一个应用啊,就是这个东西呢,我们叫它什么呢?我想想啊。嗯,1010。对啊,点击确定。选择以这个基于对话框的形式啊,然后在静态库中使用MFC啊,接着下一步下一步。这个标题随便吧。
01:03
啊,点击下一步啊,然后下一步啊,接着完成。啊,然后呢,我们给它这个打开。右键啊,给它属性设置一下。把他的换尿裤关掉啊。行确定啊,然后我们先给它运行起来。啊,没什么问题啊,没什么问题呢,我们来到这个资源视图啊,打开,把它这个默认的主带打开。把上面东西呢,给它清空一下啊,然后把边框给它拉掉。嗯,拉大一点啊,然后呢,现在呢,给它拖两个空间上来,左边呢给它拉一个。
02:04
嗯,右边呢,给它拉一个这个list ctrl。右键属性啊,给他这个改一下。改一下显示模式,然后这个数也是数属性给他,把这个我看一下啊。嗯,有按钮的点成处,有线的点成处,然后这个线有root的点成处。嗯,其他应该是没什么了。啊,应该是没什么了,然后呢,给它们俩绑定变量,添加变量。I'm。添加变量。
03:04
好,然后呢,现在呢,我们右键属性啊,然后来到我们的学员数,在这个ON1的dialo里啊,进行代码编辑啊,给它添加额外的这个初始化代码,首先呢,我们给他在这个。我们这个头文件里啊,这个主带log的一个头文件里,给它声明一个一个这个类的一个变量啊,就是我们的。H item,然后是h root根节点。啊,拿到它这个名字啊,在这个初始化里啊,对它进行一个使用啊M点。Insert item好名字呢,就是最近。打开的文件,然后闹闹,然后它是一个根节点t root,然后显示模式T,这个last。
04:10
OK。呃,我们,呃,运行起来看一下。好,这个已经有了,有完之后呢,接下来呢,我们就给它来这个要拖拽来这东西和这个打开东西了,那我们现在呢,需要一个菜单在这个资源文件里啊,我们要给它添加一个菜单啊,啊然后添加。资源啊,添加一个这个菜单资源啊,点击新建。在这然后呢点击啊,然后呢,这个东西呢,我们在主窗口里啊,直接回到我们的主dialog里啊,然后直接在整个dialog上右键,然后属性,属性呢这儿有一个菜单项。在这啊,然后直接把刚才这个选中啊,这样呢,它就作为顶层菜单存在了啊,接着我们回来这边给它来这个添加,添加呢,我们首先呢,我们现在呢,只需要一个文件的这么一个功能啊文件啊,那这这就是什么,就是打开文件,我想想还需要什么东西吗?应该是。
05:18
应该是不需要了,我们现在只需要一个打开文件啊,然后呢是直接啊,给它右键添加事件处理方式啊,然后给它添加到我们的主带log上。接着呢,这,这是open。Dialog,点击确定。啊在这啊,我们要打开文件,那实际上呢,我们就是打开一个通用窗口啊,然后来获取一下它的这个,呃,我们打开之后的这个通用窗口的中间的一个这个路径啊,所以说呢,我们现在呢,就首先声明一个c dial。
06:03
睡不这处啊处要那。No it's ru?好。啊,不对。脑子不好使触啊,然后闹,然后是这个闹啊,然后是闹,然后是这个要打开的类型啊,比如说我们要打开的有这个E啊,然后EE星点EE,任何以ESE为结尾的这个东西,然后第二。呃,星点点也可以星点点结尾的,然后是奥啊奥呢就是以所星点星啊所有的,然后然后两个这个树干结束。
07:02
最后传入一个电子针。好,接着呢,我们给他进行弹出,弹出完事之后呢,我们给他接收一下啊,接收一下路径,谢S。H等于啊,这个c file dialo点内。好,获取完它的这个路径之后呢,那么接下来呢,我们就要给它进行一些这个处理之类的事情了,但是在我没有处理的情况下呢,我们在这儿啊,先给大家空余一下啊,这呢要插入数据,然后没有插入数据的情况下呢,我们先把它插入到我们最近打开过的文件里啊,就是H。Insert。
08:12
嗯。Isaiah。Kath,不是不是Z啊,这个CS gath,然后呢,在八份零好,然后接下来now now,然后它的副窗口h root,然后是这个显示模式TVI拉好,这样就行了。这个呢是打开菜单啊,那么我们一般情况下这种东西呢,它还有一个功能是什么呢?就是我们这样来看,打开010啊,然后呢,你直接给他进来。
09:02
比如说我们给他随便找个东西,我们拖一下啊,我们拖他自己吧,我们直接拖进来啊,你看它有这种拖拽功能,那我们来实现一下这个拖拽功能。这个东西你首先属性上面,你要把这个dialg啊,Di属性你要把它这个接收文件这个属性啊,给它设置成true啊,设置成true之后呢,现在呢,你右键啊类向导,然后类向导里呢,你要给它添加一个这个消息啊一个。一个这个接收这个拖拽文件的这么一个消息啊,点击添加处理程序应用确定。好,然后呢,我们给他添加完这个处理程序之后呢,那接下来我我在这个位置上呢,我要来这个接收一下他啊,那么首先呢,我是一个这个W,我是一个T叉吧T叉。
10:07
Int啊然后啊,不对,我们首先是这个dig queer,对,首先我们对它呢,进行一下查询啊,然后呢,查询的这个东西呢,首先是它参数消息参数带过来的,然后传一个负一,然后是一个闹,然后零。啊,F12啊,它这个东西。对,它会返回一个U啊,那我们回来。我们用一个U啊,来给它一个值啊。这个值呢,我们来判断它一下啊,它如果说这个东西啊,小于等于零啊,那就失败了啊,那我们就return,如果没有小于等于零的情况下呢,就说明我们可以正常查询,那么这种情况下呢,我们就再查他一次。
11:04
那这呢,它就不能这样查了,就不能用负一了啊,用这个N减负一啊,N减负一不是应该说就N减一啊,那我们刚才那个负一呢,它代表的是函数,它返回的文件的一个个数,N减一呢,它代表的是这个第N个文件啊,嗯,就是这个。然后下一个是存在哪存在str里。然后后边是它的一个长度content of s,不对啊,对str好,这样呢,我们获取完事之后呢,我们就已经拿到它的一个路径了啊,路径呢就存在str里,那么存完之后呢,我们跟刚才一样,我们也把它插入到这个里边,因为我们现在没有插入数据啊,没有这个正式的处理数据,所以我们直接先插一下再说啊,我们直接把它插进去。
12:07
啊,这样就可以了啊,那我们现在呢,先来给它运行一下,看一下我们的树好不好使了。首先我们打开一个文件啊,比如说我们在这个桌面上啊,我们打开一个程序。哎,他已经有了啊,有了这个路径了啊,那我们再拖进去一个。找一个什么东西,哎,这样啊,没有问题啊,那我们首先我们这个最近打开文件这个数的这么一个功能呢,我们就已经实现出来了,那么接下来呢,我们来实现一下这边16进制编辑器的一个具体功能,那这个具体功能呢,首先呢,我们就要给它来这个,嗯,插入它的一个头啊,那我们在这边啊,给他来声明这么一个函数啊,比如说我们一个avoid in it list title。
13:05
嗯,然后也不需要什么参数啊,我们直接给它创建出来。有事啊,那我们来看一下010艾特它这个绕型啊,那我们这样。你看这种的呢,它要有一个零到这个F的这么一个列啊,然后呢,这边也零到F啊,这边是阿斯克玛这边16进制,然后呢,这儿呢是有一个地址啊,从零开始啊,每一次跳十个,其实就是十十六十六个啊,它是16进制的十好,那我们现在呢,就来给他这个插入这个头啊,这个头呢,那要插的东西呢,就比较多了啊,首先呢,我们要给它设置一下它的这个呃属性啊list。例,我们也给他设置一下它的风格,它原有风格什么的无所谓了啊,我们先给他直接设置一下。
14:02
首先啊,这玩意儿它要有一个线,有要有网格线SGDS,然后呢,他要整行选中。好,这样呢就有风格了,有完风格之后呢,我们首先插入,插入的呢,有要空一个地址啊,那我们就给它要给它拆一下。第零个,然后给他空两块啊,然后零,然后给他80的一个宽。然后继续插入。
15:00
剩下的插入呢,就比较好弄了,那比如说我这插一个这个一啊,然后呢是这个。从零开始一直到F,它是重复的,然后呢,每个给他30差不多大小,刚好我们给他改一下啊,3456789。ABCDEF啊,那我们来改一下啊,这是123。四五六七八九十十一十二十三十四十五。0123456789。AECE。
16:02
16F好,然后这个OK之后呢,我们中间呢,要有一条竖线啊,这个竖线呢,我们就不去画它了,我们就直接以这种插入这种格式的形式给它插一个是七,然后呢,中间给它来一条竖线,因为这条竖线比较窄,所以说呢,我们给它15就行了,嗯,有15之后呢,那接下来呢,我们就插入剩下的啊,就阿克玛部分,这部分呢,是这个16进制部分啊,那底下呢是阿斯克码部分啊,没点关注点点关注啊,然后有需要课程之类的可以联系这个老板进行咨询啊,然后我们这边呢,就是什么呢,就是这个这个就不需要了啊,我们从一到从零到F再来一遍就行了,那这边是18开始,十八十九二十二十一二十二二十三二十四二十五二十六二十七二十八二十九。
17:03
三十三一三二三三啊就这样就OK了,那这边大小呢,我们给他统一修改一下啊,那这个二十三十有点大,我们给他一个20差不多OK了,好,那这个东西呢,我们现在呢,给它运行一下啊,不对,我们没有插入啊,我们等一下运行我们这个东西给它在这个ON1的the dialogue里啊,就要进行调用。在这儿啊进行调用,然后运行。可以看到啊,这样啊,但是这个我们框拉小了,你可以看到到六就没了,所以说呢,我们这个带大小需要调整。F刚刚好。和这差不多。
18:02
还长出这么一块去。嗯,差不多啊,这回差不多再往外拉一点点。然后呢,我们现在呢,就往里插数据啊,那插数据呢,我们要给它再声明出一个函数来啊,Word in it list data啊就这样我们因为我们刚才已经把头给化出来了,那现在呢,我们就给大家把这个16进制这个显示的功能,我们要给它显示出来了啊。
19:00
嗯,我们给它进行一个创建生命与定义,然后呢,因为我们这个东西呢,我们刚才只是获取一个路径,我们肯定要把它读进来啊,那我们这边呢,就肯定要给它存在一个这个八分在啊,那我们一个差星的一个SZ8UFF分等于NLPTR进来啊,那我们进来之后呢,因为我们这个东西呢,是要反复用的,所以说呢,我们进来之后呢,首先判断一下我们的这个啊是不是不等。如果说不等于的情况下呢,说明什么呢?说明我们这个东西已经初始化过一次了,那这个时候呢,你要把它清理掉,直接一个delete。啊,Delete完事之后呢,你也甭管他有没有这个说话,我直接不管3721直接给他一个delete奥啊把所有东西都清掉,反正呢,这个东西你有没有东西你清了它也不报错啊那就可以了,好,然后呢,接下来呢,我们要打开文件啊,然后嗯,我想想那不对,那咱们得加个参数,WX先ZS啊没有参数不行啊,补个大。
20:19
然后啊,我们在这儿,H等于。然后啊,把路径传进去,传进去之后呢,我们以读写的形式啊给它打开。嗯,不共享,然后。安全特性闹不填啊,然后我们这个东西呢,我们是打开啊,因为我们编辑这种东西它肯定存在,所以说呢,我们用一个open,然后呢,再有一个是这个文件属性啊,我们用一个普通文件属性可以了,就是默认的。
21:26
然后之后一个闹,再打开创建打开文件,打开文件之后呢,我们来获取一下它的尺寸啊d word啊w size。等于fire。H file,然后now获取文件文件的实际大小,获取完文件实际大小之后啊,我们用这个全这个类里边的双元变量啊,S在b new一个这个2DW size啊size这么大的一个内存空间出来,然后直接给它。
22:12
啊,算了,这样清吧, memory set l z buffer0dw file set啊,清空内存,清空完内存之后呢,我们接下来啊,要给它进行读取,那么or DW j的LNGTH实际上返回的读了多长?好,然后呢,Read file。H file在这儿读,然后呢,哎,这8UFF份啊,存在这个8UFF份里,然后呢,这个8UFF份啊读多长呢?File size这么长,然后实际上多长呢?返回到这个read里,然后呢,最后一个是闹好这就读出来了啊读出来之后呢,那么接下来呢,我们要给它进行一个这个,呃,就是显示啊,那这个显示呢,首先呢,我们这个东西我们要看一下,它每行是16个,无论是这三个还是这半个都是16个。
23:23
也就是说我们会符合十六个一行的这么一个标准啊,那我们现在呢,先给他计算一下,它一共会有多少行DWS。等于二,然后我们DW size。嗯,不对。哎。实际长度除以16,然后加上一个一,为了防止它最后一行不够啊,我们给它加出去一点啊,然后呢,接下来呢,我们就给它声明一个DW啊index啊,一个索引。
24:11
然后呢,我想想啊,要再给他一个行的一个索引啊,一会会用到啊,现在可能this content等于零,然后再给他来用,搞一个格式化用的这个西斯骏CS啊,V6等于啊,这个不于零,然后给它进行填充循环。那我们现在呢,就给它填充啊。这个呢,它的这个大小呢,最终呢,就是你有多少行就填充多少个这个轮回啊,因为内内层还有一个这个现在外层循环呢,就是整个大的这个循环,那那层呢,还有一个缝的一个,还有一个这个16个一次的一个循环啊,那在这个插之前呢,我们先把它的这个呃呃,先把它地址给它插上啊,那对啊,那是还需要用一个这样的变量啊,那就是CSV6。
25:09
点format啊,我们对它进行一个格式化,然后呢在里边格式化一个百分号08XH,然后呢是DW0CONTENT这个东西呢,我们在后边呢,给它在最后的时候要给它进行自增啊,但是现在呢,我们先不管它,我们要给它对它进行插入啊,就是用这个m list啊,然后点insert item DW index啊,这是index,然后呢接下来呢是插入的内容CSV6。然后之后100,呃,我们呃在这儿呢,给他开始插入剩下的那16个啊,那我们这个。这它的最大呢就是16啊,然后呢开始插入,插入呢,我们首先呢,在里边呢,要给它有一个这个U叉的,一个这个CC扣的等于。
26:14
啊,等于八分的I加C啊,这个呢,实际上就是在我们当前的这个I的这个位置上开始往后取什么,取一个字节,然后随着这个啊,Z的字增啊,从零取到十六一共取出16个字节,正好把这一排给它填满。好,然后呢,我们把它取出来之后呢,我们来判断一下啊,它这里边有一种特殊情况,就是说如果说你的这个扣的刚好等于零,那么它是有一个特殊处理的,就是它所有的零零都会被改变成点啊,但是这个点不是默认的啊,不是阿码,而是什么呢?而是这个010对它的一个改写,所以说如果它是零的情况下呢,我们就直接啊对它呢,进行一个格式化,把它干嘛呢?把它格式化成点。
27:06
那如果不是零的情况下呢,就是另一种情况,就给它把它格式化成实际上的一个字节啊,就直接一个这个格式化一个百分号C。然后一个code啊这样就行了,好,然后呢,我们对它呢,进行一个插入list啊,点set item。Test好,然后DW index啊,然后是这个C。对,插反了这个东西。啊,这个东西本身没问题啊,但我插的是后边的啊,那插后边的,那我这边呢,就得给他这个加C加上18啊,因为我这实际上就是在插这个阿码。
28:05
我想想啊,对。然后加上18CSV好,那一样的东西呢,我们再复制一份啊插前边,插前边呢,那这边呢就比较简单啊,这边就不需要分辨是不是零了啊,直接插啊,那这直接就是插I。嗯,那叉这边呢,它的格式化比较不一样啊,那我们要这样格式化,要给它,因为显示16进制嘛,我们要在这个位置上直接给它插一个02X啊,插一个02X啊,然后用这个扣的给它插进去,好,然后进行设置啊,然后设置到这个Z啊Z加一的地方上啊,这样就行了啊,给个V6啊,给它隔着画进去啊没有问题,这是16个,然后呢,这后边呢也是16个啊,然后这样一加啊给它判断一下,这边是@玛啊,那中间呢插一个17啊,那这个17呢,我们直接插就行啊,17呢是根竖线。
29:15
是这么个东西。好,这样呢,都插完之后呢,我们来之后呢,肯定要给他来一个这个自增啊,那首先呢,DW index我们这个行啊,每次都要自增加加,然后呢,我们的这个。这个总数呢,每次要给它加等于0S410啊,因为一行16个,它这个东西实际上自增的是这个地址啊,所以要加这这么多啊,然后后边呢,就是啊没什么了啊在最后我呢,我们要给它进行一下这个close handle啊H好之后啊return一个处。啊,好像没有返回值啊,那我们就不需要return了,就这样好,然后呢,这个东西呢,我们就在这个我们拖拽进来这个位置上插入数据这块啊给它调用一下,然后呢,我们把这个这个路径啊给它传进去,好同样的地方呢,我们在这个这边啊,刚才那是打开啊,这是拖拽啊在拖拽这儿啊也调用一遍。
30:31
我们把这个树的插入放到这个前边吧,那个有点慢。我们运行起来。我们拖个东西,拖个东西进来啊。诶。没有显示呢。
31:02
我看一下啊。在这儿啊,我们运行运行之后呢,我给它拖进去。进入首先呢,我这个路径是有的走。走。Okay。文件,这也有东西,然后获取size size有。读起来了。嗯,都是有值的。喂。啊,放错东西了啊,这个in袋最大的一个in袋,不是不是放in袋S啊,放那个LIS啊,这个可能射手复制的时候复制错了。
32:00
然后呢,我们再给他搞一下。我稍等他。嗯,这后边这个值应该是不太对啊。我。我看一下零零。啊,首先这个F看不见啊,我们还要再改一下这个界面。运行,然后这回F看得见了,然后它这个代码看起来有点怪啊,然后我们再来观察一下我们这个插入啊,有没有问题,首先呢,我们插入一下这个。
33:05
DW index,然后嗯,这应该是没问题,然后16。嗯,I加Z啊,然后格式化进去插入,然后Z加一,然后这个没问题啊,插入17,然后这边是继续获取,获取code等于零啊,然后判断是不是点,然后这边呢,给它进行一个插入。啊,那没有问题啊,那没有问题,那可能是他长得怪,那我们来再运行一下。在运行之前呢,我们首先呢,给它来对比一下啊,我们把这个货币进行史拖这里边来,然后呢,我们再拖入到我们自己这里边。嗯,内存不足。什么情况?
34:04
我们稍等他一下啊。嗯,这个画风看起来是不太对啊,那我们来对比一下这个东西。9030啊,然后FF00啊比。嗯。FF00。这块没错,第二行。啊,加加错了啊加错了,对这块加错了啊。他这个因为每次进16啊,所以说这呢要加等于这个16啊,所以说呢,我们刚才加加了啊,那这个东西就报错了。那我们再运行一遍。这个呢,我还是先把它拖到010里边。
35:01
然后我们方便进行对比。拖过来我操什么情况,为什么会内存不足呢?啊不对,我拖到010里头导致的应该是。啊,这回对了啊。啊,你看字符串什么的都显示的很正常啊,那这回就对了。嗯,再观察一下啊,应该是没有什么问题啊,但是呢,我们刚才也看到了啊,如果说我们这个实例进制编辑器呢,它这个文件小还好说,如果说这个大的情况下呢,它会有一个问题,我们比如说我们拖个这个玩意儿进来啊,你看它这个东西,你看它加载的会很慢,而我们又不知道它什么时候加载完搞的这个东西呢,就好像这个。卡死了一样啊,那既然这样呢,我们就再给它加一个进度条啊,就在这个dialog上边啊,我们这儿呢,先稍微给它往下拖那么一点点,然后呢,我们在这个工具箱里找个进度条。
36:10
然后给它摆上。嗯,搞细一点啊,搞细一点。掉头啊,然后。多余的部分收回去好,现在呢,给他右键啊,直接给他添加一个变量。完成。好,那这个东西呢,我们首先。我们在哪用呢,就在哪给它这个进行一个初始化就行啊,比如说我们现在呢,要干嘛呢?我们实际上就是在这个16进制显示的时候,要给它设置一下,那我们就在16进制显示的时候给它进行初始化就可以啊,就在这个位置上给它进行一个初始化,首先呢,我们在这儿计算完之后,我们直接在这给他初始化。
37:11
Set,我们给他先设置范围啊,第一是肯定是零啊,那这个多的呢,就是它的这个行数啊,加载到最后一行就下加载完了嘛,对吧,然后这个呢,就是它的一个范围,那接下来呢,就是它的一个这个显示的问题了啊,那我们就在最后给它进行一个显示,比如说在这个位置上啊设置,呃,不是设啊对,是设置一下啊,设置一下它的当前位置,然后呢,设置成I。啊,这样呢,它就随着进度跑了啊,那比如说我们现在再来运行。我给他搞个大的过来啊,脱罪。你看它底下现在这个绿色的这个进度条啊,就在跟着这个进度跑。再走。
38:04
我们看啊,他一直在走啊,这种大的,你这有个进度条呢,他心里呢就比较不慌啊,大概知道他什么时候会结束,而不是说一直去等着他。呃,学习Windows逆向,基本上现在主流方向呢,就是去搞一些这个工具链啊,或者说红队啊的一个工具开发之类的,然后就是漏洞,呃,写个P啊,去搞个漏洞分析报告啊什么的啊,然后再有呢,就是那种比较端的,就去搞那些这个PT啊什么的啊,这是主流方向啊,搞Windows的现在呢,做的东西呢,就没有没有必要去搞一些太低端的东西,像原来的病毒分析什么的,这也没有什么太大必要了啊,你要做呢,就做一些这个现在方向比较好的地方的东西。好,那这个工具呢,它就已经OK了啊,那比如说因为我们这边的实际上做了个这玩意儿啊,那你现在放在这儿没什么用呢,他也不太好,那我们就给它来加一个菜单。
39:08
啊,让它能重复打开啊,那比如说我现在呢,在我的资源视图里啊,我再给他插一个这个菜单。嗯,那这个菜单呢,我们右键这是一个右键菜单。啊,比如说右键菜单俩功能啊,一个打开一个删除。好,然后呢,我们现在呢,就给它来这个添加。添加事件处理啊,然后还是在我们的主带log里。我。嗯。确定。然后回来再添加一个。
40:00
类no啊确定,然后呢,我们现在呢,还要给他能弹出这个菜单嘛,那在这个数控件上边,我们啊,这个数控件拉太长了啊,数控件给它收一收。好,这个给他添加这个什么呢?添加这个类向导啊,用类向导添加吧,然后在上面找一个右键点击。这个。点击右键,然后添加处理程序。家里菜单确定应用确定啊,然后我们在这啊,把它这个菜单弹出来,首先呢,我们获取一下当前的一个位置啊,鼠标点击这个位置。
41:00
然后菜单。手办头胆大,从是碰炮仗呢,我。给他首先丢一个这个实力句柄。应该是M开头的,好,然后实力去表完了之后呢,就给他这个,呃,麦克in处理一下资源ID复制一下填进来,好,这就加载了它的第一个菜单,然后呢,因为我们是要拿它的子菜单当做右键菜单,所以说呢,我们现在呢,要再取一下sub,等于get sub menu。
42:18
好,然后呢,就给它进行一个弹出pop up。Ttm啊c Lin居中居中弹出啊,然后位置呢是pt.X啊,就是鼠标点击那个位置的X,然后pt.Y啊,然后呢给他。保留字段填个零啊,接着是副窗口句柄。就是闹好右键。
43:06
嗯,可以了,然后呢,我们接下来。在这边啊,如果你是这个打开文件的话,那我们首先呢,要获取一下当前选择的这个节点。等于M税点get获取当前选择,获取完当前选择之后呢,我们获取一下它的这个字字符串。获取完字符串之后呢,我们就开始直接啊,继续调用我们的这个插入这个函数就行了。
44:09
重新给它调用一遍,一遍就相当于这样盖八份,好这就是打开啊,那打开之外呢,还有一个删除,那删除呢,也是要获取一下这个当前的节点,但是这个更简单一点啊,获取完当前节点之后,你就直接调用这个trade的这个delete啊删删除这个节点的这个方法就行了,那啊一删除OK,好,那现在呢,我们运行。首先呢,我们给它拖一个进去啊,打开啊,然后再给它拖一个进去。打开。啊,这有两个了嘛,那比如说我现在呢,我想重新打开这个代码的注入器啊,那我就先选中它,然后右键菜单打开,诶你看它就重新加载了,那比如说我要想把这个节点删掉右键啊。
45:05
删除它就没了啊,这个呢,就是咱们一个完整的功能啊,然后花了大概45分钟,咱们写了一个二这个实例制浏览器啊,具备一个基本的功能啊,就是这样的。呃,有没有什么问题啊,如果没有问题呢,这个今天这个工具呢,就已经写完了啊,然后一会儿咱们介绍一下咱们的课程啊。
我来说两句