粉丝871获赞4131
本期讲的是免费种植,当我们放置的植物将会扣减阳光,所以我们要找出更改阳光数值的汇编代码,右击阳光指针选择是什么?改写了这个地址,这里选择找出什么,改写了该指针指向的地址。接下来回到游戏界面, 选择一个植物种植,这个植物有前置条件,我们换一个。种植成功后,扫描到了一条记录, 点击查看会编代码,这句会编代码的意思是将 e s i 的值复制给 e s i, 加五千五百七十八这个地址上,这里的 e d 就是上期讲到的一级便宜的值,我们往上看 就会找到 e s i 的值,就是从异地加五五七八中取出来的,所以在这里取一放,中间肯定有代码。更改了 e s i 的值,这里就有对 e s i 的操作,这具会变代码的意思是 e s i 等于 e s i 减一 b p。 这里想要实现我们想要的功能有两种方式,第一种是改变会编代码的跳转逻辑,这里改成这么强制跳转就不会执行下面的代码了。第二种方式就是使用空指令替换掉做减法操作的代码,右击这条代码,选择控指令替换,点击确认。 修改成功后回到游戏,此时再种植就不会消耗阳光了。示意教程到此结束。接下来是编写程序代码,打开抑郁人,在右侧主键库中选择选择框,组键绘制到程序界面, 点击属性,找到标题属性填写免费种植。在属性上方下拉,选择被单击的触发事件,进入到代码编辑页面,判断选择框一的选中状态。当选择框一选中等于真的时 后,我们使用超级模块中的鞋内存字节级方法,鼠标旋停查看方法参数, 填写进程 id, 这里使用还原字解,即二 十六进字文本是九零九零复制这一段代码, 这里漏掉一个参数,填写内存地址, 切换到 c e 界面,找到刚刚找到的地址,右击选择第一个复制地址, 切换到异语元界面,使用十六到十方法转换静置 粘贴地 复制代码,粘贴代码 切换到 c e 界面,右击选择复制代码复制方式,选择仅复制字节代码,切换到预言界面,粘贴字节代码,删除多余的空行, 点击运行程序测试运行结果修改成功。本期视频就到这里。
ok, 大家好,今天我要重录一下 ce, 这个教程的步骤就是住家家,之前我看了一遍我之前录的,发现 之前录了这遍实在是讲的不好,这一次我决定重新讲一遍, 这次我觉得应该能讲的非常明白。呃,咱们先来看一看他提示有一些什么, 呃,健康是一个单数点数,这个呢?这个就是非常重要,不然你搜半天你啥也搜不出来。 附加进程类型选择单复列,嗯,搜,比如咱们先找一个吧,比如说这个单位选量是一百,咱们搜的 攻击九十六肯定就是他了,咱们右键找出什么,改写这个地址, 说有空啊,咱们再攻击一下,哎,发现是这条代码,是这条代码让那个雪亮发生更爱, 然后呢,咱们他告诉咱们这是一个公用来玩,那咱们可以看看他为什么是公用来玩。 右键这里有一个找出指定方的地址,有一个功能,然后咱们每个都攻击一下,发现他这里都有记录,就说明这个这行内码,他这个能把这个四个人的血量都给更改,咱们就可以分析,就可以 分析这四个数数据,然后右键打开,选中第一人,分析数据,先进窗口确定是确定,咱们来看一下啊, 看左边这个偏移,看这个偏移加零四,对应的是八七九八四九九四九九,这些都是啥呢?他是对应的是每个玩家的血量,八七九八四九九四九九,看着没 再看,这个偏移是十五的,偏,十五对应的什么?是 david、 avery、 hellokit, 这是四个名字,但是咱们, 但是咱们不能直接硬改,他不能直接你硬改那个一个人的血量之类的,因为他是个公用代码,你只要硬改一个,你会把其他所有人的血量, 那怎么办呢?咱们就需要汇编的指令,去让那个代码,去让那个去用汇编区分这四个人,让他做出个判断。就比如说啊,判断这是 咱活的,就判断他是咱活的,去干哪些事,需要这个代码运行什么?判断是敌人的那个运行哪些代码,就是这么个逻辑。那咱们会用到一个 既然有判断,就既然有比较的话,就是比,既然有判断的肯定有跳转,有跳转的话,那咱们 就用一个指令叫 cmpcmp, 是一个比较之。然后咱们继续观察这个,你观察,你看 零四八 c 十到这个便宜是十的时候,你会发现 david 和艾瑞克就是咱们活这两个人,他对应的是一,而还有和 kid 是敌人的,正好他还对应的是二, 这个咱们就可以把它当做阵营来用,但是他不一定一定是阵营啊,因为这个东西可以帮助帮助我们区分这两伙人。 咱们记下这个偏移,就可以通过这个偏移为十的这个数来进行汇编 啊。你看这是一一二二,这二对应的正好是敌人,而这个一对应的正好是咱们会因为他都是一对上,你看二是 help, 二是第一对,一是对比一, 咱们现在这个就可以关掉了,咱们已经分析出来了,你看他这里有个 movebs 加零四,而 ebs 加零四是什么呢?就是 ebs 加零四,就是这个就是雪亮。 再观察一下他在上一行这个这个代码的上一行代码,他是一个 ebs 减零四的值,负值到了 ex 身上, 然后下一行来嘛,又把 es 的纸复制到这个 ebi 加零四,也就是每个人雪亮的地址上,每个人雪亮的数值上。有这么个逻辑啊,那工具自动会变。 呃, cd 框架的爱玛珠入确定这个咱们先观察一下这个, 这个 allc 是什么意思呢?这个 allc 是分配内存的意思,因为程序没,因为没,你没打开一个程序,系统都是要给这个程序分配内存,内存是干啥的呢?内存是让程序的代码在这个内存里头运行, 你看代码是要在内存留的,运行内存,不是储存 airloc, 就是。呃,分配了二零四八字节的内存。 airloc 生命力分配内存的意思,他分配了二零四八字节。给了什么?给一个 定,咱们定义的 mumaawmem, 这是一个定义的名啊,这是随便改的, 把它分配这个 labs 相当于是注册的一个意思。你看这个我可以解读一下。 return, 返回 here 这里 return here, 返回这里。 这个东西啥意思呢?这个东西是原代码的意思,就是说原来代码什么,你看这边也有一个,而底下正好是咱们没有做新,没有做更改之前的代码,你看 有原来网的意思。还有这个就是退出,就是运行完这个东西之后退出的意思。一一 sit 这个解读完之后,咱们就可以在这个新分配内存的这个区域里头可以开始天津航代网 cmp cnp 就是比较的意思,咱们要比较什么呢?咱们通过这个表格可以看出来,咱们要区分它是一还是二,那么就要比较这个偏于十,偏于为十的, 他传过来判断他是一还是二,如果他是一,就比如说如果他是一,就执行无限写,如果他是二,就让他继续执行。原来在网上他继续搁那扣写。扔个道理。 中国号是啥意思呢?中国号是取当前地址的值。说,比如说你有个地址,你加上个中国号就代表的意思就是你取这个地址的数值,你看这不是一个地址吗?加中国号就代表取的是他这个数的, 如果不加中国号,他就是个地主。看看啊,看底下,我可以通过这样推算, ebs 加零四 是雪亮,那么通过这个 ebs 加零四,一边加零八,一边幺零四,一边 x 加十,那么 ebx 加十肯定就是那个咱们所谓的队伍就是一一和二二, 那么咱们就可以判断 bbs 加十,为啥十呢?这偏移就是十,他才对应上,咱们给他判断个几呢?判断他是否为一就是说一,不就是咱们有方,判断他是否为有方。 cmp 的下一行正常来说是一个跳转,高人一。 高人一啥呢?高人一是条件跳转指令,他可以根据那个 cmp 放下来一个标志位去判断,如果这个标志位他等于零,那么他就跳转还是不跳转?我查一下, 等一下啊,看一下 容易。条件跳转,如果先先往下写 高人一条件跳转,如果他这个判断出来这个队伍他不是一,那么他就干啥呢?他就跳转到原代码, 跳转原代码就是哪的跳转到这达跳转运行。别理他的东西, 这李子的东西就是原来代码的,原来代码肯定要让他慢慢在那先写,所以这个这个就是判断出来的一步,然后下一行就是写咱们的代码, mv 啥呢? 嗯?啊,不对,这是一个副职。副职给谁呢?给 eas 给他辅。为啥是给 eax 副职呢?这个待会注入之后,我带你们看一眼内存,就非常清楚 给他付为多少的 iclvt, 比如说随便付个九千,呃,九九九九,呃,括号 filo, 他是单服点,数值也加了九九九,也就是给 一个 eas 的直付成单付点为九九九九。然后呢,这个代码咱们就写成了, 我可以啊,现在看一眼在哪呢?变成辅助回编制插选器 条件转移指定格式标号功能,如果 gf 这个标志位他等于零, 那么就转至标号出执行,这待会在 c e 里头执行完之后,你们也都能看着这个,咱们给他保存分配到 ct 表里直行看, 盯着这个 ok, 你会发现他俩变了,他这是个跳转,但是他跳到哪去了?他跳到这个这嘎就是咱们给他分配的一块内存, 就是咱们这个 lc 分配的二零四八字节内存,搁这边分配,然后搁这边写上了咱们的代码,让他先跳到咱们那那段内存,先运行咱们自个写的东西,再跳下去。你看这边他又跳下去了, 他跳到哪去了?跳到这个狗玩屁的下一行。因为如果你就是说你搁这样运行完了,你就你一直搁这样运行,那底下都啥也没有呢,总不能让程序这样运行啊。所以你 运行完你的代码之后,你还得回到原来的位置,继续让他从这个继续往下运行,不然那个你不跳过来,他是会出 bug, 比如说崩了,因为他运行不了剩剩下的代码了, 咱们先回到这嘎观察去看,这嘎就是 cmp, 就咱们写的判断,一边加十等于那个逗号零四,判断他是否唯一,这底下就是工人一跳转,你看他跳到哪了?他是跳到这嘎达的,他搁这给你们下个断点, 让你们看着更清楚一下,我给他搁这断下来,你看我刚才说什么来着?就是说 zf 对高文艺,是根据 cacmp 传下来一个 zf 的标志, 标志符来判断,来告诉这个勾人意他是否要跳到这里,还是说不跳,直接运行这底下的东西,这边咱们度过,到这边发现他这个 gf 等于一这边, 而这个 zf 等于一,而在这个勾人意 更容易中, zf 等于零才是跳转的意思,如果 zf 等于一,那就代表不跳转, 如果不跳转的话,咱们一看就知道,不过发现他没有跳到这个,而是运行中间的了,而咱们再看这个 moveax, 四六一四一三四一零零,就是这步,就咱们的写的给一个 es 复制升九九九九,如果给他复完之之后, 你再看下一行,那把 ex 在这一步已经变成九九九了,而到下一步 ebs 加零四,又被 ex 又跟 ex 相等了,那么这一步也就能实现,咱 ebs 加零四是咱们的血量, 然后在这一步咱们就可以,咱们就是无限,咱们就是就就就有一些,然后咱们往下运行,这样跳下来, 这样运行,我给他又在这样断下来的,这样为啥呢?因为他是有四个人啊,他那行那把手机直行四次,然后这次,嗯,这样咱们就先超过, 直接带你们看他勾,他跳转的时候,直接带你们看这勾一跳转的时候, ok, 到这旮了,你会发现这个 zf 他等于零了。 为啥等于零了呢?因为这个 cmp 他判断他发现这个一边加十他不等于零一了, 他一他等于零二了,他就等他就是队伍二了,那么他这个传下来的 zf 这个标志标志服,他就是零,就让他跳转,跳转啥意思呢?你看你看,没有运行中间这行变态的带娃 直接让他运行原来的代码,这行代码就直接让他疯狂填写了,然后继续往下运行, 锻炼取消,回到教程里头看。对,你们可能还会遇到一种情况,我也解答一下, 就是说有的有的学生呢,他不是给 ex 复制,他是给 ebs 加零四复制,他是直接给这个雪亮地址复制为九九九了。 有的学生他搞不懂这种中间这种东西,这种跳转,他就不明白为什么把它变成 ebs 加零四之后呢?点确定这运行 他就他就不行了呢?他就不行了呢?你看孩子,咱死了呢,为啥那个都没有变呢?这个咱们孩 还是来这家观察,分配完之后来这家观察跳转跟之前一样,这个判断跟前一样,跳转跟前一样,这个就这样不一样。看好了,如果你在这一步的时候给这个 ebx 加零四复制为九九九九九了, 但是他等他运行到下一步的时候,这个 ebx 加零四又变成 eax 了,就相当于你这一步跟没做似的,因为在下一步他指着又被换回来了, 因为他植被换换,所以他这个逆行出来的东西才没有任何效果。 ok, 咱们。嗯,取消把这个带码改一下是 eas, 确定开始重新。 ok, 这咱们就成功了。 呃,学会了吗?嗯,学不会。在评论区留留一下言,我给你们解答。 ok, 拜拜。
本期视频讲的是后台运行,当我们玩游戏的时候,如果说我们想做其他的事情,让游戏自动的在这里运行, 那应该怎样做呢?首先游戏里面是没有这个功能的,也就是说当游戏运行的时候, 我们点击到了其他的界面上,游戏将会被自动暂停,那我们今天想要的功能就是通过修改会变代码实现后台运行的功能。首先讲一下游戏的状态,无非就两种,第一种是游戏运行的状态,第二种是游戏暂停的状态。 游戏的状态只有两种的情况下,那游戏的本身应该会用更早的数据去储存这个游戏的状态,也就是游戏状态的 值。所以说我们要搜索的数据类型应该是字节型。我们假设说当数值是零的时候,游戏正在运行,当数值是一的时候,游戏暂停,那我们做了这样一种假设以后,那我们可以用于去搜索,同样的我们也可以用其他的方式, 游戏暂停开游戏运行之间,那我们可以用模糊搜索,也是可以的,当前使用联合仪去搜索, 我不知道假设成不成立,有可能是一次就成功,也有可能是我们需要假设很多次,当前游戏是暂停的状态,我们去搜一 点击再次搜索。数据有很多,这里有, 我们需要设置一下热键,那在热键里面有一个再次扫描精确数值,那把它的热键设为 f 一,点击确定以后, 修改要搜索的数字是零,然后我们进到游戏里面去点 f 一进行搜索,经过反复的搜索以后,把数据筛选一下, 那现在还有一千两百多条,让我们再次点击到桌面,让游戏进入暂停的状态,我们再去搜索一, 还有九十多条,那我们再回到游戏做一些其他的操作,然后再切换出来,然后再去搜索一,那现在还有八十 十多条数据,我们现在就要用排除法去排除一下,那比如说零开头的前三个一样的数据,我们都认为它不是我们想要的数据,只要有相同的一组数据, 那零 a 是你没有重复的,但是零零开头的一定不是,我们先把零开头的删掉, 零二七零二九 zero d for e 一百二十八,那幺三二就可以保留 p 三八,那一五四可以保留 one hundred fifty six fifteen eighth, 然后 f d 删除,那我们得了这么六个地址,那我们把这些地址拿下来,然后把所有的地址进行选中, 全选所有地址,点击空格键,把所有地址选中以后数并且锁定,然后我们点击继续游戏,那发现当前的游戏就无法正常的运行,那也就是说当我们对这六条数据进行锁定以后, 游戏不能改为零的状态,就会影响到游戏的正常运行。那我们筛选一下,首先把前三个解除锁定, 我们看一下游戏还是不能正常运行,那也就是说前三个对游戏没有影响, 然后这三个,那我们把前两个解除锁定,游戏还是不能正常运行,那前两个也是也不会对游戏产生影响。我们看最后一个点击锁定, 那也就是说最后一条影响了游戏的暂停,那我们点击什么访问的这个地址, 点击继续游戏,当我们继续游戏时候产生了一条记录,这条记录是因为游戏开始了产生了一条记录,而我们需要的是游戏暂停的时候,所以我们点击到游戏以外的界面, 产生了一条新的记录,我们点击显示返回边,就是说当游戏的状态发生变化以后,这里执行的代码是把当前的这个零幺这个值保存到对应的,我们刚才选中那条地址上, 那也就是说在这里做这个操作的时候,是做了暂停的操作,我们点击调试设置断点,回到游戏里面, 然后切换到游戏界面以外,执行这个暂停游戏的操作, 那现在游戏就被暂停下来了,那我们看到给他做了一个复制的操作,那在复制的时候,我们就可以通过这里去找他的返回返回地址,点击第一条返回地址就找到了这个。靠, 那这个 co 就应该就是执行暂停的 co, 我们可以下一个断点做一下尝试继续游戏,离开游戏界面,游戏被断下来了,那也就是说这个 co 会让游戏进入暂停的状态, 可以看到上面会有一个跳转,那如果说我们强制让这个跳转 进行跳转的话,就不会执行这个 call, 点击运行继续游戏,现在是成功的,但是 现在有一个问题,当我们在游戏里面时候,明显游戏是有背景音乐的,当我们退点击到外面以后,游戏正在运行,但是没有背景音乐,那就说明修改这一个跳转 并不能完整的达到后台运行。如果说我们不需要声音的话,其实在这里修改已经可以了,就改到这里已经可以了,对吧?如果需要游戏音乐, 还要往上的上层去找,到底是哪里 把游戏的声音关掉的。首先我们要把代码还原一下, 那还原好了断码以后,同样的我们还要在这里再下一个断点,那这里有一个断点断下来以后,我们去找他的上一层,或者是说我们 直接找他的上一层,那上一层是在这里,我们可以在这里下一个断点,点击运行,然后我们点击继续游戏,当我们点击继续游戏的时候,游戏又被断下来了,那就说明这一个 co 里面执行了两个功能,一个是游戏暂停的功能,另一个是游戏运行的功能, 也就是继续游戏,当我们点击继续游戏的时候,它也会暂停下来,那这个时候这一个 color 里面它就包含了两个功能,所以说这里就不是点击运行,那同样还是还是会断下来, 因为刚才我们的鼠标已经切换到了 c e 的界面上,那我们再次点击运行的时候,就会发现当前的这个地址呢? 就到了我们暂停游戏的这个 co 里面,那我们在这里下断点,在这里可以使用 book 的方式找到它的上一层到底在哪,在这里找到了,那找到了,也就是 co x 是它执行暂停游戏的这个方法, 那其他的地方看它一块就执行了这一整串,可以看到它是在 j m p 跳转以后一定要执行的, 那我们找到 j m p 跳转上面的这一部分,那也就是说这一部分, 对吧?那如果说这里的跳转不不执行 跳转不会跳到这里来,那也就是说我们把它使用空指令替换以后,那么他一定会执行到这里,然后强制跳转,跳转到这里,这一段代码一定不会执行, 也就是做游戏的暂停不会被执行。测试一下,点击运行,点击继续游戏, 然后这里把这个断点给取消掉,然后我们点击前进,跟到刚才的代码里面,现在的话游戏既有声音 也不会被暂停,对吧?那我们点击空格暂停一下,我们编写语言代码,那首先我们找到刚才修改的代码,打开语言 要修改的话,我们首先焊之前一样添加一个,我们可以复制选择复制,复制一个单选框, 修改组件标题,修改组件名称,然后双击,然后现在我们复制上一期的代码,复制地址看一下,地址是在这里转到地址 一九,然后我们的还原代码是九零九零,然后我们的还原代码是九零九零,那我们还原一下原来代码是七四四零,七四 四零,对吧?我们可以直接点击复制,复制仅地址仅次解无地址,然后粘贴修改代码中的主线名称, 应该是后台运行,点击运行好测试代码,后台运行 好修改成功,感谢观看。
大家好,我是郑一,那么从今天开始啊,我们来讲二零二三年的最新的易语言内存逆向系列课程的第一课,游戏数据交互的原理以及啊熟悉一下 c e。 呃,那么这部分课程啊,是我们整套的内存课程当中的下部分啊,上一部分呢是我们讲的是 啊一元乐玩涂色讲,呃,已经讲解完成了啊,前面我已经是发过很多的课程, 那么从这一部分开始,我们更新下一部分内存部分的课程,大家可能都知道啊,我们做的课程呢是细节是比较完善的啊,是非常完善的,所有的这些框架啊,还有一些这个实际的操作啊,都是完整的 好。呃,那么我们不多说啊,这个这一部分呢,同样呢也是在实际的操作过程当中带领大家去把这些知识点呢,把它啊学会, 那还是按照我们目前的一个学习方式,以前学习呢,可能是会把这些会编的代码前期呢先给大家通通的讲一遍 啊,然后呢再进入一个查找,但是我个人感觉啊,呃,这样讲的话,可能大家把一些会编的基础命令认识之后,可能 也是记不住啊,因为大多数都是这样反应的,那我们不如说在这个逆向的过程当中发现这一段代码是我们需要的,那我们把这段代码呢详细的进行抛 剖析,剖析讲解,在讲解的过程当中呢,我们也把这些会编代码就把它记就把它记下来了啊,这样更加的深刻,大家学习起来可能就 嗯不会那么的浪费时间。同时啊这种方式我是个人是比较认可的,说有一些会编代码,说你前期可能啊,讲了三十个,四五十个的,这样会编代码可能你用了啊,一周左右的时间你全部都记住了,那你当你在吸收别的知识的时候,嗯, 你就忘记了啊,你是记不住的,所以说就采用这种方式,我们把这个数据分析的时候,把这些数据都分析,分析的时候出现了这些,包括二查数啊,列表啊,还有一些这个普通数组啊,这些都讲解一遍之后,他自然而然的这些绘本代码里边 就有我常用的这些基础会编命令,所以说在剖析这些这个数据的时候,自然而然的就会讲到了,然后我们再用代码把它这个进行一些功能的实现,这样是一定可以记住的。 好了,那么我们就正式进入今天的课程,数据交互的原理呢,大家要懂第一点,所有联网的软件,网络游戏等啊,所有联网进行联网的软件,那 包括网络游戏,接下来我们用网络游戏啊做称呼啊,不仅是他啊,只要是联网的都是这种形式啊。 客户端啊指的是玩家本机下载的游戏与服务端,那么服务端呢?就是游戏公司的服务器, 我们为什么要把这个游戏下载到本机啊?那么他就是客户端,然后,呃,游戏公司的服务器呢?叫做服务端。像你打怪一些升级了,说你我在这个本机下载的游戏,我砍了十个怪升级了, 那你这是需要与游戏公司的福气去进行交互的,他反馈给你客户端说告诉你可以这个升级了,他就给你这个升级啊,就是就说客户端与服务端他是要实时进行交互的, 那他们两个的通信都是用封包进行通信,那什么又是封包呢?这里又产生了一个问号,又产生了一个疑问,说客户端与服务端 通信都是用封包进行的,那封包呢?记某种协议组成的一段字阶级进行, 那这里又产生了一个协议,说某种协议,那在这啊,我们稍后会有解释。首先通信都是用封包来来进行的,那这个封包又是什么?大家可以想象成两个人打电话,那么封包呢?就是说话的内容, 说 a 给 b 打电话,那么他们两个中间说的什么话呢?就可以看成是封包,就说客户端与服务端,客户端通过这个发包函数发给服务端的时候,他们两个这个内容就是一个封包, 那封包是某种协议组成的一段字结集,那这个协议又是什么呢?协议可以看成是封包的余种, 那两个人打电话还是用这个例子,两个人打电话,一个用中文,一个用 英文,那这样可以吗?就说一个会中文,一个会英文,他们两个是交流不了的。所以说啊,你告诉这个,呃, a 与 b 打电话,你告诉 b 说你用这个中文, 稍后我给你打电话,你用这个中文来给我沟通,来与我沟通啊。打电话的时候这两个人都用中文,是不是他们两个就可以这个相互听得懂啊? 对吧?那这就是一个协议,协议呢?总结一句话,就是可以看成是封包的一个鱼种是用,用什么?这个,呃,用什么鱼种来进行一个通信啊? 总结一下,联网软件客户端和服务端通过约定好的协议用封包进行通信。上面这第一点呢,讲了什么是封包,然后又什么是协议,还有客户端与服务端的一些知识。 好,第二点,网络游戏的代码的执行流程都是在本地计算机,这句话可能说的比较多啊,字体可能比较多啊,我用一个简单的就直白一点的这个啊,讲解吧,可能大家更容易理解啊。我们用一元来举例说,我们写了一个这个, 嗯,显示时间的一个软件用一元来写的,那你在写这个代码的时候,你是不是需要把这些代码都添加到一元当中啊?我们打开一个吧,我随便的打开一个啊。 好,我随便打开这个原码, 呃,我们用这个全部暂停下边。这个,呃,代码 来举例说我们点击了全部暂停,那你想要这个功能,是不是就把这些代码你都要写在这个软件里边?我们静态编译的时候啊,是不是都编译在里边了?然后你发给用户使用的时候,实际上这个代码在哪?是不是就是 在用户接收了你的这个软件内?那么游戏呢?游戏的客户端,你下载的这个游戏,你就可以把它看成是一个大型软件啊, 对吧?他大型软件的代码是不是都在这个客户端内啊?那我想要想要找他的一些功能,是不是我们附加 ce 或者这个 od 就可以找到他的一些功能?靠, 因为有一些功能我们是写在这的,是写在这个软件内的,对吧?但是一些重要的数据它是不会 呃,他是呃,需要这个实时的去呃与这个呃服务器进行通信的啊,这点要说明,但是大家要理解说我们为什么说网络游戏的代码执行的流程都是在本地计算机把这句话理解,那就是因为这点, 因为本地的这个游戏的客户端呢,你可以把它看成是一个大型的软件,因为这些一些功能的代码你都是写在这个软件内的,对不对?所以说你会找到他的一些功能,靠,说我全部暂停,这就是一个靠,这就是一个功能。如果找到这个 call 的时候,那我一调用是不是他就执行了全部暂停?无论是这个 e e, x e 的程序还是游戏的这个,那么它底层呢?都是一个呃,当你用这个 o d 或者 c e 的时候,它都是一个底 层的代码,就是会编代码啊,这点要注意,就说你这个,它在会编显示呢,就是一个 coul 的形式,这个子程序。 好,那么大家理解了,这个网络游戏呃的代码的执行流程都是在本地的计算机,那知道这个了,就说有一些功能卡,我们附加之后就可以找到他的一些啊那功能, 那通过逆向分析获得代码,获得游戏功能 car, 我们在调用 co 实现对应的功能,这是刚才我直白直白的讲的 靠的一个调用流程,那这也有必要说靠的一个调用流程功能,靠,然后封包,靠加密封包,然后用这个发包函数进行一个发包, 这个发包函数呢?还区分呃直接发包以及现成循环发包。这个后面我们会讲的啊,会讲的, 上一套课程也讲过这个跳出循环法包,三十二的,六十四的已经讲了很多个游戏啊,好,你先记一下他的这个流程,因为这节课是一个啊数据交互的原理,说知道我们在游戏公游戏当中的一个动作, 可能说,呃,我们用这个单机游戏来视力啊,说我想要一个跑动的一个动作,可能是鼠标的一个,呃,鼠标,鼠标键盘的一个动作,然后呢?会有一个这个,呃,这个不,不漏出不漏出来啊, 可能会有一个功能靠,然后呢?呃,功能靠呢?封包,靠,然后再把这个封包进行加密,因为大多数的这个网游啊,他都是这个加密的封包,不可能说一点这个不加密的啊。呃,然后用这个发包函数发送,把这个数据包呢发送 给这个游戏公司的服务器啊。好,直到这个流程。然后我们再来看第三点啊,也是刚才也讲过啊,功能康呢,就是相当于一元中的一个子程序,十一中的函数刚才设立的时候全部这个暂停的时候,那是一个子程序,对吧?嗯, 他你用这个 c e 或者用这个,呃, o d 或者叉 d bug 啊,附加之后啊,他最终展现的就是一个会变代码 co 的形式啊。啊,在高级元当中, c 中呢,他叫做函数 数据类型,这一点也要注意说我们写一个亿元程序的时候,中间会用到很多的数据类型,还有一些这个啊,变量的数据类型,对吧?那么一样的游戏他就是一个大型程序,程序中又会分为很多板块啊, 一元叫做自定义数据类型,高级元中叫做类,如人,人物的一些基本信息,人物类背包的一些信息背包类都包含着不同的数据类型,这个吧,第四点你尽量的去理解就可以了,如果你看过我前面的那个自定一元的自定义数据类型,到这你就理解了 啊,也就说啊,不仅是常用的这个数据类型,还有一些自定义的数据类型,就这一个类啊,这个到我们分析一些这个涉及到这个类的数据的时候,我们会啊,讲的啊,会讲的, 那这几点啊要去理解,然后啊,我们接下来就来熟悉一下这个 ce 啊啊,我开了两个啊,一个英文一个中文啊,后面课程我们用这个英文的啊,开中文的目的呢?是让大家做 下对比,说我看英文啊,刚打开的时候我不知道他是做什么的,那我们就可以用这个再开一个中文来看。首先我们来看呃,这个左上角的这些菜单啊 文件,然后有新建扫描标签,清空列表,打开进程保存,另存为这些熟悉就可以了。编辑,这里还有个设置,点击设置,然后 右上角这这个图标下边也有个设置,点击他,他们是同等的效果啊。编辑,然后设置,还有菜单显示,呃,辣椒本,创建窗体,添加文件。第三 d, 这还有个帮助,都可以看一下,还有这个教程 大家可以看啊,如果说你是非常初级的一个小白,一点 ce 都没用过,你可以玩一玩这个教程啊,可以去看一下, 然后下边还有这三个小图标,这个是什么呀?这个就是选择一个打开进程啊,选择一个应用程序给它打开, 然后这是啊,打开实体表和未受保护的这个,然后这是保存你当前目前的一个数据,这些后面我们都会讲解啊,点击一下这个设置,点这设置也可以点击这个编辑,这设置也可以啊,默认就行了啊。我给大家看一下我的设置,因为接下来的设置呢,是针对于这个单机游戏的啊。 好,看一下工具,这你们我每个界面啊,都给大家看一下,快速的看一下,你们跟着来, 照着来做啊,跟着来做常规设置,这这些都勾选,然后仅在标签的时候,这些都勾选啊,仿照来这个来设置,还有工具,这这个勾选热键 这些,这这这些都是无所谓的啊。禁止随机。这扫描设置,这扫描设置,这要看一下啊,默认开启快速扫描这两个,然后在这这些都勾选插件没有啊,插件没有,没有添加 语言,这你可以反选择这个英文啊,但是咱们就用中文吧。调试器选项在这设置的是使用硬件断点,这个要进行设置啊,然后这些使用 windows 调试器, 如果说你不是用咱们的这个单机呢?你用你的游戏呢?你用 windows 的调试器不行,那你就用这个 v e h 的这个要跟你们说,不是说非要用这个的啊。好, 然后点击下这个 log, 这些你们都去。呃,基本的照着做就行了,那下面再再讲几个知 知点啊,二 d 游戏与三 d 游戏,二 d 游戏呢?大多数的这个数据啊,他都是用这个二 d 或者二点五 d, 呃,大多数他都是用这个整形,比如说啊,人物的血值,还有现在的这个是, 这个是快捷栏啊,快捷栏,快捷栏显示的这些红药以及蓝药的数量,二 d 或者二点五 d, 那么常用的他就是一个用整数型来表示这些数量 啊,那如果是三 d 的游戏呢?他的血值或者蓝量啊,还有这些数量,呃,他通常用浮点型啊,坐标啊, 人物的一个坐标,三 d 游戏的一个人物的一个坐标,还有一些其他的数据,他常用的是浮点型啊,就是说你们就记住就行了。说我们三 d 游戏大多数常用 用的是用浮点型,他的坐标啊,然后这些呢?他都有可能用浮点啊,然后我们二 d 或者二点五 d 的时候呢啊,他的坐标,呃,常用的是整形,然后这些呢?都常用的是整形,整形在这是如何表示呢?再看一下右侧这新的扫描,再次扫描,撤销扫描 啊,精确数值值大于值小于搜精确数值,那么比如说啊,我们这有一个五,那我就搜五,这是精确数值,对吧?然后你还可以其他说值大于,介介于两值之间, 然后减少的数值是数值增加了。先去熟悉一下,后面我们都会用到这些类型进行扫描啊,先熟悉好,我点击一下新的扫描啊,之前这个是扫描过,下面还有个 数值类型啊,二进制字节啊,二字节,四字节,八字节,单双浮点,这些字节,数组字符串等等这些都去熟悉一下啊,这些勾选呢,都跟着来勾选一下啊,我们先来简单的附加一下 附加这个单机啊,单机游戏啊,附加。然后我用这个红药先来做视力,他是一个应该是一个二点五 d 的游戏啊,他不是三 d 游戏啊,好,我们就按照整数形来搜索啊, 这个数量啊,红药数量这里显示五,对吧?四字结呢,代表的就是一个整形。好,我们点击首次扫描,他有了这么多,那我们就吃一个药,他变成了四个,那我们点击四,就是在这些扫描到的数据的基础上呢,我们再次扫描,在这里边去筛选, 看哪个变化成了四,再次扫描,所以说他叫做再次扫描。好,那我们很明显这个不是他变成了六了,对吧?目前来说他还是四,所以说把它删除啊, 那我们就可以把它脱下来,脱下来之后双击这个数值给他改一下,看能不能给他变动,改为六,他没有变啊,血脂一般是不能变的,因为这个血脂要变的话,你不是无敌了吗?所以说他这些都是属于重要数据的啊, 那我们可以再吃一个,说吃到三,看他会不会这个变到三,跟着变到三确实是变到三了,那这个就证明说是我们血值显示血值的一个 显示血值。好,那么这就是一个简单的一个小试牛刀啊,先熟悉一下这个 c、 e, 还有些其他的说这些还有这些 都可以去熟悉一下,说我有一定的基础了,那你可以就向上追一下,提前的去预习一下,因为下节课开始啊,我们就要啊,以这个人物的一些属性来作为一个切入点,进行一个查找,先提前的去预习一下,然后我们再用便利工具啊,再用一元来把它显示出来。 整套的课程啊,我们从这个模拟再到这个逆向,全程都是实际的操作,进行一个串联的啊,串联的不是说单独的说,我们用一个小按钮下边单独的一个靠进行串联,而是整体的把我们的框架进行一个 完整的串联啊,到这相信大家都听懂了,那么我们就不多说了啊,大家把这节课的知识点啊,基础的部分把它理解,我们下一节课再见。
大家好,这次我们先看一下这个汇编语言学习的时候啊,要用到的这个基本的工具,就是这个第八个这个工,因为我这台机器是那个问问时他这个在命令, 在命令窗口里面他没有没有这个第八个这个程序,如果是问十以下的那些那些些的话,问七好像就有,问七就有这个在这个运行里面我们打这个孔慢的,然后直接就直接就可以这个第八个, 因为这个我我这个是没有,如果是其他的问题以及以下的这个系统,他就会直接有这个命令,所以呢在问时里面他就要装这个,就就要安装这个都是 box, 都是 box。 然后另外呢还要进行配 这个是这个配置的工作,是还是还是有点烦的?首先要要要去下载这个,要要去下载这个软件,安装了以后就是这个都是 box。 那具体怎么配置呢?就是安装好了以后啊要要下载到 这个下载到这些命令第八格啊,或者说或者说 ad 特等等那那些命令,然后放到那个那个文件夹下面,文件夹下面这个具体怎么怎么去配置这个东西,这个网上另外有有有这个这个指导,比如 比如安装好了之后我们有这个这个文件夹,这个文件夹下面呢,他就有会有这些命令,就有。但是像这个这些这些这些命令呢,我们要另外在网上去下载,下载的这个时候 这有版本问题,他有的版本又不匹配,所以这个时候要慢慢去找,这个是还是比较烦的哈,就是最好的话呢,就是 我们在这里,在这里直接就就运行这个款慢点,然后就就可以使用这个第八个是最好的,就是 也就说你直接安装一个问期或者以下的这个系统,可以直接用了,直接用问八,问七问八好像都都可以啊,装装好了,如果是安装的话呢?这个在在这个都是 box, 这个这个文件出来,这个文件夹出来以后啊,他另外还有配置一个东西, 比如我这个,我我我这台电脑呢,提示要在这个文件里面啊,去去修改一下,就是 money 一下就是挂载,把那个目录挂载一下,就是安装好了之后啊,他其实只有这个,这一旁只有这个,这 没有 c 盘,什么东西要有 c 盘出来了,要有 c 盘出来就就要找到,按照他这个规定找到这个文件,找到这个文件的,然后我们在这里编辑一下, 那么在这里编辑一下我们这个打开方式,他就直接用直接用这个这个这个笔记本打开就可以了。 这个文件呢,他在最后要加这加这个两行,就是那个刚才那个那些命令啊,那些用到的这个命令我是放在这个文件夹下面的。这个第八个呢,我也是放在这里,其实都可以放一个文件夹下面跟命令这些,这些 就是就是用到的这些这些命令啊,我都把它放在这里来了,我都把它放在这里来了。所以呢这个没什么,宁可和 ad 的这些命 都放在这个文件夹上,所以加这个蒙特,蒙特这个蒙特这样然后就可以就可以就可以使用了。在这里这个蒙特命令的意思呢?他其实是就是把这个低盘,我们可以这样理解,就是这个低盘啊,我我我,我们在这个命令行,下面,你比如运行的加了这一句以后啊 我们看这个这个低盘,然后呢在这个低盘下面我们就可以直接直接用这个,为什么这个文件夹下面的这些命令 就可以直接用了?也就说这这一句话,这这个这个挂载这个意思就是什么呢?把这个这个盆服当做这个文件夹来看待。就刚才讲的那个猫头命令呢,其实也可以直接在这里,在这里用这个退出来,这个前面呢他我们安装好多次 book, 是以后他这个提示, 不是这这他没有装,安装之前这个挂在挂在用 money 命令挂在之前呢,他没有吸盘底盘,我们可以直接在 z 的下面直接输这个, 比如,比如地方这个这个他没有冒好,然后这里有的冒好,这样也也可以这样,这样也可以这样挂的,就是这个把把这个首先这个 m 这个这个文件夹下面呢,你要把那些命令要迪巴给啊, m, a s, m, a, d 特等等这些命令要要要先放进,这样挂起来也可以用。
论用 cc 佳佳做出植物大战僵尸 ce 找机指加修改器是一种什么样的体验?给个思路给各位小伙伴们。每个程序打开后,他们的数据的内存地址都会改变,但他们的静态机制和偏移不会变,关于 获取的是静态机制,所以就算是关闭了游戏再开启动,地址也是不变的,也可以修改。所以我们用 c 找到他的静态地址和偏移地址,再用 cc 加加里面的 red pross marry 和 reposs marry 进行修改就可以了。下面 用图片解析,用 ce 找植物大战僵尸向日葵产生的那个酸帅。首先打开 ce, 选择植物大战僵尸,如下图所示,然后搜索第一次值幺五零,搜索完后有很多数据,先不要管他,先种一朵花,花掉一百点,这时我们可以看到一个数据变化, 随后我们双击那个内存,然后在下面那个框里面右击,然后选择紫色框,随后我们找到这数据的详细信息,然后记录他的偏移地址。凌晨五千五百六十和要查找 地址的可能值一万一千五百六十五 ea 零。接下来我们查找这个值幺幺五六五 ea 零,如下图所示。查找后经过筛选,发现地址为零乘二十七 f a 七六零的地址与游戏数据三上有关,我们记录下,如下图所示,偏移地址为零零 x 七 八,要查找的地址指针可能是零二七 f 九 f f 八。接下来我们查找这个地址,零 f 零二七 f 九 f 一八。我们找到一个绿色的静态机纸, 绿色显示的是静态机纸,如下所示,我们现在分析下这个静态机纸经过两侧偏移是不是就对应了三晒?我们发现这个机纸经过第一次偏移凌晨七百六十八和第二次偏移凌晨五千五百六十后,在地址凌晨一千一百五十六万八千四百,地址里 的值是五十,正好对应,所以我们已经找到了这个静态机纸,小伙伴们可以修改尝试。所以如果我们要做修改器,我们理一理思路,由地址零 f 零零六 a 九 f 三十八里的值加零乘七百六十八后是个地址,这个地址里的值加零乘 五千五百六十,就是存储三扇的内存单元,所以我们 cc 加加代码如下,因为代码比较简单,遇到不会的函数可以查百度或者 csdn, 在此不再详细说明。原码里面有注视代码如下, 运行结果如下图所示,因为获取的是静态机制,所以就算是关闭了再开也可以。
总有人说,有钱了我就买套房,有钱了我就买个车, 再年轻十岁我就去追那个女生,再年轻十岁,我一定努力学习,没有钱可以去赚,但你却无法回到过去。 这节课我们就来介绍一款可以让钱变多,让你变年轻的工具, ce。 ce 是网络安全数据分析的一款重要的工具, 那么我们可以在官网下载他的最新版本啊,也可以呢使用课程给大家准备的这个推荐的版本啊,都是可以的,那么他们的用 法呢是大同小异啊,只有一些细微的差距。 那么我们下载完 c 之后呢,把它进行一个安装,安装完了之后呢,会有这么多的文件, 当然啊,这个如果说用一些嗯其他的版本的话呢,可能文件会非常的少啊,甚至呢只有两三个文件啊,都不影响我们使用。然后呢官方的这个版本,我们打开之后 是这样的一个界面,那么在他的下面啊,就是说当我们第一次打开这个 c 的时候呢,他还会弹出这样的一个窗口,这个窗口我们点下一步,那么他 是一个 ce 的一个教程啊,包括呢,我们现在打开的这个程序呢,他也是一个啊, ce 的一个例子啊,我们可以呢去附加他,然后去调试这个血量啊,可以看到这个血量是可以改变的 啊,当然这个东西呢,对我们来说没有什么意义啊,有兴趣的你可以去调一下 啊,我们主要呢去调试咱们家里面用的这个有这个小游戏啊, c 打开以后,我们点击这个位置 啊,当然有的, ce 呢,可能啊做了一些改版,这个东西没了啊,然后呢把这个呃,把这个放大, 放到了这样这个位置啊,反正就是找一找啊,总能找到这个附加进程的一个按钮的。那么点击他,我们选择我们的一个进程名 啊,就是这个金城名,然后呢去点这个 open 或者是双击他 啊,都是可以的,这样呢就附加了啊,成功的附加了这个进程,可以看到上面的这个位置呢有一个进程名,但是 啊由于是这个汉字,他的一个编码啊,编码的一个啊情况啊,导致呢 这个位置出现了一个论码啊,那么不要紧啊,一般来说呢我们调试的程序呢,他都是英文的啊,就不会出现这个情况了,嗯,这样呢,也不影响我们去进行一个调试。 好,那么我们来看一下整个的这个 c 窗口呢,他有很多的按钮啊,还有呢很多的这个小的窗口,左边的这个窗口啊,我们把这个窗口呢啊啊里面存放的是他的一个扫描的结果, 然后呢这个位置有一个进度条啊,当我们扫描一些大型的啊这个程序的时候,我们可能会扫很长的时间,那么这里呢他的进度条呢会一点点的去增长啊,增长到满了以后啊会重新的变成灰色。 然后这个位置有一个首次扫描啊,这个位置呢是再次扫描,然后这个呢是返回啊,就是说撤销上一次扫描 啊,就是说比如你点错了啊,点多了,那么在这这里呢可以撤销一次啊,但是呢只能撤销一次,他不会给你存太多的东西。 然后这里呢就是我们写入要扫描的数值的一个位置,比如说我们要扫描一千 点它好,这样,然后呢点这个 new skin, 它就会清空啊,重新的进行一次扫描,然后这里呢是一个再次扫描,我们点它的话,那么这里呢会进行一次过滤, 然后呢如果点他的话会返回上一次 这个位置是一个十六进制啊,我们点 他的话呢代表后面的值是十六进值的。一般来说呢,我们扫描地址的时候呢会用到这个东西, 然后呢左边的这个结果的这个窗口里面上面显示的是当前扫描到的结果啊,一共是五十五个。然后最左边的这一排 存放的是他的地址,我们可以看到啊,有白的,还有绿的。然后这一排呢是当前的这个地址里的值, 这一排显示的是上一次扫描的结果,然后呢我们会发现啊有的位置呢可能会变红,变红呢说明他发生了改变,嗯又变回来了啊。 然后呢右边的这一排呢代表的是我们的首次扫描啊,就是说我们第一次扫描出来的结果是多少?这里呢会始终呢为我们进行一个保存 好,我们把这个扫描给它关掉啊。然后呢我们来看一下它扫描的选项有哪些?首先这里 这里呢有这么五个选项,第一个选项呢是精确扫描,就是说我想扫一千, 那么他就给我们出一千啊,给我们出一千的这个结果。然后呢 第二个是比谁大,比如说呢我们想扫描比一千大,那他出现的结果呢就都是 大于或者等于一千的, 我们来看一下这里有没有等于啊?嗯,是有等于的 啊,这里是仅仅呢是大鱼啊,没有等于,他会把这个等于一千的给过滤掉的,刚才那个是恰好变成了一千,然后呢这个是小鱼啊,小鱼呢也是一样的, 那么没有小于等于,所以说呢啊,他就不会显示等于一千的这个结果。 来看一下啊,零呢也是小于的嘛,对吧?有很多, 然后呢这个是两者之间, 两者之间,比如说我们扫描一千到两千, 好,他会出现这么多的结果啊,那么这个结果里面我们来看一下他有没有一千 啊?是有一千的,然后呢我们再次扫描一个一千到两千啊,这个一千还是在里面的,那么也就是说呢,这个两者之间呢,他是包含了一千和两千这个本身的, 然后呢这个下面当我们扫描了一次之后啊,扫描了一次之后,那么我们的下面呢就会出现一些新的选项,比如说这里 这个代表的是增加的数值啊,就是说你这个数值比原来大了,那么他啊过滤的话啊,就会把这个增加的数值呢给他留下,其他的过滤掉。 这个呢是增加了多少啊?这里呢还可以按百分比去增加啊,或者呢是直接啊,就是说增加了多少,这个用的比较少,一般我们用这个,然后呢这个位置呢是减少的数值啊,跟这个是恰好相反的, 这里呢有一个变动的数值啊,就只要这个值发生了改变,那么他就会留下 啊,而这里呢是一个未变动的,我们可以试一下啊,他只会留下一个未变动的结果 啊,这最后的这个呢,你就不用管他了,嗯, 最后的这个呢是跟我们的首次啊进行一个对比啊, 然后呢我们再来看一下, 在这个扫描的方式的下面呢,我们还有什么,还有数据类型,这里呢一共是十种啊,十一种啊,这个扫描的数据类型,那么第一种呢是 二斤痣,这个呢是二斤痣,那么也就是什么,也就是我们扫描的这个二斤痣的一个位, 那么比如说我们现在呢,有一个拜特型啊,拜特型呢是八位啊,有一个这样的啊,幺幺幺幺啊,幺幺幺零零零零 啊,然后呢那么它里面的某一位呢会发生改变,那么这个时候呢,我们可以对他进行一个扫描啊,但是呢这个扫描的呃情况呢还是比较少的啊,几乎呢是不用这个二斤纸的, 如果后面我们遇到了类似的情况呢再说,那么第二个呢就是拜的型 啊,也就是一个字结,一般来说呢, bat 型,用来扫描等级啊啊,还有这个 扫描一些标志位啊,零和一等等的会用到它,这是这个 bat 型, 那么他的扫描范围呢就是零到二百五十五了啊,如果说二百五十六的话,那我们就需要用到二字结,也就是 word 型,那么这个二字结的下面呢,还有四字结啊,这些呢都是整数型的, 我们可以呢,呃,在扫描整数型的时候呢,去啊,任意的选择其中的啊,这三种啊,甚至呢还有八字结,但是八字结用的是特别的少的, 那么我们要考虑到当前的这个数据呢,它的长度到底是多少啊?你比如说呢,我们想扫 到一个啊,游戏的一个血量,那么如果说你用二字结的话呢,很有可能是不够的啊,因为这个血量有可能会超过这个啊,十万啊,二十万,那么这个时候呢,我们就需要用到四字结啊,四字结呢是足够的了 啊,再比如说呢,我们想扫描一个金币啊,一个金币,那么有的游戏呢,这个呃,兜里揣的这个金币呢,可能都得超过这个几十亿上百亿的啊,那么四字街也不够了,那怎么办呢?我们可以尝试一下八字街 啊,这个呢就是需要我们灵活的去运用了啊,当然呢,四字结我们同样呢也可以来扫描三十二位的一个地址,而八字结呢可以扫描六十四位的一个, 这些呢都是可以的。那么我们来看一下这个游戏的血量啊,看一下这个小游戏的血量,我们先走到能打怪的地方, 好来到这个地方,我们先扫描一个一切, 然后呢去打一下这个怪,呃,搜一个九百六 啊,这样的话呢可以直接得到一个结果,那在这里双击的话就可以把它拿下来啊,但是呢,我们看到 他的这个啊,地址呢是一个白色的说明呢,这个地址呢他是会变化的啊,我们后面会讲到,好,那么 这个整数形啊,整数形四节我们已经搜索完了,我们来看一下福典型 flow 的和大宝啊, flow 呢,它是一个单精度的小数, 那么 float 这个类型呢,我们想直接扫描一个精确的值的话呢,是不可能的 啊,我们可以看到,当我们扫描一千的话,你会发现这里边会出现很多的啊,九百九十九点几或者是一千点几,扫描一百的话, 甚至呢还会出现九十九和一百零一啊,这就是这个这个数据类型的一个特点导致的,所以说呢,那么当我们去扫描这个数据的时候呢, 你是没有办法呢,直接啊精确的扫描到这个这个一百的, 嗯,那么之前呢,我们用的老版本的 c 呢,是呃扫描出来的呢,呃是比较的少的啊,就是说这个九十九和一百零一呢,扫描的是比较的少的, 那么我们通常情况下啊,为了这个保险起见呢,我们扫描一个福点型呢,会使用这样的一个方法,两者之间,然后九十九到一百零一, 那么这样的话呢,我们扫描到的就绝对是九十九到一百零一这个之间的结果,他不会出现九十八点几或者一百零一点几 啊,这种方法呢,往往会用来扫描一些,比如说这个坐标啊等等的啊,这些小数的东西 啊,当然呢,这个两个精度啊,那么具体用哪一个, 那就看我们这个对数据的一个理解了啊,如果你觉得这个数据特这个要求的精度特别特别的高,那么你就选择大波 啊,当然呢大包他也可以用来存放一些,比如说金币 啊,我们用四字结装不下的呢,可能会用 double 去存啊,这个如果后面我们遇到的话呢,再说这是这个这两个类型啊, 那么下面的话呢,还有什么,还有这个字符串啊,还有字节级,也就是字节数组啊,所有类型啊,以及分组扫描, 那么这些呢,我们都放到后面去讲,因为暂时呢还用不到啊,我们目前呢只要了解这几种就可以了啊,了解这几种就可以了, 那么给大家留一个小的作业啊,就是说呢, 我们去找一下这个游戏的层数啊,就是这个 flow 啊, flow 找一下这个层数,看看能不能找得到,然后呢尝试呢对他进行一下修改,如何修改呢?在这双击啊改一下 会发现血量会发生改变,看看我们修改它之后呢会达到一个什么样的效果 啊?当然呢我们刚才说的这个所有的这个数据类型啊,我们 如果说都试过了以后啊,那么你没有找到这些啊,没有找到我们想要的这个值怎么办呢?那么在这啊还有一个什么未知初始值啊, 这个我们刚才没有说这个位置数值呢,就是在我们不确定当前的这个数据,他的一个数据类型,或者呢是他的啊,一个准确的数值的情况下啊,比如说这个数值呢,进行了一个加密 啊,或者是他进进行了一些其他的一些转化,那么怎么办呢?我们就用这个未知出示值啊,然后呢你可以用四字尖去扫描啊,然后呢去用,比如说变动的或者增加的或者减少都可以 啊,当然呢这个位置有一个奥是扫描所有的类型,所有类型,然后位置出水值,那这样的话呢,你扫描的东西呢,可能会非常 非常的多,你会发现呢这样的一个小的程序扫描的结果呢也有这么老多, 所以说呢这种情况,这种方法我们尽量不要用,我们采用的呢就是这种啊,一段一段的这种扫描啊,一个类型一个类型的进行扫描啊,这样的话呢才比较的快捷啊,比较的稳妥一些。 好,那么接下来呢,大家就可以自己去尝试用 c e 去扫描一些数据了, 这节课就讲到这里,再见。
有的时候啊,我们在开发调试,需要去分析一下 c 代码对应的会编代码指令,但是在 q 软件里面默认是不会生成会编代码的, 需要我们在魔术棒这里面做一下配置。在 user 这个页面,我们在 after build rebuild 这个下面可以新增一条命令 来看一下 from e l f 这是 q 软件里面的一个工具,然后是跟着参数杠杠 text 杠 a 杠 c 杠杠 output, 紧接着的是,紧接着的是会编代码文件保存的目录文件夹以及名字,我们要放在 abjects 这个文件夹下面,名字呢叫做 arm。 三 十二,点 d i s 最后是点 a x f 文件所在的目录,它是默认会编译生成的,在我们代码工程里面也在哦不 jax 这个文件夹里面, 这个文件包含了很多的信息,包括我们下载到单面机里面的二禁制数据调试信息,会编代码指令等等。其实我们在使用解令可去做仿真调试的时候,使用的就是这个文件, 配置好以后以编译 就生成会编代码文件了。
接下去我们讲解会编语言,第一个程序四点一, 一个圆程序从洗出到直行的过程,这个呢是第四章的内容, 一个原程序从洗出到直行的过程呢,我们主要呢 分三步进行,第一步编习会编原程序, 第二步对原程序进行编意连接,第三步直 行可执行文件中的程序。 我们详细的呢讲解一下, 第一步编辑原程序,这个我们通常使用文本编辑器进行,我们文本编辑器呢, 主要呢啊,从以前到现在,我们当前的这个严实的这个系统是温度实施, 如果在当时时代,那么他的编辑器是不一样的, 那么现在呢,我们通过记事本或者写字本来进行, 那么在 boss 写时代呢啊,这里呢,我的这个工具呢啊,调整一下字体啊, 这里有二十五号小屌, 这个需要呢,我们面对什么呢?我们需要面对您是什么系统, 那么在九几年的时候呢,他 是导师系统,那么就用 e d i t 点 ex 一一个应用程序,这个是编辑啊,成文本文件的一个编辑器啊,是通过这个进行的, 只需要呢在命令提示服当中输入 e d i t 呢就可以编辑啊,跟当时的 wps 呢这界面呢类似的,不过编辑的内容不一样,一个是成文本,一个是文档文件, 那么现在呢是温度,是时代系统为主,那么先温度是七当中呢,点击开始选程序,选附件,然后呢选这个计时本, 通过这四步呢进行,这温度是十,那么他是点击开始选择温度十附件,然后呢 在后面呢选择记事本 啊,调整一下字体,还要再小点, 这个呢我们需要注意一点啊,就看你是什么系统, 那么在我们这个课程当中呢,我们通过记事本进行,那么记事本怎么启动呢? 我们稍后呢再具体进去。第二步,对原程序进行编意连接 原程序我们要可咨啊,可咨询文件呢,包括呢两部分啊,这是形成他最 中的结果。在行程前第二步对原程序进行边一连接呢, 他首先呢要编辑成一个目标文件,然后呢再用连接程序对目标文件进行连接,生成可在操作系统中直接运行的可执行文件。 通过这两步呢进行完成对程序的一个变异和连接。 那么形成可执行文件呢,他包括两部分内容, 一,程序和数据二相关的描述信息,比如程序有多大,要占用多少内存 空间等。好看图形啊,看图形,这个图图中呢分三步进行,第一步先编辑圆程序。第二步呢 通过编意连接,然后形成可知性文件,而我们这个可知性文件呢,它里面呢包含的内容,程序有多大,要中占用多少内存空间 啊?主要有这么一些相关的数据信息啊,描述的信息,相关的数据描述信息,还有包括一部分程序和数据, 这是我们形成的可执行文件。然后呢如果要运行的话呢,就执行我们的这个 应用程序,在都市里面呢啊,称为可执行文件啊,我们可以执行我们的可执行文件。 在温度式当中呢,我们通常呢写三十二位程序的话呢,我们通常简称为它应用程序。在都市当中呢,我们简称它可执行文件啊,这是由我们会边语言形成的可执行文件, 他的类型呢是点一 x 一,好,我们看下面 四点二,元程序程序,立体程序,四点一,我们这里呢来对 这个圆程序呢做一下说明, 首先呢是为指令,一为指令,为指令指的是哪一部分呢?为指令,我们这个红色框框起来的部分呢,都是为指令, 这个呢由边翼器执行,不涉及到呢我们的中央处理器, cpu 啊,圆程序中的程序, 这个呢是会边指令红色框框起来的部分。 三、标号, 这个是标号,这个标号呢是一种自定义的任意字, 你可以制定你形成的一个标号,由字母最好呢由字母组成,或者前面字母后面数字,字母加数字也是可行的, 这个编号来自于呢我们断的一个定义,或者说断的一个声明, 然后呢产生出这么一种标号,还有呢程序的返回,于是这个呢 我们会变指令执行,到最后呢,我们要返回系统的连续命令。 根据原程序的说明呢,我们下面呢在一一的对这六个 内容呢进行介绍,刚才所讲的为指令程序中的程序编号,程序的返回只不过是我们这个原程序四点一啊,可以认为这个程序的组成部分呢,有这么四种, 那么我们再来看一下,具体呢,我们再了解一下原程序的六个方面。
大家好,欢迎来到微城网络安全,我是讲师 melock。 呃,咱们这节课呢,来讲这个 detours cool 啊,我打错了对吧打错了, 呃,这是一个微软的一个,嗯, 应该是这样拼的吧,搜一下啊,这是一个微软的一个裤啊,然后呢,他 比较适合调用像这种 com 类型 com 组建类型的这种啊适合获客这些东西的时候啊, 大家最好用这个他微软官方给的官方给的这个库啊, 我们先来了解一下这个库啊,它主要就是用作户口的,我其实我们用我们之前之前我们还讲了另外两种方式,对吧,一个是我们自己手动的去写啊,还有一种就是我们通过一查 啊,一场那种,嗯,其实是最好的啊,但是呢,嗯,没有给大家仔细讲,因为涉及到一些啊内核的东西啊,所以说先没给大家讲啊,之前我记得在天龙项目里面的那个提取露啊的 时候用到了啊。嗯,好,那个方式呢,是最好用也是最嗯,最高效的啊。那这种 detours 控呢,更适合这种 com 组件类型的啊。 嗯,其实都行啊,其实都行啊,我呢有必要给大家把每一种都普及普及到啊,都给大家讲清楚。好,那我们大概看一下呗, 低头尔斯函数库啊,它呢是微软的一个函数库,可以用于捕捉系统的 a p r。 然后呢,大概的看一下啊,也没啥东西,对吧,那我们就直接进微软安网干吧, 这个英文呢,大家看的可能有点吃力,对吧,那进所配合中文力所能及的看呗。嗯,你看地图是四点零点一,现在已经开放资源在这个什么麻省理工什么许可什么东西的啊 啊这个是麻省理工什么许可?然后呢我们给他翻译一下再看吧。啊好像代码也不是很多对不对 啊。麻省理科许孔许可下开元的,然后它的位于这个 get hope 对吧? get hope 我们等会就过去下载就行了。呃修复了 之前发现的什么漏洞啊。然后呢它支持叉八六叉六十四啊,与其他 windows 兼容器处理 a r m a t 六十这个六十四啊都支持。呃 它是一个库,用于检测 windows 金融性处理器的任何 wins i 函数啊,通过重写目标函数的内存代码来劫持 wins i 的函数 啊。增加这什么什么什么好像也没什么有用的了啊。然后这个看这个发量对吧,就是一个大佬了。好,那我们从这单中提取到有用的信息就是这个啊,这是一个啊, 他在 get help get get help 上面的一个开园的项目啊。那我们呢把这个地址也给到大家啊,给到大家 小一点啊,这个是这个项目的地址,我们再来看一下这边啊,我们先转成英文看啊。 嗯也没有中音对照啊,这样更方便让大家理解这个项目啊。 hmm 看着玩吧。呃大家要学会在 get up 上面。呃下载项目啊,很多的时候呢。 嗯一些比较成熟优秀的代码他都是在 gitap 上面有开源的啊,大家都可以下载下来。然后去啊使用它啊,可以在这里搜啊, 搜一些你想要的东西。然后呢?基本上嗯然后呢?比如说我们就搜这个 detours 吧。 呃 all get off 整个 get off。 然后这里呢是收藏对吧? 三点二 k 人收藏,有三千多人收藏,还是这个应该是最厉害的了,你看下面收藏这个给的 star 就比较少了啊,比较少呢,他可能是一些附属的东西, 大家要优先找这种啊,四大星最多的啊,然后这里能看到这个是 c 加加的,然后这里他也告诉你麻省理工的这个许可啊,翻译成英文看吧。 啊 mighty license 啊,这个就是我们刚刚的那个地址喽,其他的是什么?这 pessic 然后还有 see 的啊,这其他的跟我们就不太相关了,对吧,大家呢 可以自己去尝试着去找一下啊。这个又回到我们刚刚那个页面了啊,那我们怎么把这个东西下下来呢?大家还是看看啊,先翻译成中文看看,大概了解一遍啊, 好像跟那边呃,微软官网显示的内容差不多啊显示的内容差不多,那我们就下载下来吧。我们怎么下载呢?在这里啊? 代码下载压缩包,再给大家翻译成英文省的那个 cod, 然后呢, download vip 啊,我们就下载个压缩包吧, 应该差不多了吧。好,下载好了,下载好了呢,我给他解压到桌面吧。哦,这里之前已经解压过了对吧,我把它删了啊。解压到桌面,然后呢我们打开看看他有哪些东西啊, 是这样的一个啊,文件夹里面的内容呢,和 和他这边应该是一样的,对吧? get up, 然后呢,这里应该是粒子啊,这是资源,这是测试,这是他的 vc 的东西啊。 嗯,那我们这里看上去好像可以直接打开哦,我们试试行不行啊? 嗯咳, 他有个例子在里面,对吧, 这好像也没有什么 c 加加的文件吧。啊,也有,我们编一看看应该是不行的,应该还要导入这些库什么东西的吧。 哎,这些东西都没有是吧?嗯, 都没有。这个东西里面的文件有点多啊。我有点多,他好像是多个。 呃,多个项目还是跨平台啊?你看这又是 a r m 的东西啊。所以呢,他可能 对于我们我们这个 windows 逆向这一块啊,好像有点太复杂了,可能一时半会介绍不清楚啊。也不行,那我们就不看这个了啊,就不看了 啊,我们来继续看吧,他有这么些个目录,然后呢,这里有一个这个东西,那我们 我们首先要找到我们要的啊,我们应该怎么办呢?嗯,看看啊, 把这个目录先研究清楚,看看它有哪些东西啊?这里有个 mac file, 这里应该是它的一个编译的文件啊,用 mac file 可以编译。嗯, 我们怎么办啊?想一下应该是这里有一个啊,他我们这里还真没有那个工具呢。啊,对对对,我想起来了,可以在这里啊。嗯,你有的, 在这里它是有一个命令喊的,你可以从直接从这个命令喊,如果你是二零一九吧, 应该在这里就有个命令函就可以。那大家不要直接用 cmd 啊, cmd 这种方式他的路径是不对的,不对的啊,那种比较麻烦。还有一种什么方式呢?我们在这里找一下啊。 在这里,这里有一个 vr 三零一七开发人员的命令提示服啊,这个这个就可以啊, 用这种方式呢,它是相当于是从 vs 当中启动的啊,它有一些目录,它是呃,已经帮你设置好了,所以你直接就可以调用那个编译器帮你去编译这个项目啊, 如果你是直接 c m d 的话,那是不行的。嗯,首先我们要到这个目录里面 来到这个,这个是啊,就是在 c 盘。那应该是我想一下啊, 呃, c d 这个命令函我也记得不太清了,应该是这样的吧。啊,已经进来了,那然后我们就 and make and make。 嗯,他已经在编一了,大家发现没有?已经在编一了啊, 这个呢,他就是说你,呃, 我们要的一个是叉八六,应该是哪个?这个里面啊,这两个东西 是我们要的,然后呢利浦里面有了吗?啊?利浦里面也有了,对吧?我们要的就这四样东西啊,一个是英科路的,一个是我们的利浦,对吧?他不仅仅便宜了我们的叉八六平台啊,还有 arm 的啊。 arm 是手机平台了,那我们也不管他,我们只要我们叉八六的就行了啊,就行了,那我们要的呢就是他还有一个银可露的啊,有这两样就够了,其他的呢,我跟我们没关系,我们不关心啊,我们不关心。 好,那我们得到这些东西呢,其实就很简单了,我们就把这些东西给导入到我们自己的一个库里啊,导入到我们自己 项目里面,然后我们就可以用了啊。嗯,我们来新建一个项目 之前其实也跟大家讲过,但是呢没有往这么细了讲啊,没有给大家讲这些东西是怎么来的啊?因为提前已经弄好了,直接给大家 啊,让大家呢能有个快速的入门,对吧?那现在已经学到这里了,大家肯定是已经入门,这些东西都没有问题了,这个时候呢,有必要给大家往细了讲啊。 好,那我们现在呢,创建一个我们自己的调,这个调我们叫什么呢?我们就叫嗯 嗯,微臣啊,撸叉撸吧啊,我们做一个这样的一个项目, 哎呀, 好,这个项目大家很熟悉了,这就是一个普通的队友,对不对? 嗯,然后呢,我们首先第一步,我们要把那两个扣倒进去,对吧? 嗯,我们先打开这个项目吧,我们先要把那两个,呃,我们放这里啊,我们把刚刚 编译出来的那两个文件,一个是这两个,这个应该是一个 lip, 对吧?我们新建一个叫 lip, 然后呢,这两个放进去啊,其实就有一个就行了,这个放不放进去无所谓啊,这个不是我们要的东西啊,这个要不要无所谓,我把它删了吧。啊,不要扰乱大家的事心。 嗯,然后还有个 include, include 的里面这两个肯定是要的了,对吧? 快点粘贴过来,哎。啊,好,行,那我们呢,就 在这里,既然已经复制过来了,那我们就在这里属性添加,对吧?这个大家应该很熟悉了吧,已经给大家操作过来一回了,一个包含一个引用啊。 嗯,那我们就一起吧,对吧,我们就一起吧,我们既然打算重新做一个这样的项目,那我们把第三 d 相关的东西也给他一起导进来啊。 呃,第三地相关的东西,一个是 include, 我也全部给他放进来, 这是 in glow 的,哎。啊,有了, 然后呢? lip 叉八六啊,它有这么多,那我全给你导进来。 好,那这样呢,我就,我以后不管你什么导入什么项目,我都这么干,我都翻一块啊省的麻烦。 包含就放包含那个力不就放那个力不里面呃 嗯我们同样的用红吧啊方便大家项目移植啊不然每次到你们电脑上面你们又要重新配置对吧。嗯就这个吧 到了服哎。 然后一个括号一个 project build 然后呢然后是什么这个是包含的吧 include。 好这样就可以了那我把它复制一下 这个目录有了然后呢一个是酷目录一个是包含目录一个是酷目录对吧 那我同样的然后呢库目录就是一个力补是我刚刚 自己创建的吧。啊对的哎我怎么发现我好像是两 啊这里是两个哦行没关系那我配合你。好吧我把我这两个东西放进去啊这样总行了吧我把我这两个东西给你放进去这样就对了吧 okay 啊那我们 那我们这个东西算是导入进来了啊然后呢 嗯我之前已经提前写了一分了啊 我直接把它粘贴过来吧嗯 我的 detours 相关的东西呢在这里对吧其实呢他我也就写了这两个我把这两个复制过来 啊我这边也是一样的吧啊我来给它新建啊新建一个类我教它微尘 tool 啊然后呢我们呃 微臣 to 了啊我们相关的工具啊功能啊就是我们 不是比如说调试输出啊什么的我们全部都放这里把泪先删了啊我我只是偷懒我要创建的不是泪我要创建的只是一个 cpp 和一个点去而已啊 那就是这样的一个东西当然这样他应该是报错的对吧报哪些错呢 啊我怎么在点下去里面写的?我应该是在点 cpp 里面啊,在 cpp 里面,我们看看他报哪些错啊? 这些东西呢?它都是我们的啊, detoursco 相关的东西啊,调用 detouscou 相关的函数,所以呢,当然要导入一些图文件,你我们之前不是在这里包含了吗?对不对?我们在 你看在这里面包含了这些,包含了我们的,嗯, detours cool 和这个点 h, 但是你要在这里声明调用啊,对吧?所以呢,你还需要这个啊, 还需要包含图文件,这个就跟我们之前那个 low 是一样的啊,大家可能就是说啊,有一部分学员他说我那个 酷,我也倒进去了,对吧,但就是他这里报错,那为什么呢?因为你还没有声明投文件啊,那个之前那个录啊,也是一样的,也是需要声明投文件的啊, 我之前呢是都把它放到啊 p c h 里面去了。呃,不是之前那个露啊,还不是之前那个露啊,应该 是放到某一个 cpp 里面还是点 h 里面了。但是你们复制过来项目的时候,你们自己写项目的时候呢,没有留意那个点 h, 所以呢,就没有看到那个录啊点 h, 所以就导致了 你们这个东西啊包含,就是说这里爆红线啊,说他找不到这个函数啊,嗯,这个是我,当然这个是我们自己封装的这个调试输出,这个都不是什么问题了,对吧?嗯, 我们这不是我们要讲的重点啊,我们要讲的重点是带领大家来了解一下这个啊, detours 库的调用流程,他到底要怎么调用啊?我们倒也不用这个了,我们来看一下啊,看一下人家是怎么说的 uh。 这里有一个差不多的例子啊,它写了两个函数,第一个呢叫 hook, 第一个叫 n hook, 对吧? hook 呢?它就 用这几个函数就行了,第一个就是说恢复原来状态,然后从这里开始拦截啊,然后呢刷新现成, 然后这里就是拦截的函数啊,一个你是你原来的函数,你要填个地址,这里是你新的函数,你自己创建一个函数地址,然后把地址填进来,然后呢就可以拦截生效,你拦截完了,你想恢复怎么样的?同样的也是这些代码, 对吧?这都其实一共就这么几行代码了,没什么东西了,对吧?一共就这么几行代码,这也是固定写法,你必须得这么写你才能调用他这个库啊,看看有没有解释的更加详细一点的。嗯, 都是这么回事,你看都是这么一套,对吧?就加起来就这么几个函数,一二三四,下面也是四个,都是一样的,对吧?都是四个函数啊。嗯 嗯,都是一 一样的啊,都是一样的,都是这四个函数,也没有什么更好的。呃,解释了我们也不用点进去看啊,这里面呢?就是到了那个例不里面了,那就看你也看不到的,当然你可以 这个原码也是有的,只不过比较复杂啊,我没必要去了解这么详细。嗯, 你看我们也是这样用的吗?我户口,我也是有,我刚刚复制进来的,一个是户口,一个是安户口,对吧?这两个东西给他复制进来,然后呢? 啊,前面这几个也是一样的,这三个,然后最底下有一个提交,对吧?然后呢?我我这里是复刻了两个函数啊,所以说 我可以一次户口多个,我不讲我为什么户口两个呢,一个就是那个 percent, 就是我们是前面几节课讲的那个把那个 啊缓冲区的啊内存打印到屏幕上面啊,我这个户口是这个的,然后下面还有个户口是用来户口切屏的啊。嗯, 然后这里都是不相关的了对吧,底下呢就是还原了同样的我户口,我还要还原对不对?但是我这里还没写啊我这里只写了一个对吧,等会我把它改一下吧。下面你既然还原你肯定也得还原两个啊。 嗯,然后 pro pro 这个叫什么? prand for 对吧? prand for 把它也复制过来 prand for 也没什么好讲的,和我们之前写法是一样的啊。是这个吗?第八个 prand for 对 打印输出嘛。 嗯,那我们这里算是可以了啊。嗯,哎,好像还报错是吧, 还报错的话这里是啊,这里有个说 cos 的恰尔星不能转弯成这个恰尔星,对吧。这个问题我们前面应该 是讲过的啊,我们需要到这个 c 加加语言把这个符合模式改成否啊就可以了。好,这下应该就不报错了啊就不报错了。 好,还有不错是吧, 无法解析外部符号啊,也就说这个 detoys 库还是有问题,还是没这个函数还是没包含。呃,没包含的话还是什么问题呢? 也就是说 里还有个这个东西对吧?这个东西我忘记填了,我们还得把它也包含进来啊。把裤也包含进来 也要声明一下,这样就可以了啊,大家注意一下啊,这两个东西都要都要填的啊,填一个还不行,你不仅仅需要在这里设置啊,不仅仅需要在这里设置, 包含目录和库目录设置,你这两个东西也是要设置的,这样呢才算变异过了啊。那我们这节课呢,其实讲的已经挺多的了啊,大家呢 休息一下吧,我们下节课继续讲啊,继续把后面的代码给补充完毕啊。然后大家就是说我们最终呢是要实现一个 啊,获客游戏里面的这个那个 represent person 的函数和切屏函数啊。然后呢,我们在这在就是说 缓冲区打印到屏幕啊,渲染的效果,打印到屏幕之前,我们在这里下个户口,然后把我们自己想要实现的代码 放进插进去,插到中间,然后一起打印到屏幕上面啊,从而实现我们这种内部绘制的效果。好,那我们这节课就先到这里啊。