圆圆网络 手游攻略 新游动态 c++写插件,c++插件下载

c++写插件,c++插件下载

时间:2024-04-06 21:32:23 来源:头条 浏览:0

CS 1.6 Hack 我们的主题是为老游戏CS1.6(Esai 3248版本)创建一个插件。这主要涉及反汇编、DLL 注入和其他游戏修改技术的使用。

DLL注入

c++写插件,c++插件下载

我知道每个DLL 文件都有一个dllMain 条目,我可以在其中设置当进程/线程附加/取消分离DLL 时要执行的操作。接下来,创建插件代码并将其插入到cstrike.exe 中以实现许多作弊功能。

作为具体的注入方式,我们采用了远程创建线程注入的方法。具体步骤及说明如下

首先,获取注入目标的进程句柄。通过进程名、pid等获取打开注入目标的内存空间存放dll的路径,远程写入,获取函数LoadLibraryW的地址。加载DLL。所有win32进程都添加到kernel.dll中,因此该函数的内存位置对于所有进程都是相同的。这使得在注入目标上创建远程线程并运行LoadLibraryW 变得容易。当然,该参数是先前写入目标内存空间的DLL路径名的私有消息。编辑:“01”您可以访问讲座和资料了!至此,DLL已经成功插入,并进行了相关操作。这里我们要做的就是下面介绍的hook操作。

挂钩openGL函数实现透视、防烟、闪

我们知道cs1.6有一个opengl模式,可以调用像glBegin这样的函数来绘制字符和其他模型。然后,您可以通过在执行相关操作之前执行必要的操作来完成相关的hack。例如,如果识别出正在抽取烟雾弹,则可以通过直接终止抽取操作来实现防烟雾。如果您正在绘制角色模型,则可以通过关闭深度检测或使角色的深度非常接近来实现透视。

那么现在的核心就是如何在游戏调用相关函数的时候,首先调用你插入的函数,而不影响原来函数的正常行为。

请注意以下事实:

每次游戏中调用相关函数时,都会从入口开始执行,因此需要跳转到入口上预先执行的代码目标。 jmp 函数会覆盖原来的指令。你需要备份它。原始函数new_entry 允许您保存new_entry 的地址,以防在目标中使用它。每条指令都有自己的长度,除法不能随意中断。因此,必须使用IDA等工具检查入口处的汇编指令,找到长度为len的字节,并确保len不会中止5或更多的指令。关于len,对于hook函数,len必须设置为7(或更高,但不能中断命令)

同时提供了相关示例代码,方便理解。

上面的代码,在运行glVertex2f时,会首先跳转到Hooked_glVertex2f函数的执行,可以意识到pglVertex2f是原函数的函数备份。当然,如果判断后不需要绘制(烟雾等),则返回即可。

通过分析mp.dll实现黑客攻击

使用IDA和CE修饰符等工具,您将找到核心dll——mp.dll。大部分游戏相关的功能都有,这也是我们攻击的重点。

位置数据

获取游戏中的角色和枪支数据是实施黑客攻击的非常重要的一步。这里我们使用CE修饰符来完成相关操作。本节以健康值(HP)为例,说明如何识别关键数据的内存地址。

首先,我们在游戏中以不同的方式迭代HP的变化,并使用CE来监控内存的变化。如果内存中的某些数据总是与HP匹配,我们可以假设这个地址很可能存储玩家的健康状态。但在实际操作中,HP值往往在内存中存在多份,必须逐一分析、筛选,找到记录HP的唯一内存地址。

然而,即使你在这里得到了地址,这个地址也不是静态的。由于每次重新运行进程时进程的地址可能会发生变化,因此必须将获得的绝对地址转换为相对于进程的偏移地址。具体来说,它会在每个级别中查找指针,直到在游戏的主进程cstrike.exe 中找到该地址。基本步骤是:

获取HP存储地址0x0B221D5C。

因此,如果您观察更改值并伤害自身的代码,您会发现更改地址的语句包含单词[eax+00000160]。

因此,现在我们可以大胆地得出结论,eax 存储了一个指向特定结构的指针,并且该结构的成员hp 存储在位置+160 处。所以我们读取eax的值,直接在内存中查找这个值,找到这个指针存放在哪里。

至此我已经成功找到hp的上层地址了。重复上述操作,直到该地址不是绝对内存地址,而是cstrike.exe + offset的形式,并发现HP的正确访问方法,而不必担心加载进程时和malloc时的可用空间差异。

同样,我们还确定了其他易于观察和更改的值,并利用它们获得了大量有用的数据:

其中一些信息(例如X、Y 和Z 坐标)很难通过搜索内存找到。但根据玩家的血量、护甲等具体信息,假设[cstrike.exe+11069BC]+7c]存储的是玩家相关信息,而[[cstrike.exe+11069BC]+7c]+4]可以。它内部存储与玩家对象直接相关的信息。然后通过观察[[cstrike.exe+11069BC]+7c]+4]内的所有偏移量就可以找到直接很难找到的数据。

重要陈述的定位

找到关键数据后,就需要找到修改该数据的函数语句。首先,使用CE监控更改关键数据的语句。我们经常在这里收到很多声明。接下来需要一一查看反汇编,进行过滤,最终找到核心语句。这样就可以得到相对于动态链接库开头的语句的地址。因为动态链接库在内存中的加载地址是不固定的,所以在执行后续操作之前,需要使用Windows提供的一组API来计算出这条语句要加载到内存中的实际地址。

放置目标函数的一般过程如下:

使用CE来监视内存,不断改变游戏中的某些状态,并找到内存中控制该状态的数据地址。

使用CE 查找更改此数据的语句的地址(真正重要的是dll 内的偏移量)。

基于IDA Pro对DLL的反汇编,根据上面得到的地址找到对应的语句,阅读包含该语句的函数的汇编代码,理解其含义。

主要声明变更

更改分为两类:那些只是创建新语句并覆盖原始语句的更改。这部分比较简单,直接将机器码写入内存并指定即可。但限制较多,通常只写入0x90(nop),对应删除特定指令。

这个方法非常好,可以让你得到很多效果,比如不掉血,不掉甲。然而,由于这些功能是全球共享的,这意味着双方都不会失去生命值或护甲,所以它作为一个插件肯定会失败。

更通用的方法是沿用之前hook的方法,在hook代码中检测调用者的信息,如果有的话,添加无敌或者双重攻击之类的功能。

实现的一些功能包括无限弹药、即时杀戮(用户造成的伤害固定为255)、无敌以及可以在任何地方购买枪支。有兴趣的读者可以自己尝试一下。我们建议您首先考虑使用CE修饰符来实现类似的功能,然后将其写入dll文件中。

标题:c++写插件,c++插件下载
链接:https://yyuanw.com/news/xydt/7591.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
阴阳师4月22日更新内容:帝释天上线技能调整,红莲华冕活动来袭

阴阳师4月22日更新内容:帝释天上线技能调整,红莲华冕活动来袭[多图],阴阳师4月22日更新的内容有哪些?版本更新

2024-04-06
四川电视台经济频道如何培养孩子的学习习惯与方法直播在哪看?直播视频回放地址

四川电视台经济频道如何培养孩子的学习习惯与方法直播在哪看?直播视频回放地址[多图],2021四川电视台经济频

2024-04-06
湖北电视台生活频道如何培养孩子的学习兴趣直播回放在哪看?直播视频回放地址入口

湖北电视台生活频道如何培养孩子的学习兴趣直播回放在哪看?直播视频回放地址入口[多图],湖北电视台生活频道

2024-04-06
小森生活金币不够用怎么办?金币没了不够用解决方法

小森生活金币不够用怎么办?金币没了不够用解决方法[多图],小森生活金币突然就不够用的情况很多人都有,金币没

2024-04-06