协议型外挂制作四

原创 2004年10月30日 10:58:00

协议型外挂制作四

By rix

       上一次我们说了外挂中APIHOOK和基本平台的搭建,但仅仅只用APIHOOK在大多数的时候并不能达到目的,没有哪个公司会将网络打包加密解密解包的程序放在dll中以函数的形式就可以查看。所以这节来讲解为目标程序打内存补丁来修改程序的执行路径,通过这种办法让目标程序成为我们的奴隶。

       前两天由于项目的关系,耽搁了两天教程,对不起大家。今天写教程时才发现,我当时研究程序文件用的是ida 4.17的版本,前段时间刚刚换成了4.7版本。虽然现在的版本比以前更好用,但版本的不兼容却让我头痛,最后没办法又找了个4.17的版本来用。这节中还需要使用的另外一个工具是W32dasm,W32dasm的快捷和为程序打补丁的方便是我最喜欢他的原因,ida 4.7是否支持和W32dasm那样的功能我还不知道,毕竟我刚刚装上,还没怎么用过呢。

       废话就不说了,为程序打内存补丁和做游戏修改器差的不太多,只是游戏修改器修改的是数据,而内存补丁修改的是指令,在做之前,请一定要做好祈祷,虽然我会尽可能的将我所知道的注意点说出来,但仍然不敢保证你是否会出现非法指令、内存越界等等,如果出现蓝屏一定要买彩票阿,反正我是没有遇到过。

       关于如何做内存补丁,在看雪出的那本《加密与解密》上有详细的讨论,这里简单说一下注意点:

1、  尽可能的调用程序本身的函数,除非没有办法再自己加载函数。

2、  在调用函数之前,一定要将相关函数的寄存器内容保存,在调用结束后,要将其内容恢复。

3、  注意堆栈平衡。

4、  由于我们要给源程序添加代码,因此尽可能的找一块空余的不会被修改内存(内存页4K对齐,这样的内存应该不难找),如果运气差的话,只能自己来申请内存了。

对于xy2.exe的程序来说,程序里面使用了SendMessage函数,这个函数使用方便,居有很大的广泛性就不用说了。因此我们准备使用该函数来将相关内容发送给外挂程序。不过在做这部分之前,我准备先给程序打补丁来防止目标程序升级来练练手。

作外挂最主要的工作是对目标程序的分析程度,分析程序主要用的是汇编的知识,有时候我想将汇编说成是调试程序更确切些,因为我大部分时间都是在用汇编调试,只有很少一部分时间来用汇编写程序。

xy2.exe的程序用ida反编译,这里用的xy2.exe的版本是9.16之前的版本,从8.12之后到9.16之前xy2.exe的程序都没有做任何改动,因此这段时间的任意一个都是可以的。

移到地址.text:0042BB80处,这里就不给出代码了,代码太长了,足足有8个页面。这里大概就是WinMain函数,我不知道Ida4.7会将这里作为那个函数名,我用的是4.17,给的函数名是:sub_0_42BB80    proc near。通过研究该段代码,我们可以发现这段代码是函数的主程序,功能有下面的几点:

1、  检查更新,启动更新程序。

2、  查看是否播放录像文件,并将程序设置为相应的状态。

3、  设置程序运行的速度。

程序整理后的C代码我就不写了,根据ida给出的程序流程图很容易写出来的。

研究程序可以发现在地址.text:0042BC13处经过判断之后,就会检查大话程序的5个主版本的文件,通过调用下面的函数:

.text:0042BC15 0B8                 call    sub_0_4480E0

.text:0042BC1A 0B8                 call    sub_0_4481C0

.text:0042BC1F 0B8                 call    sub_0_4482A0

.text:0042BC24 0B8                 call    sub_0_448380

.text:0042BC29 0B8                 call    sub_0_448460

.text:0042BC2E 0B8                 push    ebx

.text:0042BC2F 0BC                 call    sub_0_4488E0

.text:0042BC34 0BC                 add     esp, 4

对于之前的这个判断,我想可能是播放录像用的。在接下来的5call之后,调用sub_0_4488e0来调用升级用的对话框。要修改程序避免升级就简单多了,只用将这个跳转跳过去就行了。这里不用考虑堆栈的平衡,从ida给出的堆栈指针来看,跳转前后的堆栈是一样的。

       因此在我们调用CreateProcess之后,就可以通过WriteProcessMemory来进行修改了,将跳转指令的前一个字节改为0xEB,后面的那个字节不用动了,后面的那个字节是用来控制跳转的距离的。这样原来的代码就由:

       .text:0042BBE9 0B8                 jz      short loc_0_42BBF1

变为

.text:0042BBE9 0B8                 jmp      short loc_0_42BBF1

了。

       如果你不愿意通过程序来调用,也可以直接修改xy2.exe文件来做到,不过建议将xy2.exe文件备份一个,方便以后升级用。

       对于避免弹出主页,也可以通过相同的办法,但修改的不是一个跳转指令了。这里仅仅给出一点点提示,可以自己去尝试:

1、  xy2.exe通过调用ShellExecute函数来弹出主页,可以根据引用段来快速找到调用的办法。

2、  在修改的时候,注意堆栈的平衡点。

上面的都是对于9.16之前的版本,之前的版本没有给程序加壳,可以这么来做。但9.16之后的程序都是被加了壳的,这样做就不可以了。不过可以先将程序脱壳。大话的注程序使用的是PECompact的壳,脱这个壳有个最快速的办法,这也是我在郁闷了几小时之后才发现的。刚开始的时候我用peid版本太低,竟然不认识这个壳,老实的我只好手动脱壳。脱完之后在看雪的站上转转,看有什么新的点子没有,发现peidV.92版本,比我的新多了,就下载下来看看,发现是PECompact2.X的壳,更重要的发现是这个版本的peid可以脱比较简单的壳了,就在插件里面躺着,随便一试,发现竟然可以直接脱掉,这更过程不用1分钟。脱壳之后就可以按照之前的办法弄了,不过目标程序改为了脱壳后的文件,最新版本的xy2.exe程序(10.30之前)的免升级跳转点在

.text:0042BA7B                 jnz     short loc_42BAA8

。免弹出主页修改地址在:

.text:00444840                 mov     eax, [esp+8+var_8]

今天这节就讲解这些,并没有用到w32dasm,下一节主要讲解用于拦截数据的内存补丁,将会频繁使用w32dasm

非常感谢热心网友alan将之前的教程整理成为VC的版本,如果对此版本有什么疑问的话,可以给他发E-mail:tyr_alan@hotmal.comalan整理出来的源文件我会随着教程和我拿到的版本粘贴在www.gameres.com上,源文件的版本可能和教程的内容不符合^_^

Alan的文件地址:http://blog.gameres.com/upload/sf_20041030104834.rar

本文章只贴于www.csdn.netwww.gameres.com Blog上面,请勿将文章用于任何商业场合,如果因为本教程引起其他的后果的话,则与本人无关,本人只讲技术实现。如果要转贴的话,请注明出处,如果有疑问或者商议的话,请发E-Mailzeze0556@sina.com或者QQ23033206留言,MSNzeze0556@msn.com。另外请勿给我信箱发垃圾邮件,在添加好友的时候一定要写好附言,我已经被莫名其妙的广告信件和流言蜚语吓得没有胆了。算是我求各位大虾了

协议型外挂制作五

协议型外挂制作五By rix       第一节到第三节我们说了基本工具的准备,第四节使用免升级和免弹出主页来做了一下基本的练习。第四节中和普通的游戏修改器没有太大的区别,只是一个修改的是数据,一个修...
  • zhangze
  • zhangze
  • 2004年11月03日 12:31
  • 1751

协议型外挂制作

       目前,网络游戏的外挂从程序角度主要分为辅助型的动作外挂和内核型的协议型外挂。动作外挂主要帮助玩家进行一些重复性的劳动量,网络上有许多介绍这方面的程序,按键精灵就是一个很好的例子。协议型外...
  • sanshao27
  • sanshao27
  • 2007年06月20日 10:24
  • 2195

协议型外挂制作教程三

协议型外挂制作教程三By rix       上一节中我们说了外挂平台的搭建,我们做完了Hook.dll和wg.exe,但如何让wg.exe调用Hook.dll中的函数,可以自己查看CB的教程或者到网...
  • zhangze
  • zhangze
  • 2004年10月27日 10:06
  • 2139

协议型网络游戏外挂制作之启动

目前,网络游戏的外挂从程序角度主要分为辅助型的动作外挂和内核型的协议型外挂。动作外挂主要帮助玩家进行一些重复性的劳动量,网络上有许多介绍这方面的程序,按键精灵就是一个很好的例子。协议型外挂则给人一个很...
  • equationdz
  • equationdz
  • 2008年02月03日 17:56
  • 458

DIY四旋翼笔记一

拿到元器件和板子,很开心,很激动。为了做这个毕设花了很多钱,也将花很多时间。算是给自己的大学生涯多添点精彩的回忆吧,好久没有焊元器件加上打样的PCB比较便宜质量很差,第一天晚上就焊坏了一个板子(MPU...
  • fly__chen
  • fly__chen
  • 2016年12月20日 20:56
  • 666

四旋翼微型飞行器设计

作者:红桃K  0 引言  微型飞行器(Micro Air Vehicle,简称MAV)是20世纪90年代发展起来的一种新型飞行器。根据美国国防高级研究计划局(DARPA)的定...
  • u011006622
  • u011006622
  • 2017年02月22日 10:22
  • 844

四旋翼飞行器教学笔记1 ——四轴飞行器飞行原理简介

顾名思义,四轴飞行器由四个螺旋桨高速旋转产生升力,为其提供飞行动力。 四个电机转向正反各两个,可以相互抵消反扭矩。不同于常规固定翼飞机,多旋翼无人机属于静不稳定系统,因此必须依赖于强大的飞控系统才...
  • jerryandtony
  • jerryandtony
  • 2017年08月30日 13:51
  • 309

第一个游戏外挂,附上详细制作过程

本教程分为几大部分 一、  先创建外挂对话框,定义外挂所需要的基本功能 二、  找出棋盘数组的地址,读出棋盘数据 三、  编写实现消去棋子的代码框架 四、  实现消去棋子功能 五、  修...
  • mysouling
  • mysouling
  • 2013年03月13日 17:19
  • 1998

11月开头篇-屏幕适配&机型测试机解决方案

公司没有测试机或者机型不多?找不到小屏幕手机?没有I5I7处理器,无法使用虚拟加速?intel处理器启动arm’处理器的模拟器超级慢?好的,这是你的福音,我们可以使用线上或线下的虚拟设备; 模拟器 ...
  • sdjianfei
  • sdjianfei
  • 2016年11月03日 14:46
  • 1206

四轴飞行器的原理和组成

四轴飞行器的原理和组成
  • u014621518
  • u014621518
  • 2015年03月18日 15:18
  • 1132
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:协议型外挂制作四
举报原因:
原因补充:

(最多只允许输入30个字)