粉丝685获赞1.0万

哈喽,亲爱的小朋友们,大朋友们,我是狒狒,上一节课呢,我们已经讲过了,去穿点内裤啊,怎么去访问内裤啊?然后去写一个嗯,序列画和反序列画的一个小工具啊, 那么这节课我们来看一下这个问题啊,就是说你打开这个 文件资源管理器,然后呢,在你的这个 winform 的主项目里面,然后找到 b i n 第八个,然后打开这个,你可以找到一个 common 点 dll 文件, 是吧?它里面并不包含什么 serialize, object 点 cs 这些东西,他只有一个 common 点 dll 文件,那么这 一个他跟这个内裤名是相同的啊,抠门,这个也是抠门,对吧?那么请问别人如果给你一个这样的 dll 文件,你应该怎么用?好,我们先把这个文件复制出来放在桌面上, 这怎么弹出来了?好,放在桌面上,然后我们新建一个应用程序, 建一个 windows 床体阴阳程序。 好,现在呢,我们再往里面拖一个按钮,然后看看点击按钮之后呢,能不能去调用这个 common 点 dll 里面的方法。 好,看看怎么办啊?这个在桌面上肯定不行,是吧?我们复制他,然后,嗯,点击这个你的 winform 项目,然后 粘贴右键,有粘贴吗?有粘贴是吧?哎,你看这个 come 点 dll 就到这里来了,对吧?到这里来怎么去用它呢? 我们看看能不能访问到他的命名空间。 using comment 访问不到,对吧?哎,访问不到,也就说你仅仅把它放进来,你是访问不到 的,你得添加对他的引用。那么依赖上右键添加还是项目引用吗?刚刚我们是一个解决方案,里面多个项目,你去添加的时候是去引用那个项目,你是可以引用的,那么现在这个解决方案里面他是没有其他项目的,就只有你这一个项目,对吧? 好,那么肯定也不是什么共享的项目,但是看到有一个浏览哎,你点浏览,然后点下面一个浏览按钮浏览, 你找到这个 comment, 点 d l l, 那这个 d l 在哪里呢?在 winform application 十八里面,是吧?好,那,那就好办了, 我们只需要找到我的电脑底盘扣的这个什么十八 哎,打开它,找到这个 come on 的 dll, 找到了吧?好,确定,然后你再去 using common 就可以了,对吧? 然后你就可以去使用了。像刚才我们一样,这个 cerealize object s o 等于六一个 cerealize object s o, 点 cerealize object to local 或者点 cerealize 方法就可以访问了。所以啊, 你的这个 dll 去给别人用,别人也是可以用的,但是别人知道里面有什么方法吗?别人知道应该用哪个命名空间吗?不知道。所以你必须给他提供一份文档, 告诉他怎么用。那同理,你拿别人的 dll 稳定来用的时候,你知道里面有什么东西吗?你知道他命名空间吗?不知道。因此你也需要有一份文档才知道怎么用。比如说怎么去创建对象,里面有什么方法,对吧?哎,要有这些东西才可以用啊。 啊,那这就是今天这节课怎么去访问这个?怎么去引用一个 dll? 这种内裤的文件他不是元代码,他是已经深层的 dll 文件,是吧?怎么去用,怎么去给别人用啊?文档的必要性,你文档当然不是写在这个里面,写在这个里面看不到,你可以拿个记字本或者拿个 word, 对吧?你可以写在那个里面,连同这个 dll 一起发给人家。好,拜拜。

dl 中文叫做动态链接库,它是什么东西呢?大体上我们可以把它理解为可执行程序的变种。这是因为绝大多数情况下,动态链接库文件里面包含的内容和可执行文件类似,都是一堆机器指令, 但他们之间是有区别的。其中最重要的区别是,动态链接库不像可执行程序一样能够被双击运行,他的运行总要依赖于别的可执行程序。 可以看出,动态链接库的角色是给可执行程序打辅助的,怎么个辅助法呢?动态链接库中通常包含的都是多个程序都能用到的代码和数据,比如 commandaidog 三二。这个动态链接库里面包含了和对话框相关的功能, 每个程序都可以使用它来实现打开、保存等对话框,而不需要自己重新写这些代码。当操作系统要运行一个可执行程序时,会先把可执行程序的内容读取到内存里, 但暂时还不能运行,因为代码还不完整。在这些内容中,有一小部分描述了程序还需要哪些动态链接库辅助,于是操作系统会依次在电脑上查找这些动态链接库文件,如果找到了,就把这些动态链接库中的代码也读取到内存里, 这样可执行程序就可以正常运行了。注意,这个查找文件是有讲究的,他有个先后顺序,依次是可执行程序所在的目录、 windows 系统目录、 windows 目录、当前目录以及环境 面料 pass 指定的目录。如果在上述位置都找不到,系统就认为没有这个文件了,别的文件夹他是不会去看的。经常有人说,哎,这个动态链接库文件我电脑上有啊,怎么出错说找不到呢? 看了我的视频,你就知道必须要放在这几个目录下,可不能乱发,要有备而来。这时候大家会不会冒出这样的疑惑,既然可执行程序运行时还要查找动态链接库,那为什么不把他们俩合并为一个可执行文件呢?这样不就方便多了? 应该说这种做法确实有一定的道理,但是工程上的事情,每一种方案都是利弊共存的,用哪个方案要取决于具体的情况。如果是个很小的程序,是可以这样做的,但是现代软件往往都比较大,把一个很大 大的可执行文件分解为一个小的可执行文件,加上很多动态链接库文件,有很多优点。举个例子大家都知道了,比如一个已经安装的游戏有二十个 g, 在功能升级时,用户只要下载少数几个涉及升级内容的动态链接库就行了,也许只有几十兆, 既快又方便。而换做合并为一个文件的方法,用户在升级时必须下载整个可执行文件,游戏厂商怕不是要被愤怒的用户喷死。前面讲的都是优点,那么动态链接库有缺点吗?当然有, 由于和可执行程序分开存放,动态链接库文件可能会被误删除,会被病毒木马损坏,会和可执行程序版本不兼容。这些问题轻则导致功能失效,重则导 导致程序崩溃或不能启动。那么如何避免这类错误呢?首先也是最重要的,尽量去官网和靠谱的平台下载游戏和软件,一些野鸡平台提供的游戏和软件经常会默认你电脑里应该有了某些动态链接库的文件,而事实上是你没有, 所以软件无法启动。这时可以查看压缩玻璃有没有说明文件,有的会告诉你解决的办法,比如安装点耐特运行时组件, vc 加加运行时组件或者 direct x 等等。其次,即使下载的是正规软件,就像正常运行打火系统补丁也很重要。 比如在一台 win 七系统的电脑上安装 pase 三点八,虽然提示安装成功了,但是运行时却会出错,说找不到这个动态链接库文件,后来打了四三零这个系统, 五零后 pison 就成功运行了。最后,如果软件本来运行的好好的,某天突然说找不到了,这可能是因为动态链接库意外损坏或者被别的程序误删导致的,试着重装就好。

本期学习开发外挂的必备基础 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, 再等两秒又执行下一次循环,还能依次弹出这两个文件名。如果现在不加风挂的内容会怎样呢? 结果游戏有弹出错误,虽然没有直接崩溃,也说明代码写的不严谨,没有检查好。如果没查到这两个符号,参数就是零,分割不存在的文本,得到结果是错误码。先判断参数非零,再去分割文本, 初始化内容值为零,也就不会进行循环。这么一改,参数里如果不指定风刮列表,运行客户端也没有出现错误的提示, 把这些内容还原回来再测试一下,还能正常的依次弹出多个文件名。这一段代码看上去并不复杂,但是过程讲解起来却相当不简单, 不用缓冲区处理未知长度数据也可以的。把文件名的前一个字改成逗号就可以了。再次进入游戏测试,进去就退出就算成功。好了,今天就先到这里,我们下次再见。

今天我们讲一下怎么样把 d l 文件啊编译到程序里,有时候我们的程序呢可能会引用一些,呃,别的一些 d l 的文件啊, 那么我们把程序编译之后啊,哎,那个 da 文件必须要放到我们程序所在的那个目录里面啊,才能正常运行,如果那个文件呢没有在里面呢,他有时候他就不能正常运行了,没有在那个叶克斯与文件同一个目录,他运行就有问题了。 哎,那么我们,哎其实是有一种办法啊,是可以把那个 d 文件呢,把它编译到我们的 e x e x e 那个程序里面,这样呢,我们的只要拷贝我们那个 e x e 文件啊,就可以正常 运行的。哎,我们还是以我们前面讲的这一个, 哎,窗口,窗口停靠空间那一个例子啊,接着讲,哎,我们这里呢就引用了一个 dl 文件啊,那么呢,我们现在,哎编译我们这个程序啊,我们把它生成一下, 我们可以看到它就生成到这个,呃文件夹里面呢,我们把它打开啊, 好,那么我们看到了这里面深层的文件呢,除了这个 e x e 文件,呃,这个 d r 文件它也把它放到这里面了,这个时候呢,我们运行啊,这个是可以正常运行的。好,那么我们现在呢把这个文件呢直接拷走, 比如说我们把它烤到这个桌面,烤了桌面之后,我们再哎双击打开,它就打不开了,这是什么原因呢?哎,因为我们这一个 d r 文件啊,没有跟它放到一起,现在我们把它烤过来,哎,都放到这个目录里面,我们现在呢又可以正常运行了。 好,那么呢我们怎样让我们这个 exe 文件呢?呃,不需要,呃,这个文件必须要放这个目录里面,让它正常运行的, 首先呢我们就要把它这个 d l 文件啊添加到这个项目里面来,添加现有项, 选择所有文件。那么呢我们之前呢,呃,把这个 d r 文件呢放到这个文件夹里面呢,我们把它添加进来,添加进来之后啊, 在这上面点右键,点属性,哎,把这个深层的操作啊,哎,设置为嵌入的资源在这里面啊,把它嵌入到里面,然后呢我们,哎在还增加一个类, 哎,这个类呢,我已经考到这里面了啊,哎,我们看一下就这个类,这个类呢,哎,就是用来,哎, 他做什么用呢?就是说啊,他可以把资源里面的,因为我们这个 dl 文件已经添加到资源里面了,哎,他把那个资源里的动态链接库啊这个 dl 文件都载入一下,好,那么呢我们现在看一下这个类的, 哎,代码,大家也可以,哎,照照着 我们这个视频里面的代码写一下就可以了,如果大家觉得写起来比较麻烦呢,也可以直接在评论区留言,然后我把这个这个类文件原代码直接发给你, 哎,好,我们看一下啊,这就是这个类的一个代码,哎,大家可以直接哎照着视频里面写,到时候他主要是要引用这一个啊,注册 d r, 注册 d r 文件,这个,哎, 好,那么呢我们现在呢,哎,还一个就是要在那个,哎程序这个 program 在里面啊,我们这个项目啊,他首先运行的那个文件他就是这个 program, 那么呢我们把它的构造函数给它重新写一下, 写,哎,就是写一个代码啊,这个代码是用来做什么呢?我们写一下啊,就是用来字 自动注册资源中的 dl, 那么怎么写呢?就是这个喽喽 resource 啊,哎,就是我们调用这个类,这个类里面的一个注册,哎,这一个方法好,那么呢这就写完了,好,我们现在呢重新我们保存一下, 然后再重新生成。好,现在生成了之后啊,我们可以看到啊,刚才我们这个 e x e 文件只有十几 k, 现在有四百多 k 了, 它主要是说,主要是呢把这个 dl 文件啊包含到这个 exe 里面呢,我们把它在拷贝到这个桌面上, 或者是其他的任何问题,家里面都可以在运行。那么呢哎,他就不不不是说一定要,哎,在那个文件夹旁边了啊,同一个目录里面,不是说一定要有那个 dl 文件啊?今天呢我们,哎这个就讲完了,哎。



大家好,我是立国说电脑,今天这期视频呢,我给大家讲一下,我们电脑打开游戏的时候,或者打开软件的时候,然后在提示计算机中丢失 dl 文件, 呃,然后这个问题怎么解决?一般常见的幺四零 dl 或幺二零 dl 比较常见,还有等等一些 dl 文件丢失,一般这个原因呢都是因为我们电脑运行库损坏了,或者没有运行库导致的。今天呢我教大家如何解决这个问题,我们先把这些先给关掉, 然后我们打开浏览器,找到百度,然后我们搜索微软运行裤二零一九, 敲击回车,我们找到第一个,然后点击进去,找到下载地址,我们这三个任意都可以,我们点击, 因为我下载完了,我就不给大家演示了,我这里有下载完的,我给大家打开试一下,如果你不会下的,或者是下不明白,怕下出广告的,可以关注我,然后给我发私信,我可以传给大家。我们先把下载好这个打开,打开以后我们再点击,然后点击运行, 然后他下载完是这个样子的,然后我们点击下一步,再点击下一步,然后下一步等待他自动安装,一般安装完我们电二号文件就全都回来了,然后我们打开游戏或软件就一切都正常了,我们现在等待他安装完即可, 我这个是正常安装完的,然后他没有说提示你是否重启,如果你们第一次安的时候,他会让你们选择重启或者不重启, 我们要选择重启一下,然后把电脑重新启动一下,再打开你打不开的游戏或软件,这样就可以了。然后这期视频呢?我就讲到这里,有喜欢电脑小常识的朋友可以关注我,谢谢。

这节视频我们来学习第二节静态和动态电动 deo, 我们打开视力程序,在这个视频中我们使用上节视频中我们写的 simple 点 deo 这个动态灵库,这个动态灵库里面它包含三个导致函数 啊, nc ctrl 啊,还 dc ctrl, 还有一个球模三个导出函数。那么接下来我们要调用这个动态电梯库里面的导出函数,我们分别写两个例子,一个是 user dl 一点一点四一,这个程序我们运行一下, 在这个视力中啊,我们创建一个对话框作为这个程序的界面,然后对话框中啊,我们包含几个空间上面呢?这是一组空间,一个一体的空间,两个八层空间,我们 点击增加,那么计数器呢,就加一啊,其实调用的就是 simple 第二中多弹内裤中的昂 ccon 这个导入函数,我们把这个技术值把它写入到这个一体的空间中啊,如果说点击减少这个八分空间,那么我们就调用 这个申报第二中的导出函数,第一 cctum 把这个技术去简易,并且把它写入到异地的空间中。 我们再来看下面这一组,在下面这一组中啊,我们包含两个啊,一体空间后面还有一个,这个后面这个一体空间呢,他是指读性质的啊,前面这是可以写的,那么我们写入两个指数值啊,比如说写入二和三,那相当是二 除以三,他的模是二,等于是计算取模。 接下来我们再来运气下 uzada 二点一 c 这个程序,这个程序呢,我们可以发现和这个前面的这个 uzada 二一,它的功能是一模一样的,计入器加一减一,它取模, 只不过呢,这两个系列他的区别是,前面这个 uzi 二一他使用的是静态调动动态内裤的方法,下面这个 uzi, 第二他使用的是动态调动动态内裤的方法。

啊,大家好,我是救生装饰啊,今天继续给大家带来的是激活代码转换器之调,也就是动态链接库的转换啊,现在我们打开软件,然后我们在这边选择类型,这边选择调叫动态链接库, 然后呢我们打开我们的一元元码,我们选择两个呃调,然后复制, 然后粘贴,然后呢我们点击转换,然后我们复制啊火山代码, 打开火山,然后右键我们粘贴啊,这就是我们啊转换完成的火山的代码,然后这边都有这个有输出名,这边有一个输入啊,这边有备注, 这些都有了,然后我们看一下这边的啊,这边一个船只,船只这边在我们的火山里面是十双入山数针啊,就是我们的。呃,第二的转换 啊,今天的教程呢就到这里啊,我们会将下载地址放在评论区啊,大家有需要的话可以下载啊,今天的教程就到这里,谢谢大家的观看。

大家好,我是罗斯。今天我们来讲一下我们现在操作系统中随处可见的动态链接库。为什么要用到他们,以及动态链接是如何被我们操作系统实现的。如果大家对编译链接,尤其是相关的一些概念还不太熟悉的话,可以先去看看之前的那些编译与链接的视频。 动态链接其实比我们之前讲到的静态链接要长的多。比如我们去编一个最最基本的 c 语言程序,你会发现他就用到了一个动态链接库。 比如之前我们看到的第十一点的搜,是所有西元程序都会用到的运行时库,他自身就高达两兆左右。设想如果每一个程序都重复包含着两兆的代码,显然会浪费大量的硬盘空间。这个时候呢,动态链接的优势就体现出来了。我们可以将需要共享的代码 单独提取出来,保存成一个独立的动态连接库,等到程序运行的时候,再将它们加载到内存。这样不但可以节省空间,因为同一个模块在内存中只需要保留一份副本,配备不同的进程所共享。另外一个动态库是独立的文件,因此我们可以很方便安装和更新他们,甚至用它来实现软件的插件等等。给他举例子。这里是我下载的同个应用的两个不同构建版本,一个采用静态链接编译,而另一个采用动态链接。尽管他们包含了完全一样的功能,但文件大小却相差甚远。 中动态链接的版本将公用的代码存放在了这里。不同的动态库中可以被这三个可执行文件共享,而进台链接的这三个可执行文件都重复包含了相同的代码,显得非常浪费空间。那说了这么多,不如我们就亲自来创建一个动态链接库试试看。 首先,这里的 max 顶 c 中定了一个函数 at, 我们希望将那边译成一个动态库。相应的, mast 的 h 是它的同件,里面只包含了函数的声明,主要方便其他模块的引用。 随后,我们将 mass 点 c 编译练就成一个动态库。这里的刚需要表明,这是一个共享库,或者叫共享对象,他是 linxa 对动态库的另一种称谓。我们先略过这里的高 fpic 参数。 mass 点 c 是输入的原件,后面的高欧指定要输出的文件名。注意点的搜是 linxa 动态库的扩展名。相应的, windows 的动态库就是我们熟悉的各种点地要要文件。随后,我们再组成 中包含这个 mathematics 同件,并且调用动态库中的 app 函数。他和一般的函数调没有什么区别。最关键的是,在编译主程序的时候,我们需要指定一个刚 l 参数。他告诉编辑与之前创建的 libymax dnso 进行动态链接。注意这里在指定动态库的时候,我们直接省略的前置力和扩展明点。 so。 最后,我们需要通过刚大写的 l 来指定动态库总裁的路径,否则链接就会爆错。运行命令我们就可以得到一个经过动态链接的组成续命。 这是我们的运行妹,有没有发现他提示找不到 lip math 这个动态库,但是他明明就在当前路径下啊。这是因为 linux 过任只会去系统入境下搜索动态库,这点和 windows 不一样。显然,我们的动态库并不在其中。那么这有几种解决方法。第一种,我们当然可以将动态库拷贝到系统入境下,不过需要入的权限待会还得相处,它对调试不够方便。 另一种更简单的方法是使用环境变量将当前目录添加到 ld library pass 环境变量中。这样操作,系统会先去我们指定的路径下搜索,找不到的话再去搜索系统入境。接下来我们再运行妹,可以看到他成功调入了动态库中的爱弹术,并返回了正确的结果。那这些我们提到动态链接的一大优势是允许我们单独更新动态库本身,而不用重新编译其他的组建。由着我们对爱弹术稍微做一些修改,向屏幕搜出一号文字,然后重新编译 lip math 这个动态 库主程序。我们不用做任何修改,直接运行就可以看到刚才我们的动态库我所做的更新。以上我们就讲到了一个基本动态库的创建和使用。那动态连接和电台连接有什么区别呢?我们知道,静态连接会将编译产生的所有目标文件连通用到的各种库合并成一个独立的可值性文件。其中我们会去修正模块间函数的跳转地址,也被叫做重定位 地址,在程序加载之前,不过只是一对站位符而已。但这里有个问题,如果我们直接去修改代码段中的跳转地址,有一代码段的内容被修改,自然就不能被其他进程所共享了,因为我们需要在内存中保存多个不同的副本,这刚好与节约内存的目标就背道而驰了。那为了解决这个问题,动态链接采用了一种聪明的做法,不再修改代码端,而是在数据段中专门预留一片区域用来存放函数的跳转地址, 叫做全局偏表。 gut 里面专门用来存放全局变量和函数的跳转地址。于是我们在调完函数的时候会首先查表,然后根据表中的地址来进行跳转。这个地址在动态库加载的时候会被修改为真正的地址。而查表的过程也很容易实现。由于全局篇表与代码段的相对位置是固定的,我们完全可以利用 cp 的相对选址来实现。 有了全局编表,我们不再需要修改代码段,因此代码可以被所有进程共享。而全局编表虽然在每一个进程中保留一份副本,但由于占用空间很小,所以完全没问题。采用这种方式实现的动态链接也被叫做 pic 地址,无关代码。换句话说,我们的动态库不需要做任何修改,被加载到内内存地址都能够正常运行,并且能够被所有建成共享。这也是为什么之前我们给编辑指定刚 fpsc 参数的原因。 另一方面,由于动态链接在程序加载的时候需要对大量函数进行重定位,这一步起来是非常耗时的。为了进一步降低开销,我们的操作系统还做一些其他的优化,比如颜值绑定,或者也叫 pot。 与其在程序开始就对所有函数进行重定位,如将这个过程推迟到函数第一次被掉落的时候,因为绝大多数动态负重的函数可能在程序运行期间一次都不会被使用到。 他的大概思路是, gut 中的跳转地址默然会指向一段辅助代码,他也被叫做装代码 stop。 在我们第一次调用函数的时候,这段代码会负责查询真正函数的跳转地址,并且去更新 gut。 于是我们再次调整函数的时候,就会直接调整到动态库中真正的函数实现。当然,具体的细节可能会稍微复杂点,这个我们就不深入讨论了。总而言之,动态链接实际上将链接的整个过程,比如符号查询地址的重定位从编译时推迟到了程序的运行时。他虽然牺牲了一定的性能和程序加载时间,但绝对是无有所值的。因为动态链接能够更有效的利用子弹空间和内存资源,以及他方便的代码的更新和维护。更关键的是,它实现了二进制级别的代码附用。 那么关于动态链接,我们今天就暂时讲到这里。最后感谢大家观看。我是俄斯,我们下期再见。

现在讲解一下如何安装通达性指标和插件,打开通达性软件, 好,软件打开了,现在按以下步骤完成指标导入,在右上角的菜单栏中找到公式,然后点击选择公式管理器,在公式管理器的右下侧点击导入公式,然后找到指标,点击打开, 先点全部选中,再点确定。 好了,现在已经把指标成功导入了,这里我们可以看看指标的内容, 我们再按照刚才的步骤导入一遍, 为什么导入失败了,如果原先已有指标,再重复导入,需要执行覆盖的操作,这里选择覆盖同名,再点确定这次成功了。 接下来要把指标的效果显示在图当中,现在这个图当中只有一个 k 线图,我们把它叫做主图,然后点鼠标右键选择指标窗口个数选择三个窗口, 这里我们可以看到最上面这个叫主图,下面这两个叫副图。我们在想删除的副图上点鼠标右键选择副图指标,再选择删除当前指标。 看复图指标被删除了,我们添加回一个复图窗口,在复图上点击鼠标右键选择复图指标,再选择选择复图指标。拉动滚动条,选择我们需要的复图指标。 我们需要每日资金流向副图指标,最后点确定,这里继续演示。添加分时副图指标,按一下键盘 ant 键,点右键选择分时副图指标,选择指标窗口,这里我们选择了三个窗口, 太多了,我们返回去选择一个窗口,我们在分时副图上继续点鼠标右键选择分时指标,拉动滚动条,选择我们需要的分时副图指标。我们需要 的是分时资金复图点确定现在还是看不到指标的效果, 我们来添加通达性 d l l 插件,打开公式管理器,点击 d l l 函数,点打开绑定,看到里面没有插件,现在我们去下载的文件夹中,把文件复制过来, 选择这两份 d l l 文件,右键点复制, 再打开刚才的 d l l 函数界面, 打开绑定,点鼠标右键粘贴,把刚才的复制的文件粘贴进来,然后选择插件一点打开 插件易绑定了,再选择第二号 d l l 打开绑定,用同样的方法把第二号 d l l 绑定, 第二号 dll 也绑定成功了, 现在指标的效果显示出来了。以上就是通达性指标和插件的安装,谢谢观看。


今天分享一个大多数电脑都会碰到的问题啊,绝对是干货,只要你用电脑玩游戏啊,就有可能碰到这个问题,某某 dr 二文件丢失啊,也就是你的电脑里面没有这个文件了啊。那么解决方法呢,也非常的简单,只需要这个软件啊,大家可以记一下这个软件名,然后先去工具选项 高级里勾选 c 加加强力修复,然后确定重新打开一次该软件,点一下检测并修复,基本上百分之九十五的类似的问题都可以解决。好了,我是大宝,直讲干货,记得关注我。

在 windows 系统中,我们常常能看到后缀名为点 d m l 的 d l l 文件。 d m l 全称为 dynamic gallink libraries 及动态链接库。这期视频来介绍一下 dll 文件。 dml 文件是比较神秘的文件,这种文件不能像 exe 等可执行文件一样直接运行, 但是可以被 e x e d l l 文件调用实现资源代码主要是函数的模块化复用、动态加载等等。 简单来说,可以把 d f l 文件比作魔法书, e x e 文件比作魔法师。在施法过程中,如果需要用到 e x e 没有记住的魔法时,这个 e x e 就可以 通过加载 d l l 里面的魔法来施法。所以使用 d m l 可以大幅减少程序文件的体积以及代码和资源的重复, 间接提高开发效率和节省硬盘空间。在多个运行中的程序共用一个 d l l 文件时,只在内存中占用一个 d l l 的空间, 这样也节省了物理内存的空间。在进行程序升级迭代时,如果升级内容只涉及到 dl l 文件,就可以只升级 dml 文件,即所谓的增量更新, 可以提高开发效率,减少升级软件时的下载时间、流量出现 bug 的概率、排查 bug 的时间等等。 利用 d m l 还可以很方便的做多国语言设计,把不同国家语言字符串和图片等放在不同的 d l l 文件里面, 通过替换 dml 文件或者加载相应的 dll 文件,就可以进行不同语言的切换。这就可以解释为什么汉化补丁常常是 dml 格式的。 当然, dml 也是有缺点的,动态链接库需要额外加载,所以速度会慢一点点。另外, dml 文件丢失或者版本不匹配时会引起爆错, d m l 文件还可能被劫持。在加载 d m l 文件时,系统会按照一定的顺序查找 d l l 文件。如果在一些优先查询的位置中 放置相同名称的带读 d m l 文件,系统就会优先加载这个带读的 d m l 文件。一些恶意的病毒软件还能通过 d m l 注入技术,让正在运行的 e x e 进程也加载带读的 d m l 文件。 在这两种情况下,关掉病毒的程序已经没有意义了。病毒的 dml 已经被注入到很多进程里了,用重启大法可能可以减少感染的进程, 但是无法避免二次感染。你可能见过 o c x c, p l, d r v 文件,这些也是动态链接库,跟 d m l 文件是类似的。

好多朋友私信我说打开软件或游戏时会遇到提示找不到某个 d l l 文件,导致无法启动或运行,使用维软常用运行库和极包进行更新修复后还是无法解决问题,那今天就再给朋友们介绍一个 免费绿色安全的修复方法。首先打开电脑浏览器,在网址栏目输入三 w 点 i c h u n j i n g 点 com, 具体网址我会在视频最后给大家显示。打开网站后, 在右上角搜索栏输入 repair, 并点击搜索,然后选择 the x repair 修复工具,点击前网查看。进入新页面后,点击下载地址栏中的兰奏云,在打开的新页面上继续点击兰奏云,然后选择第一个最新更新的合集库进行下载。进入下载页 界面,选择普通下载方式,记得选择保存位置,以免下载后找不到文件。下载完成后,在你想存放的任意一个盘中新建文件夹,并将下载的文件 解压缩到当前文件夹中,然后打开这个文件夹,双击这个,打开程序,点击检测并修复按钮,这样等待它自动检测并修复完,就可以出现这个,点击确认就好。如果还存在异常,就点击上方工具,选择选项,点击扩展, 然后开始扩展,这样扩展完就可以退出程序,然后重新进入程序,再点击检测并修复按钮,重新检测修复一回。操作完以后再去看看能不能打开报错的程序。如果解决问题 就请点赞、关注、收藏,以备不时之需。如果还未解决就请留言给我,看到必回,我们一起学习,一起解决!

电脑提示 d l l 文件丢失,怎么修复呢?首先是打开电脑浏览器,在顶部输入 d l l 修复工具,点 set, 按下键盘的回车键打开,点击下载 dll 修复工具,下载完成以后可以看到是压缩文件,需要我们先把压缩文件解压, 解压好了以后双击打开文件夹,然后再打开修复工具。进入修复工具以后,可以看到有检测修复按钮, 点击一下修复工具会扫描检测电脑系统缺失的 dl 文件,然后修复以及更新电脑系统的 dll 文件。电脑系统丢失 dll 文件或者 dll 文件损坏了,会导致很 软件跟游戏无法打开运行,像 ps pr, 吃鸡、英雄联盟等等。 dll 系统文件是电脑系统运行必不可少的文件,是动态连接软件程序跟电脑系统的桥梁,缺失这些文件除了软件游戏无法运行, 还会导致电脑出现卡顿、死机、崩溃、蓝屏等问题。修复工具在修复电脑丢失的 dll 文件的同时, 也会自动更新最新的文件,操作使用的方法也非常简单。当然如果是电脑高手也可以自己进去系统 boss 内部或敲代码修复。 今天早上打开吃鸡游戏跟 ps 软件无法进入,然后折腾了一上午的时间找到了这个修复工具,感觉非常好用,所以分享给 好了。修复好了,我先重启一下电脑, i have ps 软件现在可以正常打开了,我准备好好利用大学空闲的时间学习 ps 软件, 看到网上很多 ps 大神非常厉害,希望以后也可以成为 ps 大神。学校的选修课就由 ps 课程,我也报名参加了,一会还得去上课,就先聊到这里了,后面我把选修课的老师的视频也一起分享给大家。 part time 一百四十 d l l 是一个动态链接库 时运库的一些功能,这个库主要用于支持 c 应用程序的运行,当应用程序需要使用这些功能时,系统会自动加载 boxtime 幺四零 dll 文件。 bottime 一百四十 d l l。 优势的原因可能有以下几点,操作系统更新,在某些情况下,操作系统更新可能导致本矿态米四零 d l l 文件的版本不匹配,从而导致文件丢失。操作系统更新时,部分 d l l 文件可能会被替换为新的版本。如果新版本原有程序不兼容,就可能导致 foctam 幺四零 d l l。 丢失。卸载 visual c 加加,当你卸载 visual c 时,系统可能会 同时删除 dsoc 相关的运行识库文件。 ell 文件丢失。病毒感染计算机受到病毒感染时,病毒可能会恶意删除我看改系统中的重要文件。 一百四十 bll 病毒感染是导致本康泰冰四零 dll 丢失的一个常见原因。系统错误,系统运行过程中 如果出现错误,可能导致文件损坏或丢失。例如,系统错误可能导致磁盘分区损坏,进而导致否宽态。一百四十 dll 文件丢失。应用程序 冲突安装或更新应用程序时可能会出现冲突,导致 forcon time 一百四十 dll 文件丢失。特别是在安装或更新涉及到 visualc 加加编写的程序时,可能导致相关运行时库文件丢失。用户操作失误 用户在操作计算机时可能会误删或移动 for quantame 幺四零 d l l 文件误操作是导致 quantame 四零 d l l 丢失的一个常见原因。软件安装问题,安装某些软件时 可能会导致不宽态米四零 dll 文件丢失,部分软件可能会自带不宽态米四零 dll 文件,安装过程中如果出现错误,可能导致文件丢失。总之, 宽太一百四十 dl 丢失的原因很多,可能涉及到操作系统、应用程序、病毒感染等多个方面。要避免这个问题,最重要的是保持系统的稳定性和安全性, 及时更新操作系统含应用程序,避免使用未知来源的软件。在解决不宽 time 一百四十 dll 丢失问题时,需要仔细分析原因,并采取适当的措施进行修复。