C语言/C+游戏编程学习之简单 DLL 劫持,就是这么任性

C语言面向过程编程的语言;C++面向对象编程的语言。

两者有本质的区别,其实是完全不同的两种语言,只不过C++兼容C语言而已。

其中C++则一般看作是对C语言的扩展。因为C语言没有面向对象的语法结构,而当时业界又迫切需要面向对象的编程特性,所以贝尔实验室的开发者就为C语言添加了面向对象的结构。现在C++已经不只是C语言的扩展了,它已经完全可以被看作一种新的编程语言。虽然C语言的特性以及库函数仍然被C++支持,不过C++拥有自己的独立的类库体系,功能相当强大。

C/C++的优点在于与底层比较接近,可以控制的粒度更加精细,是开发系统级应用的最佳选择。关于跨平台,C/C++也是很好的语言,因为所有平台都支持,不同的是,不同平台支持的实现不同,类库不同,要编写跨平台的程序,需要选择跨平台的类库,如标准类库,如果标准类库的支持不够也只需要附加编写一个跨平台的支持类库。

通过C语言编写一个游戏要加载的系统DLL文件(lpk.dll),其中假DLL包含劫持功能和作弊功能且拥有相同的导出函数,将该假DLL放入游戏相同目录下,游戏打开时会自动加载该假DLL,使游戏直接包含作弊功能。

设计思路分析

对象分析

要用的函数介绍

编写测试效果

总体评价

设计思路分析

构造一个与系统目录下LPK.DLL一样的导出表

加载系统目录下的LPK.DLL

将导出函数转发到系统目录下的LPK.DLL上

在初始化函数中加入我们要执行的代码

对象分析

注:本次游戏对象为Super Mario XP

没有更新所以可用任意版本 ,

试玩发现人物血量最大为10,心最大为99,命最大为99。

要用的函数介绍

__asm{ }

执行括号内的汇编代码

JMP EAX

将EIP跳转到EAX执行,劫持DLL后要获取真正的原函数地址,使用时要进行跳转

编写测试效果

将生成的mylpk和作弊模块放入游戏目录,并改mylpk名为lpk

打开游戏

直接打开游戏即可,发现此时游戏已具备作弊效果(锁定血量)

工具查看加载模块

发现cheatDLL模块已加载入游戏,说明lpk劫持成功

WIN7下劫持

在WIN7下要劫持只需稍修改注册表即可

总体评价

DLL劫持可以在不用手动加载外挂,在运行游戏时自动加载作弊功能。

最后我来说一说了解C的必要性:

1. 对内存和硬件的操作,是目前绝大部分高级语言所隐藏的,只有坚实C背景的同学,才可以考虑的更多,如果你想对原理有更多的了解,那么C其实是不可绕过的一个环节。

2. 想要缔造一个新的系统和语言,没有C是不行滴(或许C++勉强)。

3. 不管是OC的消息系统,Java的自动回收,Ruby的动态类扩充,这些花哨且时髦的东西,其实都可以用C来实现,而且很多都是用C来实现的,如果你想自己实施,看C吧。

4. 破解和分析程序,C可以起到很大的作用。C是可以人为创建Bug来破坏一个系统滴。

最后我引用我的一个大牛朋友的话:“请不要忽视C语言,它上可九天摘月,下可五洋捉鳖”。

我有一个微信公众号,经常会分享一些C语言/C++技术相关的干货;如果你喜欢我的分享,可以用微信搜索“C语言学习部落”关注

欢迎大家加入千人交流答疑裙:627+012+464

原文地址:http://blog.51cto.com/13726362/2120368

时间: 2024-11-08 11:55:58

C语言/C+游戏编程学习之简单 DLL 劫持,就是这么任性的相关文章

DirectX 11游戏编程学习笔记之7: 第6章Drawing in Direct3D(在Direct3D中绘制)(重点回顾+勘误)

        本文由哈利_蜘蛛侠原创,转载请注明出处!有问题欢迎联系[email protected]         注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候,会使用章节号而非页码.同样的情况适合于"龙书"第二版. 上一期的地址: DX 11游戏编程学习笔记之6 这一章应该是本书最长的一章了,可能也是最难的一章,所以大家一定要好好消化,仔细学习!这一章大致相当于"龙书"第二版的第7章和第8章,还添加了一些别的东西. 由于这一

DirectX 11游戏编程学习笔记之1: 开场白

本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系[email protected] ? ? ? ? ? 这是我之前的博客系列"DirectX9.0c游戏开发手记之'龙书'第二版学习笔记"的平行版,也可以说是续集. 说是平行版,由于这两个博客系列由于某种显而易见的原因.内容是非常平行的:而之所以说是续集,是由于前面那个系列可能就此坑掉了-- ? ? ? ? 前面那个系列是关于"龙书"第二版的学习笔记的.而这一系列是关于"龙书"第四版的.&qu

游戏编程 学习目录

对于游戏编程者而言,在VS里面,敲着 C#代码,写着Unity项目. 游戏行业是个靠创意的行业,我们都不愿意为别人打工,实现别人的梦想.我们想将自己脑海里面的想法自己亲手实现出来!我一直这样渴望,但是目前还是个菜鸡.在保持大脑想法活跃的同时,最重要的还是将技术学好.毕竟 九层之台,起于垒土. 对于游戏编程,最重要的是要先将C# 和 Unity 学会.我总结了这两块的知识点: C#: Unity: 1. 2. 3. 4. 原文地址:https://www.cnblogs.com/01zxs/p/9

DirectX 11游戏编程学习笔记2: 文章1章Vector Algebra(向量代数)

本文由哈里_蜘蛛侠原创,转载请注明出处.有问题欢迎联系[email protected]         注:我给的电子版是700多页.而实体书是800多页,所以我在提到相关概念的时候.会使用章节号而非页码. 相同的情况适合于"龙书"第二版. 我们这一期正式開始学习DX 11编程了! 前三章组成了本书的第一部分.叫做"Mathematical Prerequisites".学好这一部分是继续前进的前提条件.这一部分的导言前面引用了一句名言,这让我颇为意外.这让我想起

编程学习之简单工厂模式与策略模式

很久之前在学习c++的时候就听到老师说写代码要考虑重构,架构,在此期间学习到了一种简单工厂模式. 何为简单工厂模式呢?简单工厂模式又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 举个栗子,我们可能会遇到这类问题,假如需要一个软件,它可以计算各种图形的面积,使用简单工厂模式来构架的话就是通过创建一个工厂类,而程序运行过程中这些实例化这些具体的计算面积的算法类,然后主程序通过调用这些实例

DirectX游戏编程学习(二)文本显示与基本图元绘制

一.文本显示 在游戏开发中,在游戏界面上现实一些文字信息是很常见的一件事,要学习DX游戏开发,显然了解DX文本如何显示是必不可少的.字符包含诸多的属性,比如颜色,大小,是否加粗,斜体,等等.我们通过DX提供的LPD3DFONT对象来指定这些字体属性,然后再进行渲染. 采用WIN32程序框架实现文本绘制的具体流程如下: 二.基本图元的绘制 无论再复杂的物体,它归根结底都是由基本图元构成的.在CG(Computer graphics)领域,人们普遍使用一组或者多组包围物体表面的多边形近似的表示真实的

C++游戏编程(一开篇)

本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7318264 作者:毛星云    邮箱: [email protected]    大家别叫我楼主能够吗- -.请叫我浅墨 在从第一节開始看这个笔记系列的话,大家会发现,一上来就開始讲DirectX相关的内容,可是写了几节之后,又開始讲 GDI了. 这是由于我写完前几节后,发觉直接讲DirectX有些生硬.最后我想了一下,应该先梳理完GDI相

Windows游戏编程之从零开始d

I'm back~~恩,几个月不见,大家还好吗? 这段时间真的好多童鞋在博客里留言说或者发邮件说浅墨你回来继续更新博客吧. woxiangnifrr童鞋说每天都在来浅墨的博客逛一下看有没有更新,"每天都来就像看女神那般不依不舍",弄得我再不更新都不好意思了,哈哈~怎么说呢,前段时间忙毕设,回国,暑假,间隔年旅行休整,然后是适应新的生活,各种事情,也真正没有心境来更新博客了,最近正好心境安定下来,就继续开始写博.额,关于思想汇报改天我专门写一篇文章和大家交流交流,现在先打住说正事吧~ 首

【教程】原创:历上最简单的游戏编程入门教程(基于cocos2d-js)

前言: 大家好.我是一个游戏开发者.曾就职于cocos2d-x这个手机游戏引擎的开发的公司. 在这边我准备了一个最简单的教程,想告诉大家制作一个游戏有多简单. 回忆起当年刚刚步入游戏这个行业,我也抱着非常多的疑问. 所以如果大家对游戏有兴趣的朋友,可以在下面留言. 这个教程我会讲的非常通俗易懂.争取几句话之内就让你看到一个效果. 另外教程里面有丰富的图文讲解.我保证你学完之后掌握了做游戏的真髓. 你完全可以马上开始做自己的游戏.并且能够让你的游戏在网页上,ios,android 还有pc平台上跑