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

前言:
这几天在做我的平台的反作弊系统,普通的杂修内存挂还是很好检测到的.但是有一些"特殊"的挂还是有些问题的.这些特殊挂包括不限于 修改版显卡驱动、DMA硬件作弊 、 "鼠标挂".今天深入浅出讲解一下外挂是如何装进鼠标里的 当然有人可能会说是不是会有人照葫芦画瓢做出来,放心 我的结论是 impossible .就目前国内外挂市场环境来看, DMA硬件作弊在吃鸡上已经有应用了,但是真正的鼠标挂 还是【没有】的,因为给你资料你也做不出来 : - ) 能做出来的都是大牛中的大神中的大佬.至于为什么,我们待会再说.
一些历史:
1958 -第一个"视频"游戏诞生
1972 -第一个"游戏"比赛举办
1906s -Spacewar诞生[真正意义上的"电竞"游戏]
(PS:如果你开着某些盗版游戏比如盗版文明六的"盗版联机版" 你的steam上会显示你运行Spacewar,因为这个游戏被很多盗版破解补丁当做欺骗steam来联机的游戏.当然其他游戏也可以,但是盗版开发商包括V社对这游戏有深厚的感情,所以盗版开发商用这个,V社则睁一只眼闭一只眼)
Esports
Esports2016年的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.你怎么知道这么多东西
原因很简单,我只信仰技术,学习更多的技术是我的唯一目标
华为智能光伏官方版(FusionSolar)下载v25.3.101.001 安卓版
130.65MB |商务办公
PETKIT小佩宠物官方软件下载v13.1.1 安卓版
300.76MB |系统工具
分包管家app下载v3.7.3 安卓版
58.74MB |商务办公
tplink物联监控摄像头app下载v5.10.5.1681 安卓版
94.39M |社交娱乐
tplink无线摄像头软件(改名tplink物联)下载v5.11.21.1795 安卓手机客户端
94.93MB |系统工具
多屏互动软件下载v10.1.2471 安卓最新版本
108.16MB |系统工具
朴朴森山官方版下载v1.3.3 安卓版
26.43MB |商务办公
aik钥匙工具app下载v2.7.0 安卓版
82.46M |系统工具
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14