知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技  > 笔记本电脑

高级黑客技术 -外挂是如何装进鼠标里的

发表时间:2022-03-26来源:网络


前言:

这几天在做我的平台的反作弊系统,普通的杂修内存挂还是很好检测到的.但是有一些"特殊"的挂还是有些问题的.这些特殊挂包括不限于 修改版显卡驱动、DMA硬件作弊  、 "鼠标挂".今天深入浅出讲解一下外挂是如何装进鼠标里的 当然有人可能会说是不是会有人照葫芦画瓢做出来,放心 我的结论是 impossible .就目前国内外挂市场环境来看, DMA硬件作弊在吃鸡上已经有应用了,但是真正的鼠标挂 还是【没有】的,因为给你资料你也做不出来 : - ) 能做出来的都是大牛中的大神中的大佬.至于为什么,我们待会再说.


一些历史:

1958 -第一个"视频"游戏诞生

1972 -第一个"游戏"比赛举办

1906s -Spacewar诞生[真正意义上的"电竞"游戏]

(PS:如果你开着某些盗版游戏比如盗版文明六的"盗版联机版" 你的steam上会显示你运行Spacewar,因为这个游戏被很多盗版破解补丁当做欺骗steam来联机的游戏.当然其他游戏也可以,但是盗版开发商包括V社对这游戏有深厚的感情,所以盗版开发商用这个,V社则睁一只眼闭一只眼)

Esports


Esports

2016年的Esports比赛规模:

比赛团队来自世界各地

2000多万奖金池 超过1900w的人对其进行赞助

17000多人在现场观看

500w人网络观看(没国内某直播平台一半多)

Esports屏蔽作弊的手段

互联网连接受到限制

玩家没有管理员账号

硬件驱动、鼠标驱动都被预先装好

不支持除了键盘和鼠标以外的USB接口

专业比赛级别反作弊系统™



好像不能作弊了?

但是你可以带你的键盘和你的鼠标!

一个游戏鼠标


一些鼠标参数:

STMicro STM32F103CB Microcontroller

○ ARM Cortex M3microprocessor

○ Supports ST-Link programming interface

● 128KB Flash Memory

○ Stores user profiles onboard - save your dpi settings!

● Lots of buttons

● RGB LEDs

我们可以劫持鼠标中的单机片:

大概流程:

1. 修改代码作为USB键盘

2. 发送一些按键消息的payload到计算机中(模拟你的键盘操作)

4. 发送“拔掉” 键盘、鼠标的代码,让计算机重新执行鼠标的初始化代码

5. ???

此类方法对鼠标没有明显的硬件更改

等等

这tm不就是一个Bad USB么?


BAD USB、坏鸭子、简单来说就是一个硬件,插入硬件后计算机会根据硬件的指令执行相应操作,比如你说你是U盘你要计算机装驱动,你是键盘你要发送一些键盘消息,计算机就会照做执行,不论代码是否恶意.

制作一个坏鸭子需要准备的东西

1.STMicro STM32F4 Discovery 开发板

2.有一个机载ARM M4用于初始开发板

3.有一个外部编程接口来对鼠标进行编程

软件(这些都是免费的)

● STM32 ST-Link Utility

● System Workbench for STM32

● STM32CubeMX

● objdump (for ARM)

单机片

查一下文档

我们需要连接芯片进行编程

不能通过USB访问芯片

RTFM!

ST-Link 的接口用pin(脚帧)连接

PA13 (JTCK / SWCLK / PA14)

PA14 (JTMS / SWDIO / PA13)

GND


不要当蠢货

我试图直接焊接到处理器的引脚…

用老化烙铁

凉了,引脚坏了

然后我翻了一下背面发现有GND, TCK,TMS接口....

GND, TCK,TMS接口


这样就好多了

STM32 与 ST-Link 接口

移掉 CN2 的跳线 用于断开开发板的处理器与ST-Link的链接

ST-Link → 目标

SWD pin 2 → TCK

SWD pin 3 → GND

SWD pin 4 → TMS

STM32F4 Discovery schematic

开发板:

ST-LINK链接上跳线

连上:

断开CN2的跳线为了做外部编程

通过ST-LINK连接到微控制器。


我们不能乱改,要不然鼠标会坏的


要做的事情:

1。提取原始鼠标二进制

2。建立注册为键盘的应用程序

3。在鼠标的二进制文件中找到留空的位置插入我们的程序

准备一个Payload去插入鼠标

这一步其实就是和坏鸭子一样的做法

我们要插入鼠标后:

打开笔记本

新建一个powershell脚本

后台执行这个脚本

解压代码

执行完删掉powershell脚本

保存之前解压的代码到 %temp%/word.exe

关掉笔记本

执行word.exe

要把这堆代码放哪?

先dump然后分析一下鼠标的代码:

比如我的鼠标执行flash内存是在0x08000000这个位置,从这里开始dump

objdump -b binary -marm --adjust-vma=0x08000000 -D -C -Mforce-thumb sensei.bin > sensei.txt

看起来我们有足够的空间在0x080109B6到0x08016800之间。

我们可以把我们的代码设置在0x08010A00(因此它是在2K边界上)。

在自定义位置执行应用程序

STMIC的默认链接器是链接到内存 0x0800

但是我们的代码在 0x08010A00

需要改变一下他的执行位置让他能执行我们的代码

要编辑这两个:

STM32F103CBTx_FLASH.ld

system_stm32f1xx.c

【STM32F103CBTx_FLASH.ld】


【system_stm32f1xx.c】


ARM启动过程

0x08000000中有这些东西:

RAM中堆栈指针:0x08000000

Flash中入口点:0x08000004

在引导时,引导加载程序设置堆栈指针,然后跑到偏移 + 0x04的位置

怎么才能执行我们的插入的代码?

当然是通过修改0x08000000中的东西!

让鼠标运行我们的程序:

我们需要知道我们的代码入口点在哪:

objdump -b binary -marm --adjust-vma=0x08010a00 -D -C -Mforce-thumb injection.bin > injection.txt

发现入口点是在 0x08013625

最后当然是 修改 0x00 和 0x04 的值为我们的程序入口点在鼠标的dump文件中完成代码注入


没被改过的数值:

改过的:

插入代码:

用你的hex修改工具:

跳到我们之前的0x00010a00位置

将整个 HACK.BIN(就是有我们的恶意代码的东西)文件内容粘贴到MOUSE_hack.Bin(我们要给鼠标重新写入的文件).


复制粘贴完事

现在应该能执行我们的那堆恶意代码,但是鼠标却会失去效果,我们要修复他

写一大堆汇编东西,储存在数据的末尾

功能:

按照下图的分支流程执行代码

跳到鼠标自己的代码:


在汇编中储存数据:



找到我们的beef了:


这样就没任何问题了 保存后写入鼠标内.鼠标就能执行你的挂的代码了(word.exe)

一些问题:

1.你tm说了那么多,挂的代码呢????

事实上这只是教你怎么把代码放入鼠标内,但是挂怎么写、怎么过

专业比赛级别的反作弊™ 就是一个严重的问题.专业比赛级别的反作弊™ 是最后一道防线,也是最严格的防线(国内平台排除).一般应该是大牛中的大佬中的大神才能与之对抗的.当然能搞单机片又能搞这种对抗的人,即便是不做挂也应该年入百万了,如果把卖挂当职业看的,收费肯定不菲的.

2.这么恐怖的作弊方法,那怎么检测?

不给选手带自己的硬件,买一个一模一样的就行.当然不排除steam下地图作弊

3. 我没看懂怎么办

很正常,里面很多东西我也是一知半解,毕竟我没自己搞过太多的硬件(最多搞过用bad usb黑电脑).现在不懂,以后会的

4.你怎么知道这么多东西

原因很简单,我只信仰技术,学习更多的技术是我的唯一目标

收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜