游戏外挂:劫持技术

本文介绍如何利用Detours库在Windows环境下实现API劫持技术,包括静态库与动态库的创建、使用Detours进行系统函数劫持的方法及具体步骤,并通过实例展示了劫持系统函数的具体操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.  安装DetoursExpress30.msi,点击安装,安装后的目录结构如下:


在sample里面有例子,可供查看使用

2.第一步,打开VS2013开发人员命令提示(E:\Installed\MicrosoftVisual Studio 12.0\Common7\Tools\Shortcuts\VS2013 开发人员命令提示),进入Detours安装目录下的src目录,效果图如下:


2.新建项目,暂定项目名称是“劫持”

3.lib知识点

选中解决翻案à添加à新建项目à常规,输入lib名称


创建一个1.c文件


同理,添加一个1.h,内容如下

void msg();

添加一个1.c,内容如下:

#include<Windows.h>

 

void msg()

{

    MessageBoxA(0, "11111", "2222", 0);

}

右击项目à属性à常规à配置类型à静态库.lib

 

然后,生成à生成lib,执行完成后发现资源目录里面的Debug目录下就有lib.lib文件了。

 

如果想在劫持项目中使用自己写的静态链接库。右击劫持项目à属性à链接器à常规à输入à附加依赖库,在最前面添加   lib.lib;  截图如下:

 

将lib.lib文件放到源文件同级目录下,截图如下:

 

在劫持项目里的hello.c文件中添加函数声明

#include <stdio.h>

#include <stdlib.h>

voidmsg();

 

void main()

{

    printf("hello world");

    getchar();

}

这时候运行的时候就可以调用了lib.lib了。

 

动态库随时加载,随时注入。

静态库只有在编译的时候才可以调用。

 

4.使用detours做劫持(将项目改成release模式),其中项目结构如下(下面是劫持自己的过程):

A放文件有:

detours.h   (src下)

detours.lib  (lib.X86下)

detver.h    (src下)

将上面的文件放在源文件目录下即可

B.添加

#include"detours.h"  //载入头文件

#pragma comment(lib, "detours.lib")//表明要使用静态库

 

C:定义一个新的函数取代旧的函数。

int  newsystem(const char *_Command) //新的函数

{

    return 0;

}

 

D:添加Hook()方法和UnHook();

 

E:设置上detours.lib,方法是:右击项目à属性à链接器à输入à附加依赖项。截图:

 

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

#include "detours.h" //载入头文件

#pragma comment(lib,"detours.lib")//表明要使用的静态库

//detour在realse模式生效

//创建函数指针等于地址,加上静态防止影响其它的源文件

static int(*oldsystem)(constchar* _Command) =system;

 

int newsystem(constchar * _Command) //新的函数

{

    return 0;

}

 

//开始拦截

void Hook()

{

    DetourRestoreAfterWith();//恢复原来状态,

    DetourTransactionBegin();//拦截开始

    DetourUpdateThread(GetCurrentThread());//刷新当前线程

    //这里可以连续多次调用DetourAttach,表明HOOK多个函数

 

    DetourAttach((void **)&oldsystem,newsystem);//实现函数拦截

    DetourTransactionCommit();//拦截生效

}

 

//取消拦截

void UnHook()

{

    DetourTransactionBegin();//拦截开始

    DetourUpdateThread(GetCurrentThread());//刷新当前线程

    //这里可以连续多次调用DetourDetach,表明撤销多个函数HOOK

    DetourDetach((void **)&oldsystem,newsystem); //撤销拦截函数

    DetourTransactionCommit();//拦截生效

}

 

 

void main()

{

    system("calc");

    printf("%p,%p,%p",system, newsystem, oldsystem);

    Hook();

    printf("\n%p,%p,%p",system, newsystem, oldsystem);

    system("calc");

    getchar();

}

 

现象是加了Hook()之后只弹出了一次计算机窗口,如果去掉了Hook()方法,则出现两个计算器窗口。

 

5、劫持应用

A:创建一个基于窗口的MFC的应用程序->然后拖一个button->双击buttonà添加代码,事件代码如下:

void C劫持测试2Dlg::OnBnClickedButton1()

{

     // TODO:  在此添加控件通知处理程序代码

     #include<stdlib.h>

     system("calc");

}

窗口截图如下:


B:选中解决方案,新建一个常规空项目(项目名称:劫持其他程序),这时候要写一个库劫持MFC程序

将detours中的各种相关文件放到源文件下面。截图如下:


C:修改项目的依赖项:右击项目-->属性-->链接器-->输入-->附加依赖项-


D:将项目改成dll项目,也就是,修改配置属性里面的常规的目标文件名和配置类型,截图如下:


1、编写dll内容:

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

#include<string.h>

 

#include"detours.h"

#pragma comment(lib, "detours.lib")

 

static int(*poldsystem)(constchar * _Command) =system;//存储函数指针地址

 

int  newsystem(const char *_Command)

{

    //tasklist

    printf("%s",_Command); //禁止你干活

    return 0;

}

//开始拦截

void Hook()

{

    DetourRestoreAfterWith();//恢复原来状态

    DetourTransactionBegin();//拦截开始

    DetourUpdateThread(GetCurrentThread());//刷新当前线程

    //这里可以连续多次调用DetourAttach,表明HOOK多个函数

    DetourAttach((void **)&poldsystem,newsystem);//实现函数拦截

    DetourTransactionCommit();//拦截生效

}

 

//导出函数,可以加载的时候调用

_declspec(dllexport)void  go()

{

    MessageBoxA(0, "1", "2", 0);

    Hook();

}

E:生成dll文件,然后使用dllInject工具将它注入到应用里面。

 

6:劫持系统的原理是劫持CreateProcess()函数。同样也是编写dll文件。

 

 

 

<think>嗯,用户之前已经了解了API劫持的基本概念和防范措施,现在他遇到了Steam账号被API劫持的具体问题,情绪应该比较焦虑。用户引用了三段资料,但核心需求很明确——迫切需要解决当前账号安全问题。从技术角度看,SteamAPI劫持是典型的“客户端-服务端”双向攻击场景。根据历史对话,用户可能遭遇了:1)通过钓鱼网站窃取API密钥;2)恶意插件篡改浏览器中的交易请求;3)伪造移动端SSL证书实施中间人攻击。需要重点处理的环节包括:即时止损操作(禁用API密钥)、账号恢复流程(Steam客服特性)、设备级消毒(恶意软件扫描)。特别要注意Steam平台的特性——其交易确认机制(手机令牌)和客服响应速度是关键突破口。用户可能忽略的深层风险是:攻击者可能设置了交易延迟陷阱,即使现在夺回账号,未来两周内的交易仍可能被自动执行。因此必须强调清理所有授权访问信息。</think> 以下是针对Steam账号遭遇API劫持的安全措施及解决方案,结合安全技术原则进行分步处理: --- ### **一、立即止损措施** #### 1. **强制解除API绑定** - 登录Steam官网 → [账户明细](https://store.steampowered.com/account/) → **"管理API密钥"** - 删除所有存在的API密钥(点击`Revoke My Steam Web API Key`)[^2] ```伪代码示例 操作路径:Steam账户 > 开发者设置 > 清除API密钥 ``` - **结果**:立即使攻击者控制的API失效 #### 2. **终止会话与设备授权** - 访问 **[Steam客服 > 管理设备](https://help.steampowered.com/zh-cn/wizard/HelpWithLoginInfo)** - 选择`取消所有其他设备的授权` ```伪代码示例 安全操作:Steam客服 > 登录问题 > 取消所有设备授权 ``` - **原理**:清除攻击者的活跃会话[^3] #### 3. **启用两步验证** - 安装Steam手机令牌 → 绑定至账号 - 强制要求所有交易需**手机令牌确认** ```数学表达规则 设交易请求为 $T$,则执行条件:$T \cap (MobileToken=Valid) \neq \emptyset$ ``` --- ### **二、深度安全加固** #### 1. **认证升级** | 措施 | 安全增益 | 操作位置 | |---------------------|----------------------------------|-----------------------------| | 更换登录密码 | 阻止凭据复用攻击 | 账户设置 > 更改密码 | | 绑定邮箱二次验证 | 增加账户操作验证层 | 账户安全 > 管理邮箱验证 | | 禁用API自动交易 | 切断自动化攻击链条 | 开发者设置 > API权限管理[^2] | #### 2. **设备环境清理** - 执行**全盘杀毒扫描**(推荐Malwarebytes) - 清除浏览器缓存、Cookies及扩展程序 ```防御原理 $$ \text{攻击风险} \propto \frac{\text{残留恶意脚本}}{\text{环境清洁度}} $$ ``` #### 3. **交易监控** - 在[库存历史记录](https://steamcommunity.com/id/me/inventoryhistory/)中筛查异常交易 - 对可疑项目立即发起**Steam客服申诉** --- ### **三、持续防护策略** #### 1. **访问控制强化** - 遵循**最小权限原则**:仅授权必要API权限(如:禁用`修改交易报价`权限)[^3] - 配置**API调用频率限制**: ```数学约束 设正常用户API调用频率 $f_u \leq 5/\text{min}$,若 $f_x > 3\sigma(f_u)$ 则阻断请求 ``` #### 2. **通信安全加固** - 强制使用**HTTPS**访问Steam服务(检查浏览器地址栏🔒标志) - 在路由器禁用**UPnP协议**(防止端口劫持) #### 3. **安全更新与审计** - 每周检查[Steam安全公告](https://store.steampowered.com/news/steamdeck) - 对第三方插件/脚本实施**代码签名验证**: $$ \text{插件安全性} = \begin{cases} 1 & \text{签名验证通过} \\ 0 & \text{其他} \end{cases} $$ --- ### **四、典型案例处置** > **场景**:攻击者劫持交易API,将用户物品自动转移至傀儡账号 > **应对**: > 1. 立即执行上述止损三步 > 2. 向Steam客服提交完整证据链(包括:异常交易ID、时间戳、目标账户) > 3. 启用[家庭监护功能](https://store.steampowered.com/parental/)限制交易操作 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值