本期学习开发外挂的必备基础 d l l 开发,当然也有,外挂是没有 d l l 文件的,但这种只能修改内存,属于破解一类。通常说的外挂是要实现了很多复杂功能,这些功能当然是需要程序开发来实现,而这个程序不是独立运行的 e x c 程序, 而是作为扩展 dl 附加到游戏主程序上,这种附加行为通常称之为注入。开发外挂需要注入封挂,就要了解注入。首先来了解 dll 程序的工作原理, 代码的第一段程序就是 d l l 的入口函数,在这里添加一个信息框,弹出显示信息。上期演示类名窗口名的工程名就叫风挂,上次工程被覆盖,但是 d l l 已经编译好了,怎么来测试它?我们新建一个初级程序开发程序,使用的 a p i 函数库就是系统 dll, 函数库是包含有函数名的导出表,我刚才演示开发的 dll 并没有导出函数,无法执行它的函数功能,怎么调用它呢?在窗体启动这里使用加载库封挂 dll, 只用在代码里加在这个库文件名就行, 点击编译保存工程就叫他万能好了。测试运行就有弹出信息框关闭。还有一次是因为加载库有多个过程,分为四种模式,这个目录下程序太多,在运行测试下视力目录有一个名叫进程的源码程序运行这个程序,在左边列表里找到万能, 右边列表里就包含他加载的各种库文件。所谓注入,就是原程序并没有加载的库,游戏程序并不会加在外挂的 dll 库,需要通过一定 手段注入到游戏进程里,信息框弹出多次就表示代码执行了多次。入口代码里有个参数叫模式判断,这个模式是初次调用的时候才弹出,重新编译去运行主程序测试一下, 双击运行,弹出了信息框,关闭程序并没有模式,还有现成创建,现成,结束和结束调用这几种情况都会去调用扩展库的入口,所以要判断程序代码在什么时候执行。 测试程序之所以叫万能,是要开发登录器,万能登录器的教程一年前就有讲解过。窗体上设计一个文本框和按钮,点击按钮的时候读取参数并启动游戏。登录器并不是本期教程的重点, 重点是扩展库是要主动监视和控制游戏,那么就需要开启一个县城进行循环。 成的堆占大小和参数都可以写零,后面参数是零也可以不写。编译器自动加。开启现成的函数,指向风挂程序段的地址,使用 at 获取风挂这段代码的指针地址。风挂这段代码是开启新的现成去运行,使用循环针就是无限循环的执行, 也可以使用等单对象这个函数,他是检查某个对象是否处于活动状态,以进程为对象,进程写负一就表示本进程 第二参数写两千是毫秒,意思是等两秒,检测时间为两秒,进程活着,结果为真。进程是游戏主程序,他只要不结束就活着。如果进程没结束,等两秒之后返回真 运行主程序,测试一下就知道作用,等两秒有结果了才会去执行。弹窗代码执行完继续循环,等待 进程是否结束,执行结果就是两秒弹出一次信息框,这是不是相当于定时器了,还不用延时。开发外挂也是要循环不断检测,玩家动作 通常是零点一到零点五秒一个循环周期去执行。风外挂也是需要循环不停的检测。外挂 上期演示的类名风卦就是用的这段代码,它本身也是在独立县城里,零点五秒执行一次,每次执行都会循环检查列表里的窗口名,还有判断是 dll 文件就执行这个代码,这是判断模块地址,如果存在就停止运行。 这个机制是防止抓包程序。对登录器抓包只是针对登录器绑定云加速的才有用,并不是分挂,外挂的 dl 跟登录器无关。外挂是指对游戏进程起作用,不是登录器。现在是用测试程 程序模拟游戏加载运行库,封挂这个库,只要检测到有外挂注入,用模块地址判断某个 dll 库的名称,外挂的 dll 库有注入,就出现在模块列表中。 模块地址就是判断某个 d、 l、 l 库是否存在。现在先不用外挂测试,这里随便找一个,比如说检测 mascrite d l l 这个库是否存在,知道它肯定是存在的就会执行停止,停止是让程序停止运行,零代表自身。现在测试程序启动时并没有加载库, 只有点击按钮之后才会加载库,加载库之后检查到模块存在就停止运行,这是模拟测试,实际情况并不是这样。现在把工程代码都放到游戏目录测试,现在测试程序就要开发成登录器了。申请一个文本变量用来 获取 ip 地址端口文本框叫参数,把它里面文字获取到内容,先把这个内容显示到弹出信息框里,测试获取没有问题,再继续写代码。 现在试用执行文件,这个函数运行客户端,他只有一个参数,但参数是个结构题类型。外挂可以用远程注入或 at 导入表注入修改游戏主程序或者他调用的 d l l 文件。程序调用函数库会把库文件和函数名 添加到程序的导入表,算是静态调用函数。查看 pa 结构的软件有很多这种最复杂 dll 扩展库一般都有输出函数的导出表,当然他也有导入表,他也要调用系统函数, 就像我刚才开发的 d l l 就用到系统函数。现在可以打开这个风挂的 d l l 文件看一下,点击目录,然 然后点击输出表,提示没有输出表,这样就不能用 it 注入。查看导入表,有两个库,用到的函数都在,导入表是我们开发程序调用的函数表,导出表是开发的扩展库,供其他程序调用,如果目标程序没有调用你的函数, 就需要去注入,现在演示一下艾特表注入,这种注入方式需要使用第三方工具,现在只是演示一下如何开发导出函数。导出函数也是一个程序段,但是有区别,程序段不会加入导出表,改成导出才行, 用导出就不用写程序段,然后是函数名,他跟程序段的区别就是用导出这两个字代替程序段这三个字,其他都一样。导出函数跟程序段一样,可以写代码,但是 at 注 入只是伪造调用库的导入表,原程序并没有真的调用你的函数库,也就是说导出的函数库并不会被执行。现在看风挂的导出表,有一个测试的函数,艾特注入的方法很复杂,并不推荐学习。方法是在目标程序上打开导入表,去添加右键菜单有个添加导入表, 输入 d l l 名,第二个框叫 a p i, 也就是 a p i 函数名。现在打开登录器,他已经不再加载库了, 把它当成是游戏主程序来测试一下。注入,打开导入表,右键菜单,选择添加导入表,艾特注入的工具非常多,可以在网上找我演示的工具,综合性很强,功能过于复杂, 开发外挂是会经常用到这类工具,对开发外挂有兴趣,可以研究他们的使用,不开发外挂不用学习这方面的知识。第 l l 是生成的文件名, api 是函数名,平时我们看到的函数名全部是英文的,我今天就测试一下。注入中文函数名这个工具需要点加号,可以一次加多个,实际上根本用不到多个。伪造的导入表,又不会真正的去调用这些函数执行, 添加一个能让程序加载到开发的库就行。现在运行测试程序,点击开始游戏按钮,程序跟刚才一样,也就消失了,这是成功注入了函数库才能这样, 原始程序并没有调用或者加载风挂。 d l l 这种注入方式不够灵活,也更复杂,知道有这种注入方式就行,非开发者使用,不会开发程序注入别人开发好的 d l l。 还有一种远程注入,已经写好了模块只用提 标两个参数,目标进程和路径名。目标进程就是登录器运行的游戏客户端,执行文件函数,启动程序会得到进程句柄,执行进程就是要注入的游戏目标进程。 第二个参数是路径名,就是风挂。 dll 使用的是相对路径,没有指定所在目录相对路径,需要把 dll 文件放到目标目录里。游戏主程序在 client 目录把文件拉进去, client 目录里文件太多,就不进去看了。点击开始游戏,看运行的效果就知道了, 点击开始游戏画面还没出来就消失了。远程注入就这么简单,不需要导出函数,到底是真的注入成功还是游戏出错了?把检测模块地址并停止的代码注视掉,再把编译好的 dl l 程序放到 client 目录,替换 刚才的文件,再点击开始游戏测试。现在启动游戏客户端就正常,没有退出,现在只用把测试的 dll 名换成指定的名称,指定的名称又不能写死到封挂程序里,最好是能通过登录器从服务器获取内容。 登录器怎么提交给风挂这个 dll 程序呢?风挂这个程序是在客户端进程里运行,不同进程之间通讯也是很复杂的事情。二十年前看过别人开发的风挂代码,风挂 dll 是通过启动参数来传递数据, 登录器要指定 ip 地址和端口为启动参数,可以在这后面增加封挂的列表内容。有些游戏登录器的启动参数能有好几 k, 把大量的数据信息通过启动参数来传递。在 dll 程序里使用启动参数函数来获取。那么启动参数的内容到 到底是什么样的?还是先用信息框把参数内容显示出来。信息框是开发程序最好用的调试方法,文字的内容都可以显示到信息框里, dll 程序即使没有窗口,也可以用信息框看到启动参数,才知道这里还有完整路径。主程序路径还带双引号,后面才是参数。如果把风挂的名称列表放到 ip 端口后面, 就要想办法去掉前面的内容,只要后面的前面的内容并不固定,后面的也是一样。我们可以通过拆分式把文字内容拆开,因为每段内容之间都是有空格分开的,拆分一段文字用 s, 他遇到空格就停了,再跳过空格去拆分后面的文字内容。 ip 后面的端口是数字,可以用 d 来拆分,拆分式是按照指定格式拆分文字内容 到指定的变量里,但是前面的内容不需要,可以加上星号跳过这些内容不跳过的话就需要申请很多个变量 路径明 ip 地址和端口这三个内容加星号,最后一个 s 不加星号获取到内容里。把内容显示到信息框的标题那里, ip 端口后面没加参数,显示内容就是错的,加上一段文字之后,他就显示到标题栏, 那么现在我们就可以用指定内容封挂了。游戏外挂都有特定的 dll 扩展程序文件,这些文件是注入到游戏进程里进行工作。上期教程也说过,外挂会用很特殊的类名,让你不能用类名去封,只能用窗口名, 窗口名很多小工具就可以修改它。而游戏外挂的 dl l 名称由主程序负责注入, 主程序写死的文件名,用户没办法修改。这个外挂的目录有 exe 和 dll 两种程序,我们启动游戏来看看他如何注入的模块。很多游戏外挂都是要进入游戏才起作用,先把角色进入游戏之后再进行分析,现在又要用到视力源码里的进程工具, 历程有很多实用工具,就是有点难找,把它固定到开始屏幕使用才方便。 游戏的主进程是 client exc, 找到选中它,右边模块列表里就有热血宝宝的两个 dll, 这两个文件名在外挂的目录里就能看到它是两个文件都被注入,检测一个就行。 装外挂并不需要进程工具来查看模块,只是为了研究外挂工作过程和原理机制,现在没有进入游戏。再来看游戏进程 模块列表里是找不到外挂的那两个 dll, 不用这个就登录器,换刚才开发的登录器,在这个启动参数后面增加外挂 dll 名,启动游戏并没有什么异常反应, 因为这时候外挂还没有注入到游戏进程,进入到游戏再看看有没有效果,已经起到作用了,进到游戏里就自动退出,这种方式属于自残式风挂,结束游戏进程, 上期封挂方式是结束外挂。主程序为什么不能用卸载掉外挂 dll 的方式呢?因为卸载了 dll 并不是把代码空间卸载,加载 dll 的瞬间很多代码就已经执行, 就算把代码空间清除,他已经修改了游戏,所以只能用这种自残的方式,更加安全。用外挂的玩家就应该给他们一定惩罚。现在 只能是指定封一个外挂的 dll 名称指定多个文件,可以用逗号等符号分开,指定的文件数量可多可少,长度不确定,在名称前面加上特定符号,用来区分。可以使用查找文字函数,搜索特定符号,搜索到这两个符号就知道他后面是名称, 这样就不用拆分式逐个拆分数据了。拆分数据要指定一个文本变量为缓冲区,指定的外挂名有可能会很多个不确定文字长度最好不要用文本变量, 如果查到字符参数就不是零,然后参数加二,参数也就到这两个符号的后面。多个名称就要把这些文字分割开。分割文本函数实际上是先查找字符,比如查找逗号,找到之后把这里写零,文字都是以零为结尾,那就把文字分开了,然后 通过循环,再使用分割文本这个函数,得到下一个内容,同时后面也在写入零。这个代码比较难写,就是分割不可重复。分割的同时得到了一组文件名, 检测完这些文件名,过一会还要检测。循环。得到文件名是在上一层循环之内,检查了一遍之后,下一次再检查就有问题,因为逗号已经被替换成的了零字符,再去分割逗号,就查找不到逗号了。 像这样把逗号替换,查找不到会怎样呢?那他最多只会得到第一个文件名,后面的文件就没办法得到,这就有问题了。 有个办法是拆分出风刮列表内容之后,新建一个缓冲区,把内容复制进来,再分割。分割,检查完下一次再复制原内容。因为不确定文字长度,就申请四 k 的内 存,包括拆分的各种变量,至少用了十 k 内存,也不判断风挂内容存在和格式正确参数一旦不正常,游戏就不能正常运行。现在是尝试不用申请内存缓冲区,实现分割文本的重复使用, 过程有点复杂,就不详细讲解了。循环分割文本是要把逗号替换成零字符才能得到下一个文本,这时候修改字符得到第二个名称,他前一个字再改成逗号。所以我用数量递增判断大于零是第二个, 不加这个判断,就会修改第一个名称前面第一个名称前面其实是号,把它改成逗号也没什么问题。每次重新检查都会从参数这里进行分割参数就是从第一个文字名这里开始修改它前面的字,并不影响分割文字。 循环过程有点难懂,不理解也没关系,看实际测试结果再去理解就容易懂了。在检查模块地址前面加上信息框, 不再执行检查的代码,只弹出名称,先弹出 ox、 b、 d、 l、 l, 点击之后弹出 rex、 d、 l、 l, 再等两秒又执行下一次循环,还能依次弹出这两个文件名。如果现在不加风挂的内容会怎样呢? 结果游戏有弹出错误,虽然没有直接崩溃,也说明代码写的不严谨,没有检查好。如果没查到这两个符号,参数就是零,分割不存在的文本,得到结果是错误码。先判断参数非零,再去分割文本, 初始化内容值为零,也就不会进行循环。这么一改,参数里如果不指定风刮列表,运行客户端也没有出现错误的提示, 把这些内容还原回来再测试一下,还能正常的依次弹出多个文件名。这一段代码看上去并不复杂,但是过程讲解起来却相当不简单, 不用缓冲区处理未知长度数据也可以的。把文件名的前一个字改成逗号就可以了。再次进入游戏测试,进去就退出就算成功。好了,今天就先到这里,我们下次再见。
粉丝945获赞3570

大家好啊,这次给大家录一个 d l l 注入的这个视频啊,我们先把这个目标 d l l 和这个驱动打到这个虚拟机里头,我们恢复一下快照啊, 刚才第一次录视频卡了一下,我们这回把快照恢复一下。 好,我们这个很简单啊,就用到两个文件,一个是 dl, 一个是驱动,我们的虚拟化驱动,然后我们先把这个 dl 放在这个 c 盘的根目录下,因为我现在这个只是一个呆萌,我已经把这个东西写死了, 我先给他放到 c 盘根目录下面,这样才能进行注目,然后给驱动打个签名, 然后我们加载一下,我们的目标就是给这个程序做一个无痕注入,我们先看一下效果,然后到后面我们简单分析一下原理啊, 签名打上,然后这个安装上,我们先让这个目标程序运行起来,九零十一十二,安装启动。 好,你可以看到这个点,这个框已经进来了,然后我们点确定,点完确定之后,这个上直行的上下文是没有变的啊,这个时候我们把驱动停止,然后卸载, 然后这期间也不会崩,也不会蓝屏,然后目标程序的运行还是正常运行的,然后这个时候我们打开 c e, 我 们看一下这个 这个目标进程有没有被注入这个 d r, 我 们看一下啊,嗯,哎,怎么弄?打开,哎,打开错了,这个让我们找一下这个 enormate 这个 d l l, 然后在底下应该有一个叫 test 的 d l l, 在 这里就说明我们注入已经成功了啊,然后我们把这个关掉,我们简单说一下原理啊,这个原理就主要是这样, 记个代码说,记个代码说,主要就是先用 ept 无痕去把这个目标地址呃给它写成一个能够触发 vm exit 的 一个条件,比如说你把, 你想,比如说你想把那个执行的那个地址啊,你给它改成什么 cpu id, 当然了,这个你得用 e b t 无痕去写啊,无痕去写的话,它去读它就读不到, 然后你这样的话,它读取还是原来的字节,但执行的话会陷入到你的 v m x 的 一个处理历程啊, 然后在这个处理历层里面,你就直接把这个晒衣扣子写上去。这个晒衣扣子啥意思呢?先前面先对齐一下十六字节的站,然后对齐了之后,然后我们调用一下这个 get current 计算机 number, 然后调用完之后看是不是当前这个核心触发的 v m x 的, 如果要是的话,直接就跳转到输入的代码,如果不是的话,就让他就这一句,这一句死循环吧,你 gmp 负三,也就是当前你的二 ip 指向这个地方减三的话,一二三,那零差九零,对吧?就让他死循环, 然后这样一来就有两个好处啊,第一点就是不耽误你触发 v m x 的 那个核心执行是要扣的,然后第二点就是如果要是有其他核心去竞争的话,这个可以在一定程度上 就是防止这个多核竞争,因为你这句话执行完了之后,他不会等你 v m x 的, 他不会等你这个 v m x 的 返回之后这个页面才生效。你只要这一句,这句话你写完之后, 你修改过的这个页面,它对所有核心都是立刻生效的,它不会等你当前这个 v m i c 的 去返回啊。然后我们在这个 shellcode 的 结尾,那怎么恢复啊? shellcode 的 结尾怎么恢复?你就用 再找一个能够触发 vmxit 的 一个条件,然后给他 vmxit。 当然了我们这个上面会有一些这个保存相关的一些这个计算器,这个盖斯的一些状态啊。然后到后面 至于这个 cyp 的 处理历程,我就不给大家放了啊。这个要是想了解的话可以进一步讨论,就是大概的思路就是这样, 然后这边就是这个嘛,就三角括号加上六十就到这儿,然后把这个东西写成这个 finish, 这个这个东西,这是一个红丁异啊。

这节课呢,就教大家一些易语言的一些基础吧,就很多人,嗯,包括我在内,之前的话就是只知道 d 幺幺是什么东西,但是并不知道这个 d 幺幺是如何编辑的,然后 又不会死加加的吧。那其实一元呢,他也自带一个 d 幺幺的边写啊,我们可以打开一元,然后这边有个程序,然后新建一下,这边有一个 windows 动态链接库啊,就是 d 幺幺, 然后我们确定啊,那这里呢,其实这个写 d 幺幺啊,他跟那个模块呢?嗯,差别不是很大啊,只不过一个是 ec 啊,然后一个是 d 幺幺,是可以说你可以理解为是后缀不一样, 但是它呢,总体来说基本上是毫无变化的。那我们该我们就按照模块的写法啊,模块的写法,我们就比如写一个, 嗯,我们就写自动提示, 我们就写一个这个,然后我们这边写啊,信息框我们这边调上是一元的啊,自带的,所以说就没有那么奇特, 就没有一些难点啊,难点不是很多,然后我们,呃,这个跟模块呢,它其实是一样的,我们就自动弹出了啊,你下面就是这个紫程序,这下面你写的一个代码, 但是呢,我们我们可以用 d 幺幺去调用,而不是用模块去调用啊,这样呢,可以节省一些啊,程序内存。因为如果你这个 d 幺幺的话,他在 windows 里面是自带的那种的话,那基本上就没有问题啊, 就是我们电脑呢,里面有话也会有一些 d 幺幺之类的啊,然后我们这边可以再写一个,就是 我们再次执行啊,就我们啊,我们连接着上一次,然后我们这边再再次执行一下,我们可以写一个,写个中文版, 然后我们这边可以写一个再次执行,然后我们这边呢就运行一下啊,是直接弹出来的, 那如我们这就算一个写完的一个整程序,然后我们可以点击这边有一个,有一个静态编辑啊,或者编辑都可以。好,我们公开一下啊,这个也公开一下, 然后我们可以看到这边是 d 幺幺啊, windows 链接库,然后我们这边可以写一个,写一个第一个, 这是我们的第一个 d 幺幺,然后我们你就说我们这两个代码呢,都分装在这个 d 幺幺里面,你说这个 d 幺幺就包含这两个代码,然后是七百二十八 kb 啊,嗯,相比相比一元那个模块的话,这个东西还是比较好的。然后我们可以 啊,我们可以先去程序那边看一下,然后我们如何调用这个东西呢?我们 啊不像模块啊,这边模块也用啊,就直接把模块拖进来,然后直接就可以用这个命令啊,这个 d 幺幺不一样啊,我们点这个插入,然后这边有一个 d 幺幺命令,那我那我们其实这个就是一个读写 d 幺幺的一个东西了, 那我们这个第二幺命令啊,这个命令是什么东西呢?那个就是说你啊此程序里面写的命令,就比如我们我们第一个写的是自动啊,提示你好世界, 那我们这个酷文件名呢?是什么呢?酷文件名的话,我们就可以直接把这个路径写进来啊,但是如果你不用写路径的话,你可以是写,呃,直接写名字,但不过它这个直接写名字啊,它读的是,呃,你 windows 啊,你 windows 这个 c 盘里面,然后是 windows 这里面的, 还有一个是这个,这里面的东西啊,不是这里面的 d 幺幺啊,所以说你最好加个路径啊,然后这个库中这种名呢,我们就依旧写这个, 其实这个东西呢,你可以自己改一个,就比如写个 test, 然后参数名的话,如果你没有参数的话,你就不用写参数,然后我们这边 我们可以写一个按钮,然后就是 test 啊,我们点击一下啊,无法找到 啊,我们这个啊,没写路径啊,没写那个名字,然后我们运行一下啊,可以看到这个就是一个循环了 啊,你就你就算是大功告成了啊,那么啊,我在这说几个点子吧,就是我们所谓的这个,我们用啊,给你们简单说一下吧 啊,方框,方框透视呢,他也是可以写成 d 幺幺的,就类似于直接用 d 幺幺注入啊,我这里呢,我给你们找一下,这个模块里面有一个命令心意模块里面的是一个注入啊, 是一个县城 diy 注入啊,就是这个啊,我们可以直接去调用这个命令啊,并不需要说去啊 啊去去,非要去用这种方式,然后去读取啊,我们可以用这个,我们文件名的话就把这个写进去, 其实你呃并不需要说,就是把那个方块透视里面的一种东西写成程序啊, 啊,写成程序,但是你可以,那你也可以写成幺幺,我们测试一下这个, 这也是可以的,我们方块透视呢,它是确实可以写成 d 幺幺的,因为这样可以既节省了程序,对吧,又节省了验证之类的啊,你就你,你可以写个空壳啊,写个空壳,然后呢?就你也可以加验证,然后只不过它 啊,你购买之后,他是给你写个 d 幺幺,然后你再把这个注入进去,所以说啊,这样呢,可以节省一下内存空间,并且呢也也算个防止破解吧,除非有些大牛呢,他会用 o d 把这个 d 幺幺给提取出来 啊,一般这种东西对付小白基本上是非常有用的。那么又学一期视频啊,好吧啊,到时候有一些好的教学的话,我可以录出来,然后给你们 给你们学一学啊。我呢录的视频呢,也不是很好,然后讲的也不是特别的精确啊,毕竟能力有限嘛,对吧, 然后我教的话基本就是一些我会的啊,并不是说啊,我把不会的交给你们啊,不然那不然的话我自己也不懂,然后再交给你们,那岂不是对吧,有点乱了啊。行吧,那这期视频啊,到到这里了。

大家好,我是黑猫,之前的课程当中呢,我们已经讲解了如何获取进程名以及呢这个进程的 p i d, 并且呢列出这个进程的所有模块及其机制。 那么接下来呢啊,第二部分就是我们的核心内容,我们呢要实现将这个动态库注入到我们指定的进程当中 啊,那这里呢,先来拖过来啊,拖过来一个这个分组框啊,那这里呢,我们来找一下啊个 roof box。 好,那这个呢就是起到一个美化的作用。 好,那这里呢 起个名字啊,叫做注入选项。好,然后呢接下来呢啊,来一个绿色 ctrl 啊,这里呢是我们选中的这个动态库啊,都会显示到这里。 好,然后接下来呢啊拖一些选项 好,然后呢这个 list ctrl 啊,我们呢依然是选择这个 report 报表模式。 好,然后呢是选择单选好,然后呢这里的名字呢叫做加载 d l。 好,这里呢我们来看一下。好,刚刚呢可能有一些卡顿啊,这样 重新的选一下,好,纵向拉伸一下 好,然后呢这个大小相同啊,这个是没问题的。好,这个呢往上走三个格,走三个格 好,再走三个格 好,然后呢这个呢给它放的稍微大一点好,这是加载 d l r, 然后呢这里呢?就是,呃,加载了之后呢,会显示到我们这个绿色 ctrl 里面去, 这个呢叫做有效,好,失效啊,就是 enable 啊, true 和 false, 然后呢这里呢?是啊,移除啊,把这个 list ctrl 呢?哎,给他把这个动态库呢移除掉,然后呢这个是清空 选中的一处啊,或者是选中的这个清空啊,那最后一个呢?这个呢叫注入 好,加载 d l, 那我们来看一下,好,必填 load 好, d l ah enable。 好,然后呢,接下来呢?是移除? 这个叫瑞木 d l 啊,这个呢?还是叫 enable d l 加一个后缀啊?清空 叫可乐 diy, 这个呢叫注入。 好,叫 inject 点。好,那我们呢,先来加载啊,当然了,这里呢,还要进行个初始化。好,给它添加一个变量啊,绑定一个这个空间 id 呢?我们是否需要更改呢? 养成个习惯啊,更改一下这个例子呢,叫受 d l, l, s。 好,这里是显示所有的 d, l, r。 好,然后呢,接下来呢,我们再来给他绑定一下 这个变量。 好,这个是,这个是空间啊,当然了,他只能是空间,他又不能绑定值啊。 m list, 这个叫空间类型啊, m least ctrl, 然后呢,这个呢叫做受 d l, l, s 啊,受所有的 d, l l, 然后呢进入到我们的初始化函数啊,找到这个 downlog 点 h。 好,这个之前呢,可能是不小心点了一个叫 button 三, 好,这里呢,我们来看一下我们当前的这个项目的位置。 好,没有什么问题。好,再来看一下这个 dialog。 哎,加载过来为什么会变成啊?这个,这个叫做三 好,这个是有效失效,然后这里有个移除,然后有清空啊,还有注入 啊,那之前呢,可能是啊,不小心呢点到的啊,这个呢,我就把它给删掉了啊,这个我们不需要了。好,先来重新的生成一下。 好,那这, 这里呢,我们要,呃,等待一下。好,我们看一看。 好,这个叫 i d c 呢? butter 三呢?未声明。好,那这个呢?我们把它删掉就好了啊,因为在麦克这里呢啊,删除掉一个东西之后,他可能会有一些问题啊,那我们再来重新生成 啊,这个呢,可能是之前写的时候呢啊,不小心点了一个八三三啊,但是还没有给他起名字啊, 所以说哪里报错呢?我们就啊删除啊这个 begin massage map 和 on the massage map 这个消息和设置里,我们只需要把它删掉就好了。好,现在呢成功了,好,没有问题。好,然后呢?进入到这个初始化啊,我们选 选一下啊, inject 带儿 log, 找到 uni 的带儿 log。 好,那这里呢是我们呃初始化的代码啊,这个其实和之前的写法呢都是差不多的。 好,那我们呢?呃,就再来写一下啊,呃,这个是 m list, ctrl 好,这个叫数 d l s 啊,然后呢?叫 sat 椰子 pandy style。 然后呢?我们找到之前写的啊,还是找到之前写的?我们来找一下。 这个叫。呃, process list, 这里面。好,我们把里面的内容呢直接给它插过来 复制一下,好粘贴啊,然后除了这个一行全选啊,然后呢?还有 singleline, 然后呢?还有个 grid 啊,然后我们再来加一个复选框, 这个呢就是在啊第零列 l v s 啊 e x 拆个 box, 加一个复选框。 好, i'm list, 然后呢? ctrl 数 dos, 然后呢?这里呢叫 insert color, 然后呢往里面插 d 零列,这个呢叫是否选择 好,然后呢?这个呢是 left。 好,给它一个大小。 好,然后呢?接下来呢是一和二,然后呢?接下来呢?这个叫 d l l, 这个是文件路径。 好,那这一个呢是我们的钓鱼函数,这个之后再来处理,然后呢?这里呢给他一个大小。 好,那我们来运行一下,看一看呢这个初始化的过程呢?哎,这有没有成功 啊?主要呢就是这些网格 好,这里呢大家可以看到呢,他已经。哎成功了。好,然后呢接下来呢还有哪些地方呢?我们来看一看啊,还有界面的绘制, 那这个呢就和他对齐,下一个。 好,这个呢也往下一点,然后呢这个呢我们比如说我们往这边一点。 好,然后呢我们再来啊,当然了,我们再来重新的生成一下啊,我们看一看这个界面呢有没有什么其他问题。 好,那这个呢也已经成功了,然后呢再来运行。好,我们再来看一看。 好,那现在呢啊看起来呢没有什么太大问题啊,然后我就不再调试了。好,我把这个呢换成两百八,给他变得大一些,因为路径呢,一般也会比较长。 哎,当然了,这里呢可能是写错了啊,他呢?还是两百六啊?我把他呢变成两百啊,刚刚呢改错了位置。 好,那这一步呢就已经完成了啊,然后呢,接下来点击按钮之后,我们会进入到加载 dr。 好,那么加载 d m l 呢,需要使用到文件对话框, 也就是说呢,点击文之后啊,我们会出来这样一个对话框啊,就让我们去选择,比如说我们点击文件啊,打开啊,打开一个项目,大家可以看到这是 windows 帮我们提供。好的啊,然后呢下面呢是提示说。明。 好啊,选择什么类型的文件好,那我们这里呢?是啊, c stream。 好,然后呢我们这里是文件的这样一个 sport 啊,抽纸时呢,给他设一个空纸,他默认的应该也就是空纸 四次菌。然后呢通过 c 角 fire 的 low 这样一个类,创建一个 fire 点 l g。 好,然后呢,这个 fired log 呢,这里呢是通过构造函数啊,直接呢往里面传啊,那这个 fired log 它怎么往里传呢 啊?这里呢,这样我们点一下这个的相关推荐, msdn 好 see fire 答案了,我们直接点进去。然后呢,第一个就是它的下面有很多公共方法啊,第一个就勾到函数直接传进来。好,那这里面呢, 触的话呢,叫打开啊, source 呢,是另存为好,那我们呢,当然是选择的是触打开 t r u e, 当然呢,这里呢,很多的都是默认的选项。第二个呢,文件的扩展名呢,就是他会自己帮我默认追加,那我们打开的话就不要给我们默认追加。 然后呢,这个叫初始的文件名是什么?这个也不需要啊,因为只有我们选择了。之后呢,就是我们获取到选择的文件的文件名啊,其他的都不需要。然后呢,将来这一个呢,稍微复杂一点 呃, d f like 呢,它就是多个这样标志的一个组合,所以说这里呢,我们点进去啊,点进去之后呢,其实我们要找到下面,这里有好多这种选项啊,那这里呢,其实我呢就选择 啊,这个叫文件和路径必须存在啊,就是我要选择文件的一定要存在啊,这里面叫 fire 啊, master your seat 啊,或一下啊,接下来是 pass master your seat。 好,然后呢,接下来呢,这个这个,这个是这样写的啊,接下来这个内容呢,比较重要啊,就是我们点击的时候呢,提示的我们这个文件的后缀这样一个文字,那我们叫它 d l l fears, 那这是也是这个提示啊,他到底是什么类型啊?那这里呢叫他星啊,点 d l, 这里也是提示,然后呢后面才是我们的这种正德的匹配。点星点 d l 结尾呢,两个竖线,这是固定的, 然后接下来它的副窗口,我们可以使用 not 啊,或者使用 list 窗口啊,都是可以的。这里呢我们来看一下。 好,这里面呢是杠 t, 然后呢把它引起来,好,看一看有没有什么其他的问题。 好,杠 t 的话呢,这里引的地方呢啊,这个符号应该是有些问题 啊,应该加在后面啊, get t 好,这个或是前面的一个提示, 然后呢后面才是我们正德匹配啊,这个代表中指。 好,当然呢,这里呢只是个文件对话框,我们呢还并没有把它显示出来啊,那么文件对话框呢?我们是 fasterlog, 当然是使用模态显示啊, fasterlog 点读 model。 好,那么如果说它显示了,那我们这个叫 file 这样一个字幕串 啊,那他就等于 好 fire dialogue 点儿啊, get past name 好,获取到的, 我们这个文件的这个绝对的全局路径啊,绝对路径从根开始,比如 c 盘, d 盘,然后呢依次往下。好,然后呢如果说我们的这个叫 fire 这样一个字幕串啊, 空了没有获取到,那这里有 return, 当然了,我们自己选的话呢,它一定是获取到了,接下来呢,呃,我们呢,这里呢是加载之后呢,我们要放进去啊,那这个 i 呢,是获取到我们当前的 这个数量啊,比如说我当前有十个,那我的下标就是九,然后呢我的数量是十,所以说我要插在第十个位置,就是我现有的是从零到九,但是我长度是十,那我接下来新的呢,一定要插在第 十个位置,所以说呢,这里呢叫 cut i'm list 受到死点 get bettercoin 获取一下 i'm list 受到死点 insert 抬头啊,往里插一下啊,那么 decont 的这个位置 啊,零的这块我们就不插了,他插的话呢,会在这个啊复选框后面直接写成文字,那我们这个文字呢,是空的,但是我们要写上,然后呢,接下来呢, m list 在 下标是一的这一列啊,那我们就是 satitute text 好, com 对 con 的号。好,下标是一的这一例叫做 fire 的 s t, r 给它放上去。好,然后呢,那我们呢?就。哎,再来运行一下,看一看我们这个结构。 好,那这里呢?啊,再等一等啊,这个电用函数呢,没有什么问题了,我们看看选择这边有没有什么问题啊?之前呢,我是更改过。这里。 好,那选择的这个位置呢,我们来看一下窗口列表,这里呢,没有特别长啊,没有特别长的这个 啊,那我先加载啊,这里呢,他默认的是从这个叫文档这个位置开始啊,然后呢,他选的是点 d, l, l, 我们看看有没有什么问题。 其实我的文档这里呢,应该是已经设置了这个点 d, l, r, 那我这里再来查看一下,看一看有没有写错。 好,这里呢是叫做星点 d l 啊,看起来呢并没有什么错。 好,然后呢,我再找到一下之前的这一个啊,这一个 dialog, 然后呢,它这个水平滚动的,这个我就不需要了。好,这里呢,我们来找 找一下看看。这里呢,这里有个无滚动啊,这个很神奇啊, 好,垂直滚动和水平滚动。 好,那这一个呢发现呢,应该是没有这个滚动啊。 好,那这个呢?我们就先不处理它了啊,那我们还是处理这个加载这个 d l l 啊,我们再来运行一下啊,这个呢,先不管了,加载 啊,它正常呢,应该会加载的是点二,那我们来找一下我们之前的课程代码。呃,或者说呢,我们找 c 盘 windows, 然后呢,这里呢有一个叫 fit m 三二啊,下面呢会有很多个。这个点儿啊,那我们发现呢并没有找到啊,这是个问题。 好,那我们来找一下。呃,这里呢叫 firemaster use it o f n pass must use it 啊,然后呢这里呢也获取到了,这个叫 pass name。 好,然后呢这个是 fire 的 vlog。 然后我们来看一看, 这个叫 dollfails。 好,然后呢这个叫 dof files, 叫星点道啊,这个没什么问题啊,然后呢和了一下啊,这个星点道啊,那这样,我们呢把它把这个空格呢给它去掉,我们来看一下这里呢,我们再来尝试一下 啊,看一看呢,是不是。呃,有了这个空格之后呢啊,对我们的这个结果造成一些影响 来,这就出来了啊,果然是在这里啊,因为呢,我之前呢已经把之前十八克可能十八克的这两个刀啊,一个是静态的 m f c 的刀,还有一个是扩展 m f c 的刀啊,进来了。 哎,又进来了。好,那这里呢还可以呢,进行一个选择,当然了可以使用 有效或者失效。好,那接下来呢,我们进入到这个 dialog。 好,接下来呢就是有效啊或者是失效啊,这里呢我们再来处理一下。 好,那我们当前获取到我们当前选中的这一步, 这是当前的被选中的啊, current select 好,这里呢,我们就不再介绍了啊, get next 啊,我们要获取 get next iter 啊,然后第一个呢,就记得使用负一啊 l v a s 然后呢? c 来个题,这是我们当前选中的,如果没找到的话 啊,它的结果是负一啊,如果 carry 的 select 小于零的话,呃,证明呢,没有找到啊,那就 a f s mysage box 你没有选中啊任何号。 好,然后呢,我们就直接 return 了,那么否则的话呢啊,我们来检测一下啊,那么如果说 get check 好,当前这个已经是被选中。好,那我们就是 m list 点儿 set check 啊,设置一下呢,这个检测叫卡伦的 select 啊,设置一下这个 check 啊,给它设置为 force 啊,如果已经是处的话,我们就把它变成 force。 好,然后呢?否则的话呢,我们呢就把它啊设置为处就可以了。 好,这个呢,我就先不再测试啊,我觉得继续往下写啊,这里呢,我们保存一下,然后呢,我们下一个啊,移除啊,就是 rem 掉啊,把它移出去。 好,那这个 remo 的话,也是获取到当前的。好,这样的一个选项。好,先获取一下,超过来, 那如果说我要是移除一个不存在的啊,就是我们要提示一下,这是不存在的,你没有选中任何号啊,否则的话呢,就是 m 列子的啊, delete 啊, delete, 抬头啊,删除一下我们 carry 的 flag 啊,当前的这样一个选项。 好,那么如果是清空的话呢? 好,那这个呢,就更简单了,清空的话呢,直接是 m lise delete 二,好,全部删除。好,那接下来呢,我们啊,我们来这个运行一下。 好,然后呢这里呢大家呢也可以再进行一个判处啊,判处的话呢,我们怎么来处理?我们可以放到这个集合里面啊,或者说呢他自己本身呢,应该也是有判处功能 啊,那我这里呢就啊没有让他判处啊,一二一二往里面去加 好,没有选中任何行,我选中了这一行啊,有效啊,哎,有效失效, 没问题,删除选中的这一行呢,删掉啊,跟有效无效没关系啊,清空。 好,那这个呢就已经好成功了。好,那我们本节的内容呢,就先到这里。

大家好,我是黑猫本系列,我们来讲解一下 d l l 注入器,那么第一阶段呢,我们先来实现一下这样一个效果, 这里呢可以选择所有的进程,点击窗口列表,然后呢这里呢是所有带窗口的进程,进程列表呢就是默认的所有进程。 好,比如说这里呢,我找到 wechat 微信的,然后点击选择啊,这里呢就会出现,哎,进成名,然后呢按照这样的一个格式,后面呢是我们的这个 p i d。 好,然后列举一下进程这些机制,也就是说呢,这个微信呢它自己呢有一个主进程,然后呢它也会加载很多 d l, 那么如果说我们选择了一个目标进程之后,我们呢可以把我们自己写的 d l 注入进去,那这样呢就会实现一个 哎非常不错的一个外挂效果。那这个呢,在游戏辅助当中呢,也是非常常见的,因为呢在之前我们写这个植物单元僵尸的时候,我们是直接是远线程输入我们的代码啊,但是呢 d l r 注入呢是更加稳定的啊,也更加灵活。 好,那我们呢先来创建一下这样一个 m f c 的项目, 好,那我们选择了文件的位置之后,这里呢起个名字啊,叫做 inject, 叫做注入好 d i r。 好,那么在这里面呢,我们首先呢还是来 绘制一下这样一个界面,然后呢把我们学过的这个 m f c 的知识呢,也来整合一下。 好,这里的内容呢,先都删掉。 好,然后呢接下来呢啊起个名字, 好,这里呢是描述文字叫黑猫好, d l l 好,叫做助助器。好,然后呢这里 呢我先来生成一下啊,因为第一次呢生成的速度呢是比较慢的。好,那这个生成呢,他一定要是不会有问题的,然后呢我们再来更改一下他的图标,更改图标呢,这里呢我之前呢已经准备好了。 好,那这个呢,我们之前呢是讲解过的。好,我们把这个图标呢复制一下。好,然后呢进入到我们的项目当中, 好找到这个 r, e, s, 那其实呢,我们呢直接把这个 inject 的 d, l 直接注视掉就可以 啊,但是呢,我们还想保留之前的,那我们要怎么做呢?啊?我们在这个资源视图里面找到这个 icon 图标。 好,然后呢我们来,呃,添加一下这个资源 icon, 然后呢导入 好这里选择所有文件,把它导进来啊,导进来之后找到这个资源视图这里呢 icon, 我们一般呢还是最好是把它这个默认的改一改啊,叫 icon, 叫黑猫的,叫猫的一个 logo。 好,那就已经进来了,进来之后呢,我们现在呢先来运行一下,我们来看一看。 好,先来运行这个先删掉。好,那现在呢就已经好成功了, 这个黑猫 dlr 呢,现在呢并没有成功。好,大小差不多就可以。好,那接下来呢,我们开始进入到我们的程序当中 inject dialog。 好,然后呢我们找到这里 icon, 这里呢复制一下,我们现在呢不想改变啊,这个之前的。 好,然后呢进入到这个资源仕途,把这个 idi 开的 logo 好给它复制过来。好,这里呢是当前的啊对话框的 load icon 啊,主对话框 load icon。 然后呢我们再来运行。 好,这, 这里呢运行。好,那稍等一下,那我们呢就会出来这个图标就会发生一些改变。 好,那现在就已经出来了啊,但是呢依然有一个问题啊,这里呢啊很多时候呢,我们并没有注意到, 那当我们这个程序发布的时候呢,我们发布的是哪一个呢?叉六子里面有个 debug, 当然了我们现在是用 debug 模式, 大家可以打开,但是呢问题是这里还是默认,那他这个在哪里呢?呃,他呢?其实呢是在这个资源里面啊,在 resolve 这个资源里面,我们看看怎么能找到他。 好, 那现在呢我一点击呢他就跑到其他地方去。好,那这样好,我们呢找到这个资源。好,那这个呢,我给他改个名字,他叫我的啊,或者叫猫的。好,这个 icu 看看哪里会用到它, 因为呢我把它改掉之后呢,他肯定会报错的。好,那我们来运行一下啊,然后呢他又提示我们这个资源的位置。 好,那接下来再去等待他进行报错啊,他说他失败啊,他确实是失败的。 好,他说呢不能够找到这个 i c o 啊,在这个 r e s 里面。好,呃,但是呢失败了,我们先来运 进行一下。 好,我们点一下。哎,这个时候就过来了,叫 inject d l r c 啊,就是它啊,也就是说我们用文本文件呢,打开它的话,呃就可以进入到这个里面 啊,但是呢,呃他呢是意外的终止掉了啊,那我们重新的开启一下, 刚刚呢,呃,应该是一个异常啊,但是这个呢是一个很常见的一个情况啊,那我们呢进入这个 inject 道 啊,所以说这个 r c 文件呢,我们用这个其他的文本变音器打开的话 也是可以的,那我们先来打开啊,当然了,他提示我们的是编辑代码。好,编辑代码,我们来点一下。好,也就是说呢,他在这个位置,大家可以看到 i d r mincree。 啊,这是我们的主项目的 icon 啊,那我们呢先把它保留,然后呢这里呢我们换成 logo 就可以了。 好,这里呢换成 logo。 好,当然了我们要保存一下,把它关掉,因为这里呢用代码打开之后呢,这里呢就打开不了了,我把它关掉之后,哎,就可以了。 这里呢也是一个啊,在写成语的时候呢啊,非常容易遇到的一个问题啊,有的时候突然 发现资源仕途呢不能够使用了。好,那我们呢继续的运行一下啊,那这一次呢,生成完之后啊,这里呢我们看一下我们的位置。 好,文件的资源管理器当中打开,然后呢进入到叉六四,然后呢第 bug 啊,这里呢没有变化呢,可能是由于一些其他缓存问题。 好,那我们进入到这个注入器,我们再来粘贴一下。好,大家可以看到。哎,现在呢就一致了。好,他的图标呢也变成了这个小黑猫。 好,那这是我们的第一部分。然后呢接下来开始往里面呢拖动我们的工具。 好手, 首先呢先来一个静态框。好,呃,这里呢?呃,其实呢正常来讲是不需要改的啊。呃,这里呢,但是我个人习惯 cit 叫做近成名 啊,叫 process name, 当然了,这个我们反正也用不上 process name, 点击一下叫进程名。然后呢接下来 id 的 ctrl 好,这个呢拖得长一些,这里呢是显示这个进程的这个机制还有一些其他的信息啊,那它呢是 edit 好,然后 那这里呢叫做显示的,是叫 show 进程信息啊, process 音符啊,这叫显示进程啊,这它是一个做展示用的,但是它是一个 id show process。 好,那这里呢,我现在写一下 of process 好,应该是这样写的啊,因为这个 c 呢?呃,不太确定啊,就刚刚呢,应该已经确定了是 process 一个 c, 然后呢接下来呢,再来拖过去一个选择好,这个选择呢就是 button 好,这个选择呢稍微写的大一点, 然后呢微调的话可以按下下箭头哎,去进行微调,然后呢他们两个呢啊,可以是对齐的。 好,这两个我们来看一下,当然了,这两个呢应该是,这是有一点问题啊,往上一点好,这个是选择好,那我们先来运行一下啊,看一看他们这个位置。 好,晋城名 好,然后呢是选择好,那这里呢,我们呢简单的更改一下啊,晋城名呢,加上一个小冒号。好,然后呢视力编辑框,这里是瘦的,然后呢这个是 button, 叫 b t n select 啊,选择进程啊, select process 啊,对进行进行选择。 好,那我们点击一下,选择之后呢,他应该呢会出现一个啊,进程的一个列表啊,就会出现一个窗口,那么这个窗口呢,我们呢也是需要单独的进一个绘制好,就是这样一个进程列表的这样一个窗口, 那我们本节呢就先来绘制一下。好,首先呢进入到资源视图好,然后呢进入到 dare log, 然后呢这里呢我们添加资源 dare log, 然后呢选择一个新建 好,那这里呢叫做进程列表,我们改个名字 好,它呢也是 darlow 好,那叫它 d l g 啊,叫它 process 进程的 list, 给它 id 呢,更改一下。 好,然后呢再来给它改一下,这个叫 dialog 啊,描述文字,这个改成进程列表 好,其他的内容呢,先把它删掉 好,这里呢看一下它的大小 um 好,进程列表呢,这个里面放置的内容啊,应该是这个 control list 啊,叫绿色 ctrl, 这里我们来看,这不是绿色 box, 和它那个区分开啊,那这个就是我们表格是一个比较复杂的这样一个空间, 这个是 a, d, c list, 然后呢这个呢叫做 pro process 啊,显示这个进程的好,然后呢给它做一些更改 好,单选呢,要选上啊,这个呢就是保证我们选的话只能选一行啊,好,因为呢,最后呢,我们要选择某一个进程,我们不能一次性选择多个进程啊,因为最终我们只是显示某一个进程,在我们这个 id 的里面显示出来。 好,始终显示的所选内容呢,这里呢也可以勾选啊,视图的话,这里非常重要啊,我们变成 report 就可以了,然后在我们实际写项目的时候呢,就不再演示这个图标加载了啊, 大家为了美化呢,可以加图标。好,然后呢接下来我们再来看一下,刚刚呢,不小心给关掉了进程列表,窗口列表选择关闭 好,那这里呢选择一下啊, button 进程列表啊,窗口列表 好,然后呢?是选择好,然后呢关闭 好,然后呢?这几个呢啊,把他们给对齐, 好,那这个呢是 button 好,这是获取所有的进程列表 好,叫 get process list 好,那这个呢是 button 带窗口的进程 button get w n d get window process, 类似这样的感觉。然后呢,这个是选择 啊,那这个是选择某一个进程了啊,它呢也是 button。 之前呢是选择的是什么呢啊?这里呢最好呢,如果是外边动画框也比较多,和外边的最好区分开啊,这个是 button select process 好,那我们还是回来哦 button, 嗯,那这个呢,我们叫他,呃,这里呢给他起个名字, 好,这个叫获取进程列表窗口列表,没什么重复的。那这个选择呢容易重复呢,我们叫它 d l g 好 button, 然后呢,这样吧,叫 truth 额, process 啊,或者呢,这个内容呢,并不是特别的大啊,如果特别的多的话呢,最好是在子的这个窗口列表上,进程列表上加上个前缀啊,就写的更加长了啊,比如说 说,呃,这个子的呢,叫做 dere log, 叫 sub dere log e 啊,那就写个 sub dere log e process, 好,这个是窗口列表啊,这个是选择啊,关闭 好 b t n 好 cloth 关闭进程列表 好,关闭进程列表对话框,当然了,这个写的稍微多一些。 好,然后呢,接下来呢,我们呢再来啊,把这个窗口呢先显示出来,那我们呢在资源视图这里面呢,我们呢,这样看一下,双击一下啊,或者是鼠标右键添加 类,这个鸡肋呢是 cdl log e x 啊,那么 c 啊,那这个呢叫做 process c process list 灯儿 log 点儿 g 好,然后呢,我们确定一下啊,它继承了这个机内啊, c 灯儿 log e x, 那就会自动地添加点 h 和点 c p p 的这样一个文件, 然后呢,那我们就等待它呢进行一个创建,然后这里呢就会发现,哎,这里已经出来了点 h, 然后下面呢出现了点 c v p。 好,然后呢当我们去点击了这个选择的时候呢,我们呢通过模态对话框把它给显示 好,选择呢,我们就双击一下啊,然后呢这里呢为了和上面的区分开,这里呢打上一个分开线,然后选择注视,点击选择对话框啊,点击选择按钮, 好,弹出这个进程列表的窗口。 好,那么我们呢是通过 c process list 来进行创建,那这里呢需要一下 include 啊, include c process list 单元 log 点 h 啊,因为呢,我们需要呢它的这个对话框的类 好, c process 的 log 好, d l g, 然后呢创建一个叫做 process 啊, list d l g, 然后呢 process list d l g 点儿布 model 啊,通过模态对话框的形式显示出来,然后呢先来运行一下。 好,那我们稍等一下,我们来看一看这个输出。 好,这个还是我之前的好,把它就可以关掉好,点一下选择好,那这个对话框呢就已经出来了。好,那我们本节课的内容呢,就先到这里。

好,那接下来我们就开始讲这个第三十课,就是 windows api 啊,第五部分文件操作,文件操作呢?它跟别的不一样,因为文件操作呢,它里面东西不多的啊,总共就这么几个呢,创建文件是吧? 读取文件,那写文件、删除文件和查找文件就这么几个,那这些都是比较核心的哈。 可现在呢,我们所有的东西啊,我们到时候来会这边会选一个,会选一个,选一个比较读文件,做一个详细的解释啊,详细解释其他几个来,大家就照着这个来,一个一个来做。那我们看看这个他每一个呢?主要呢主要是看他的参数, 主要是看它的参数啊,它的参数有哪些就有哪些啊,比方说它这是整个的,是案例是吧?案例不管它,那么我们看到它里面的具体的一个一个这个,一个一个一个它,它这个它这个啊,它这个就是这个 读文件啊,它这个叫什么?它这个是创建,创建文件 create 啊,创建文件,那么它有几个参数 在这边,那么我们一直往下走啊,在这边啊,调用,调用,调用这个,你就要把这个参数,这几个参数就是挂在这个里面。其实这个 windows api 呢,它没有什么特别好详细讲解的,主要就是 把它的函数和它的参数对应起来啊,然后看它的返回值,你要你要判断的返回值,返回文件的距离, 来这边的文具的锯饼比较一下啊,比较锯饼,如果他这个是不是如果是负一是吧?失败嘛?负一嘛,那么他就直接跳到这个退出,对不对?直接退出了,如果不如果是的话,就把锯饼放在这个文件的锯饼那个变量里面,然后就开始一步一步的往下走,他整个整个这么一个过程。 那么漏洞的这一块呢?一般来讲呢,我们会拿来做一些路陆军便利,是吧?权限提升,主要这些读文件也是一样,你找到这个读文件的,找到这个读文件的这个,这个 这个啊,找到这个读文件,它有一个读文件的,读文件应该是在这个里面读文件啊,如果是读文件也是一样,要把它的这些参数啊找到来,主要是这些,然后主要是,然后再看它一个返回值,返回值也是一样,返回否 返回零就失败了啊?非零值就是成功的,像我们这边读,是吧?读文件,读文件,你成功 比较一下,如果,如果他是零的,那没办法了,他就是失败的,对不对?好,那这些呢,我们还是一样,我们打开一个来读文件吧,我们来看看这个,我们用这个 i i d a, 我 们详细看一下啊,那么也是一样,看看它的主主函数,主函数入口,我们先不先不看这些,其实我们可以把它变成 c 加,但我们先不用,我们学的是会变啊,看起来 是很复杂的。代码上不要点,点开这个 f 二断点,然后点 f 九运行啊,运行,运行到这边呢,我习惯了是把这个关掉,这这些不需要看,留呢,是留这么几个,一个是寄存器的,寄存器的一个情况, 最主要的是标志计算器的情况,还有这边是内内存,这是内存的情况啊,这个是占的情况,那这这四个部分是非常重要的,那其他这些呢?是这些,然后我们开始 断点执行,一步一步来,主要是看占内存和那个计算器的情况啊。这边下来把,把这个八零零零放在那个 dx 里面看看, dx, dx 就 变成了 dx 啊, e d e d x 啊, e d x, 好, 就变成了八零零零,看到没有?这边是八零零零啊,这个就完全拼好了,然后再往下走,好,一步一步啊, r d, 然后这边的木一 变成九, r 八是一, r 九是零啊,然后就开始比较,然后就鉴定文件成功,鉴定文件成功,你看看这个 r a x 的, 主要是看 r a x, r a x 好, 这边是有了,然后把这个比较一下它是不是这个, 如果是就跳转,它就会跳转了啊,然后 call, 因为,为什么?因为我们没有这个文件名,所以它是失败的啊,所以它是失败的,所以咱再往下走,再往下走, 往下 message, 好, 有一个信息出来,你看看这个是文件读取失败,是吧?因为我们没有这个文件吗?再往下啊,就是不停的观看,你就是看它的继承器的变化,还有它的内存的情况,也是一个返回一个值二,是吧?然后就退出, 然后就退出。好,那么还有一个,就这些剩下的哈,剩下的这些什么?写文件啊,是吧? 也是一样的啊,还有这个发现文件寻找文件吗?以及这个删除文件都一样的啊,都一样的,这些我们都是要想详细看的,像这个 就主要是这些查找文件啊,这个图是吧?读取文件,文件管理器主要是起这么一个作用,写入文件,删除、查找、创立,主要是围绕,围绕这个来的。那么这个呢?大家回去以后呢,用这个 ida 啊, 详细的把这些所有的啊,所有的东西都给他操作一遍,来看看这个具体情况啊,具体情况?那么下节课呢,我们讲的是这个三十一课。三十一课呢是注册表的操作啊,注册表的操作三十二课呢是。 嗯,三十二课是进城注入实战,是吧?三十三课是网络编程的,三十四课是窗口的消息,三十五课是获客等等之类的啊,都一样要来,那么把这个整完,因为整个的课程呢,很多有将近六十节课左右啊,六十节课左右。

为什么普通的文华指标加密被三秒绕过?为什么文华指标作者辛苦半月的策略被三秒破解,咸鱼甩卖啊! 因为普通加密全是漏洞,只有金贝壳加密工具一机一马 d l l 加密,云端健全才是真,防护老不可破家人们今天给大家演示文华六指标加密工具的全流程,先给你们看个东西, 这是我给文华六指标设置查看密码后的文本内容,看起来好像有了初步加密,但其实问题不少,不仅做不到一机一码授权和有效期设置,还特别容易被破解,原码安全根本没保障,所以咱们得用专业的指标加密工具来加强保护。接下来就带你们一步步操作。首先打开浏览器,输入工具的网址,进入官网, 点击立即使用。进入客户端生成页面,这里可以设置软件名、版本号、试用天数,还能自定义图标和背景图, 官网甚至有在线制作背景图的功能,很方便。然后上传咱们要加密的指标也是担心原码安全,也可以在官网首页下载离线版操作,完全不用怕原码泄露。设置好后,点击生成客户端,再进入客户端管理页面,就能看到刚生成的客户端了,点击下载就行。 打开下载好的客户端,能看到授权期限,就是咱们设置的三天。接下来设置文华六的可执行文件地址,直接把桌面的文华快捷方式拖进来就行,然后点击启动文华,注意哦,只有通过这个客户端启动的文华才能正常用咱们的加密指标, 咱们来测试一下。先加入 k 线,点击叠加指标,能看到咱们的指标文件夹,先入后指标就能正常加载,这时候去看本地文件夹,指标全是不可读的密文,真正做到了用户可用不可亏。 那如果不通过客户端直接打开文华呢?咱们试试直接启动文华后叠加指标, 会发现根本加载不了,这就说明指标授权完全安全可控。想到用源码门儿都没有。朋友们,你们平时用文华六指标的时候,有没有遇到过源码泄露的问题?或者对这个加密工具还有什么疑问?评论区一起聊聊呀!
