BiteFight 简单外挂开发之IE篇

C/C++编程日记:制作一个简单的内存外挂 简单外挂 通过 C 语言编写一个简单外挂,通过api函数修改游戏数据,从而实现作弊功能 对象分析 要用的 API 函数简单介绍 编写测试效果 本次游戏对象为 Super Mario XP 没有更新所以可用任意版本 试玩发现人物血量最大为 10,心最大为 99,命最大为 99 要用的 API 函数简单介绍 HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName); 通过类名或窗口名查找,返回窗口句柄 DWORD Get. 阅读详情

 BiteFight 简单外挂开发之IE篇

最近在玩BiteFight(黑暗传说),这是一个简单的休闲性质的网页游戏,模式就是练功、做任务、升级,类似于文字MUD。因为手动练功做任务太麻烦了,而且不能7*24小时进行,于是想做一个外挂。

做的思路有很多,我选择了其中比较简单的两种:
一、基于IE的HtmlView用VC做一个程序,每次刷新页面的时候执行JavaScript任务脚本;
二、做一个FireFox扩展(extension),监听“DOMContentLoaded”事件,执行JavaScript任务脚本。
两种思路我都做了实现,而且运行良好,但是FireFox extension具有一些优势,我将在文章的末尾进行比较。(游戏明确反外挂,所以只提供源码片段和演示程序(适用S1服务器):下载(请用浏览器右键菜单/目标另存为,需更改后缀名)

本篇着重介绍基于IE的HtmlView的关键开发步骤和部分代码:
1. 创建一个基于HtmlView的单文档应用;
2. 增加菜单项,例如:“Robbery Human”,并增加处理函数

void CWebMudView::OnStartRobberyHuman()
{
    m_iCurrentWorkType = ERobberyHuman;  // 设置当前的任务类型

    CString url;
    url.LoadString(IDS_STRING_ATTACK_URL);  // 从Resource 中读取Robbery Human的页面url

    // 把任务脚本内容读取到m_strCurrentScript变量中
    GetFileContent(GetCurrWorkingDir() + "//RobberyHuman.js", m_strCurrentScript);
    
    Navigate2(url, NULL, NULL);
}


3. 重载HtmlView的OnDocumentComplete()虚函数

void CWebMudView::OnDocumentComplete(LPCTSTR lpszURL)
{
    CString title;
    title.Format("[%s] %s", WorkTypeArray[m_iTargetWorkType], lpszURL);
    gGetMainFrame()->UpdateTitle(title);

    switch(m_iCurrentWorkType)        
    {
    ....
    case ERobberyHuman:
        m_iCurrentWorkType = EIdle;   // 把当前的任务类型置空,防止重入
        RunScript(m_strCurrentScript);  
        break;
    ....
    }

    CHtmlView::OnDocumentComplete(lpszURL);
}


4. 增加执行JavaScript脚本函数
void CWebMudView::RunScript(CString strCode)
{
    CString strLang("javascript");
    //
    LPDISPATCH pDisp = NULL;
    IHTMLDocument2 *pHTMLDoc = NULL;
    IHTMLWindow2 *pHTMLWnd = NULL;

    try{
        if (!(::IsWindow(this->m_hWnd)))//!! must do this, for m_hWnd=0xcccc
            return;

        pDisp = this->GetHtmlDocument();
        if( pDisp )
        {
            if (SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc)))
            {
                if(SUCCEEDED(pHTMLDoc->get_parentWindow( &pHTMLWnd )))
                {
                    BSTR bstrCode = strCode.AllocSysString();
                    BSTR bstrLang = strLang.AllocSysString();
                    VARIANT vRet;
                    vRet.vt = VT_BOOL;
                    BOOL bRet = SUCCEEDED(pHTMLWnd->execScript(bstrCode,bstrLang,&vRet));  // 执行脚本
                    if (bRet==FALSE && m_bShowScriptResult)
                    {
                        TRACE("/n!!!!!!!!!!!!!!!!Run Script error!!!!!!!!!!!!!!!!!/n");
                        AfxMessageBox("Run Script error!!");
                    }
                    SysFreeString(bstrCode);
                    SysFreeString(bstrLang);
                }
            }
        }
    }catch(...){}

    try{
        if(pHTMLWnd != NULL)    pHTMLWnd->Release();
        if(pHTMLDoc != NULL)    pHTMLDoc->Release();
        if(pDisp != NULL)        pDisp->Release();
    }catch(...){}
}


5. 编译生成可执行文件
6. 编写RobberyHuman.js,并保存到可执行文件所在的目录
function robbery()
{
  // 如果当前页面不是robbery页面,则延迟并跳转到robbery页面
    if (document.URL.indexOf("robbery.php") == -1)    {
        // alert("Wrong page!!!");
        window.setTimeout("window.location.href='http://s2.bitefight.cn/bite/robbery.php';", 5*1000);
        return;
    }

    if (document.forms.length > 0) {
      // 分析form,提交post请求
        if (document.getElementById('mjz')==null) {
            alert("Robbery human times to max!!");
        } else {
            window.setTimeout("document.forms[0].submit();", 5*1000);
        }
    }
}
robbery();

7. 运行测试

注:外挂的核心其实是JavaScript脚本,可以做的很复杂,自动完成许多任务。

基于IE的BiteFight外挂


在我的机器上我实现的功能主要包括:
1. Work : robbery human->work->robbery->...
  1) robbery human every 10 minutes to max times, or failed, goto 2);
  2) work in tomb for one hour, then goto 1)
2. Protect your Hero : robbery human->robbery hero->work->robbery human->.....
  1) robbery human every 10 minutes to max times, or failed, goto 2);
  2) robbery Hero, or failed, goto 3)
  3) work in tomb for one hour, then goto 1)
3. Training Upgrade : work->robbery human->training->work->....
  1) work in tomb for one hour, then goto 2)
  2) robbery human every 10 minutes to max times, or failed, goto 3)
  3) try to upgrade you skill's level, or failed, goto 1)

由于BiteFight使用cookie保存session, 每次提交form的时候都会提交保存的session,而IE只有一个profile,共用cookie,因此只能保存一个session,所以基于IE的HtmlView实现外挂在同一台PC上只能运行一个,无法同时练多个Hero。而在同一台PC上可以运行多个FireFox,其中每个FireFox使用自己的profile/cookie,所以基于FireFox Extension的外挂可以同时运行多个。

 

游戏安全02:手游外挂简单分类和实现原理介绍 文章目录一、外挂分类1)辅助版(需要依赖客户端,不能独自生效),根据作用范围分为:(1)专用插件:so、dylib(2)通用工具:内存修改器、变速器、按键精灵、模拟器、抓包工具2)破解版:脱机挂、受损客户端二、外挂实现原理1)辅助版本外挂实现原理(基于游戏客户端动态修改游戏数据类型)(1)专用插件(2)通用工具2)破解版外挂实现原理(预先静态修改后的独立游戏客户端,可以分为:逆向分析游戏协议、对游戏客户端修改后实现的游戏破解版,可以根据修改后的客户端数据的不同分为逻辑代码和数据资源)(1)逻辑代码(2)数据 阅读详情

相关推荐

简单游戏外挂,植物大战僵尸外挂,附cpp源代码

#include "stdafx.h" #include #include int ***p = (int ***)0x007794F8; unsigned char *Pause = (unsigned char *)0x00472B50;  //指向暂停函数代码头部,内存属性不可写 HANDLE hProcess; void ModifyCode() {

QQfather的专栏 4196

简单外挂详解

简单外挂详解 由于win系统不允许进程间相互修改,采用dll注射的方法修改一个exe文件中的值。 一个简单的程序: #include<stdio.h> #include<windows.h> void main(){ int x = 10; int y = 100000; printf("%x,%x\n" ...

bad0126的博客 429

Adventure Time Wallpaper HD Custom New Tab-crx插件

冒险时间New Tab壁纸和游戏,专为冒险时间爱好者创建。 将新标签替换为冒险时间新标签。 安装此冒险时间新标签页,即可在自定义开始标签页中欣赏各种高清壁纸。 特征:>轻松,从您的冒险时间新标签页中搜索。 >使用每个新标签,您将获得冒险时间的丰富背景。 >简单的设计,流畅的效果。 >从我们的画廊中选择其他主题。 >高清新标签页体验。 >新标签页上存在快速链接,共享和评分小部件。 立即从冒险时间爱好者那里获取可爱的冒险时间背景! 我们真的希望您使用我们美丽的冒险时间新标签获得乐趣,并让您的朋友知道,以便他们也可以喜欢它! 语言:Bahasa Indonesia,Bahasa Melayu,Deutsch,English,Filipino,Français,Kiswahili,Nederlands,Norsk,Tiếng Việt,Türkçe,català,dansk,eesti,español,hrvatski,italiano,latviešu,lietuvių,magyar,polski,română,slovenský,slovenščina,suomi,svenska,češ

简单外挂制作

外挂的实现方法有很多种这里只说说简单外挂方法,其实网上有好多这样的文章,大家如果有兴趣可以找到很多这方面的资料,这里只说说其中的一种比较简单的方法.1.启动游戏2.得到程序的进的ID 比较常用的方法有findwindow()得到窗口的句柄,更进一步你可以得到进程ID,但是对于例如连连看一样的游戏而言,得到窗口的句柄就已经足够了。(其中值得注意的是,findwindow里面的参数,有些有些为了防外

OpenHero 开勇 4991

C#写了一个游戏外挂[转发]

最近经朋友介绍开始玩 密传 网络游戏 升级升级,突然觉得太费键盘,于是自己用C#写了一个程序,想代替我的操作,自己去打怪物,自己升级 用这个东西升了好多级了,现在把源码贴出来,和大家共享,欢迎大家批评指正,感激不尽。 程序大概分成两个部分,一个部分是类库,一个是应用程序 大概的思路就是找到游戏进程的主窗口句柄,然后发送游戏按键消息(模拟按键)。 XDF.GamePlugInCommon 类库项目 ...

weixin_34392843的博客 815

万字长文带你了解“游戏外挂”?零基础入门到精通,收藏这一就够了

而在IOS平台下,代码都在app的bin文件中,和Android中的so类似,只需要了解THUMB即可。其实核心点在于内存,在内存中是正在运行的指令以及缓存等数据,功能性外挂通常通过修改内存数据,改变其运行原理,达到其想要的效果,例如通常在游戏中会有个全局变量来记录当前移动速度,可以使用Cheat Engine、GG修改器等内存工具找到并改变这个值就可以实现加速的效果。一个rlgg,一个加验证的lua,一个改了个名的“直装”,就是所谓的“登峰造极”了,然后建个群,发些公告,圈个十块八块的网费。

Python_paipai的博客 2万+

游戏外挂怎么做?零基础入门到精通,收藏这就够了

游戏外挂是指破坏游戏正常数据和逻辑的工具,分为辅助类和破解版两大类。辅助类外挂需依赖游戏客户端运行,包括专用插件(针对特定游戏,通过注入和HOOK技术修改代码逻辑)、通用工具(如内存修改器、变速器、按键精灵、模拟器和抓包工具)。破解版则是独立运行的非法客户端,包括脱机挂(逆向协议开发的第三方客户端)和受损破解版(修改正版客户端数据)。外挂实现原理多样,如内存读写、协议篡改、模拟按键等,严重影响游戏公平性。随着技术发展,还出现了AI辅助挂等更高级形式。

kjuhfkicf154的博客 8775

C#简易外挂制作

游戏脚本分为很多种类型,例如本地客户端的内存修改、远程服务器的封包破解。一般的网游由于服务器的机能限制,并不会将游戏产生的所有数据、计算都提供给服务器来承担。经常的,服务器只会将玩家人物的属性、血量、加点、金钱、装备等重要信息储存在服务器本地,计算结果和数据传递则是通过加密封包来和客户端传输。因此网游如果封包被破解而被用户发送伪造的封包数据将造成非常严重的后果。

烧饼的博客 1506

C#dC# 简单网页外挂实例

1 实例1  此处所说的网页外挂即是网页自动化操作;获取网页上的元素属性;用程序点击网页上的按钮或链接等; 打开百度首页,在输入框自动输入10个字符串,自动点击 百度一下 按钮;   主要使用webbrowser控件操作; 首先用开发人员工具查找到百度首页的搜索输入框的id为kw,百度一下 按钮的id为su,如下图;   代码; using System; using Sys

bcbobo21cn的专栏 6259

基于python的简易安卓小外挂制作

 1.前言    初学python,看到微信跳一跳外挂觉得挺有意思,想做个比这个稍简单的来学习一下相关语法与模块(此外挂只用于学习!并没有过多关于外挂的知识!)所做的游戏就是这个!开心斗游戏中的消砖块小游戏通过点击屏幕来使该位置增加方块,从而达到消掉一层四个砖块,是一个简单的休闲小游戏。2.所用工具/前期准备    (1).python3.X              请读者自行配置环境。    ...

qq_35624030的博客 1万+

C#简单游戏外挂制作(以Warcraft Ⅲ为例)

    网上有很多外挂制作的教程,大多是讲针对大型网络游戏的,主要包含一些抓包、反汇编、C++的知识综合。事实也如此,常见的外挂都是使用VC++写的,从来没有过C#或者其他.NET语言编写的外挂。     作为微软.NET技术的忠实粉丝,这难免是一种遗憾。不过不要紧,下面流牛木马就教大家两招,包教包会,免收学费。 :)     其实作为游戏外挂来说,主要就是三个功能:模拟键盘操作、模拟鼠标操作...

weixin_34189116的博客 930

逆向工程第006:简易游戏辅助的实现

前言 从本文开始,我会为大家介绍游戏辅助工具的实现,涉及到逆向以及Windows程序设计等知识。本文所研究的游戏选自于【日】爱甲健二编著的《有趣的二进制》,本文中游戏介绍部分的内容,也是源于该书。 射击游戏规则介绍 我们首先来看一下本次的示例游戏,运行shooting文件夹中的shooting.exe即可: 这个游戏的规则如下: ● 空格键:射击 ...

Gleam的专栏 5364

C语言的图形界面?——简单外挂程序

简单接触c语言图形界面后就想把之前的控制台外挂小程序变成图形界面,仅供娱乐,目前只完成了两个版本即年度版和中文版的阳光和金币修改,其他修改可自行搜索偏移地址,这里奉上一个人认为比较详细的ce寻找基址的攻略和植物大战僵尸的全地址,大神勿喷~~ 1.我爱秘籍植物大战僵尸全地址 2.ce寻找游戏基址 先简要说明下环境: /******** 编译环境:VS2015 &amp;lt;最近一次修改:2017

PorYoung 3万+

一个简单外挂制作

 一个简单外挂制作作者:吴益兵下载源代码关键字:外挂,连连看引言:  最近在朋友那搞了个连连看游戏来玩玩,觉得还不错,不过就是玩不过人家, 记得以前在一本书上看到过连连看外挂的做法,还比较简单,自己还没忘,于是下定决心, 自己做一个,然后……。哈哈,看谁还打得过我。  好了,现在说下外挂的具体思路(我假设大家都知道连连看游戏的规则)。 这个外挂无非就是要电脑来帮我门找到相同的

1879

C语言C++制作游戏外挂,一个简单的内存外挂

通过 C 语言编写一个简单外挂,通过 API 函数修改游戏数据,从而实现作弊功能 对象分析 要用的 API 函数简单介绍 编写测试效果 总体评价 下面是小编整理好的一套C/C++资料,加小编C/C++编程学习群825414254获取系统性学习C/C++的学习资料 对象分析 本次游戏对象为 Super Mario XP 没有更新所以可用任意版本 试玩发现人物血量最大为 10,心最大为 99,...

3万+

IE外挂

//引用 Windows/system32/Shell32.dll //引用COM组件 shdocvw.dll (Microsoft Internet Controls) //引用COM组件 mshtml.tlb (Microsoft HTML Object Library) //系统进程中获取IE所有已打开的Tab标签 SHDocVw.ShellWindows shell...

weixin_30654583的博客 142

谷歌浏览器js外挂 写法

今天遇到一个刷楼赠手机的活动,才萌生了这个想法 思路,自动填写内容,然后触发按钮的点击事件 在谷歌的控制台,这里可以直接输入js代码执行你想执行的动作的, 按照以上逻辑那么只需要添加一段定时js,执行回帖任务就ok了。 代码如下 window.setInterval(function(){ window.document.getE

码上行动 6272
上一篇: 怎样在同一终端上多帐号登陆同一服务器?
下一篇: SVN常用命令学习笔记
CodeJoker
博客等级 码龄18年 50粉丝 37原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值