游戏启动的一般架构

  1. 登录器程序 启动游戏主程序 游戏中完成登录
  2. 登录器完成登录 传送token至游戏客户端 游戏根据token 登入账号
  3. 客户端直接启动

为什么不能直接启动呢?而必须要通过登录器来启动?

网络游戏面对很多的情况。

  1. 游戏的版本,登录器启动的情况下就可以验证一下版本 版本不行就可以更新一下,自己更新自己是不太好,当然也有一种就是热更新,但是热更新中间也是有跳板来做的,更新的文件,如果是更新这个程序,热更新也是很难去操作的
  2. 主程序可能会被别人破坏 如果是做了硬件补丁 登录器可以把文件读一下,发现crc32或者摘要跟记录的不一样,就拒绝启动,并提醒修复一下,不让直接启动,所以主程序里也有验证的机制 所以分析这个东西的时候,第一要分析登录器是怎么启动的,启动前做了什么操作,还要分析为什么不启动,其实当我们手动打开程序的时候,其实是已经启动了,只不过后面又退出了  why?
  3. 登录器里输入账号密码的情况,除了要分析启动是怎么启动的,还要分析登录是怎么登录的比较low的 就是登录器启动的时候 把账号密码传递给 主程序(很少)大部分都是登录器会和服务器进行通信,这个时候就会把账号和密码传递给服务器,服务器这个时候就会验证,不通过就告诉你账号密码不对,通过的话,就返回一个字符串,是一个过的东西  叫token,相当于一种凭证,把这个token传递给主程序,主程序拿到这个token又会找服务器,服务器生成了token肯定是有记录的,知道账号密码,直接就在游戏里把账号密码给它了(近几年的架构)
  4. 直接启动,一般是ui的操作

一般这些都是进程间的通信,进程间通信一般用的也就这几种

  1. 命令行   (用的最多的)可能会做一些限制性的东西来排除人工手动的操作
  2. 油槽管道  (稍微隐蔽一点)通过api还是能看到
  3. 共享内存      (很隐蔽)这是最难做的 最终还要从内存的读写去看
  4. 消息队列     (特别少)
  5. 信号量互斥量

首先看命令行

发现直接打开是失败的

不过把用登录器启动的命令行复制下来 发现启动成功了。

改一下命令行 发现寄了

再改回来发现也不能启动

发生变化的点就是 时间 或者这个应用程序没关闭有什么隐藏的东西还在和游戏通信

这样就来看下为啥启动不了。

这个弹窗一看就是用messagebox 来弹出的

直接附加断下

发现 是从这个mov过来的  那肯定是有个跳转跳来了

分析模块 看看是从哪里跳来的

发现了这个GetTickCount 发现这个函数来获取时间 这下就知道了。。

原来是因为时间的问题
然后做了某一个计算

但在cmp eax,1D4C0才使用了它  转下10进制发现是120000 也就是 120秒这下就真相大白了。。

命令行有一个包含时间的数据,

这个差值超过120秒就拒绝启动

time1 - time2 就是了esi就是time1

前面又有一个这个函数来获取命令行 那肯定就是这一串了

把这个字符串传入

这个函数 基本可以确定是转数字

多开的实现:

.

因为这个游戏只能打开三个客户端首先猜测是 信号量

首先对其入口点注入阻塞住 ,然后附加 断下信号量函数

发现创建了个信号量 名字是GameLogicSemaphoreBG 初始是3 3 
也就是说初始引用计数是3 最大是3

ret过去后发现他又 WaitForsingleObject来减少引用计数

那只需要找个地方直接ReleaseSemaphore来恢复就行了

直接初始化模块初始化的时候加上这几句就完了

​​​​​​​HANDLE Event = OpenSemaphoreA(SEMAPHORE_ALL_ACCESS, FALSE, "GameLogicSemaphoreBG");if (NULL == Event)CreateSemaphoreA(NULL, 3, 3, "GameLogicSemaphoreBG");ReleaseSemaphore(Event, 1, 0);return TRUE;

游戏启动流程的逆向分析与多开的实现相关推荐

  1. 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | Hook 点分析 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  2. 《炉石传说》架构设计赏析(1):游戏启动流程

    今年的Unity Awards两项大奖颁给了暴雪的<炉石传说>,这真是对Unity一个再好不过的宣传了--你看,暴雪都开始用Unity了.大家都知道,目前Unity发布的游戏大多都没有对程 ...

  3. uboot启动流程概述_uboot 分析之 启动流程

    uboot的启动流程: 看一幅图: 1.第一阶段:start.s的内容: 点击(此处)折叠或打开 #include @该文件是第二步中mkconfig文件执行时创建的.include/config.h ...

  4. 关于绝地求生游戏白名单画中画逆向分析

    关于绝地求生某辅助白名单画中画逆向分析<二> 拖了好久,最近在忙着找工作,延误给大家分享心得的时间,好了废话不多讲步入正题. 猜测该外挂用的是steam协议了.那怎么来确定他是否用的是st ...

  5. cc.game对象和游戏启动流程

    cc.game是Cocos2d-JS的游戏对象,主要职责包括,配置的读取,引擎的加载,游戏脚本的加载,以及游戏的启动. cc.game对象目前的设计非常精简,使用也非常简单,开发者需要关注的只有非常有 ...

  6. EOS主网启动流程实践及分析(搭建自己的EOS多节点测试主网)

    昨晚在细看ram消耗的问题时候,搭建了完整的测试主网,经过更新,发现现在的搭建过程还是很便利的,于是刚刚整理了下,希望对大家有帮助. EOS dawn-v4.1.0版本开始就有EOS主网启动教程项目了 ...

  7. openwrt procd启动流程和脚本分析

    Linux内核执行start_kernel函数时会调用kernel_init来启动init进程,流程如下图: graph LR A[start_kernel] -->B(rest_init) B ...

  8. 【ElasticSearch】Es 启动流程 源码分析

    文章目录 1. 概述 2. start方法 2.1 启动生命周期相关的组件 2.2 启动IndicesService 2.3 IndicesClusterStateService启动 2.4 Snap ...

  9. [安全攻防进阶篇] 一.什么是逆向分析、逆向分析应用及经典扫雷游戏逆向

    从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...

  10. [系统安全] 六.逆向分析之条件语句和循环语句源码还原及流程控制

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

最新文章

  1. HTTP学习三:HTTPS
  2. erlang mysql driver_erlang_mysql_driver 源码分析2
  3. 基于Java语言构建区块链(六)—— 交易(Merkle Tree)
  4. word报错:题注或页码中不含章节编号。请使用“开始”选项卡上的“多级列表”按钮,然后选择链接到标题样式的编号方案(无法添加题注)
  5. 程序员相亲记之准博士mm
  6. 自定义线程类中实例变量与其他线程共享与不共享
  7. c语言行列倒置算法,循环行列的元素倒置。求指点
  8. 物联网中的无线通信模块到底是什么
  9. java中list()和listfile()
  10. LintCode 373: Partition Array
  11. 整数数组按绝对值排序
  12. ctf 抓捕赵德汉_2017年网络空间安全技术大赛部分writeup
  13. C++之指针探究(三):指针数组和数组指针
  14. caffe 将数据(非图像和图像)转成lmdb格式的数据
  15. java 导出word 表格里写多行内容_论文Tips || 宅家写论文干货来了!是时候重启真正的论文了!...
  16. 第7章 EL表达式和JSTL
  17. 零基础自学Java要多久,是不是很难?
  18. php聊天室发送表情,聊天室技术(六)-- 表情和动作_PHP
  19. mac ~/.vuerc may be outdated. Please delete it and re-run vue-cli in manual mode.
  20. 五到十分钟java演讲_10分钟励志演讲稿5篇最新

热门文章

  1. 使用 Nginx 服务器配置 flv、mp4,可以直接浏览器播放
  2. 浏览器播放rtsp视频流解决方案
  3. 管理学定律三:羊群效应与刺猬法则
  4. 网页效果图设计之色彩配色索引
  5. win11系统管理员身份在哪里?怎么设置
  6. CKeditor配置
  7. swf播放器air android 版,网极SWF播放器(com.webgenie.swf.play) - 1.6.3 - 应用 - 酷安
  8. idea 商业版 社区版_idea社区版和商业版的区别
  9. C语言中EOF是什么意思?
  10. Server 2012 R2 RMS文档管理系统