什么是线程循环发包 ?

15 篇文章 3 订阅
订阅专栏

介绍

有线程循环发包,就有非线循环程发包(也叫主线程发包)。在游戏中线程循环发包会导致调试器断下后查看调用栈拿不到有用数据(不同的操作触发的发包断点,调用栈都一样),而主线程发包则可以在调用栈中查看是谁调用了发包功能。相比线程发包,逆向主线程发包会更加容易。

如何分辨是不是主线程发包

首先肯定是跳转到3大发包函数,send , sendto ,WSASend 分别下段。 如果还没等你操作断点就马上就断下而且断的非常的频繁,那么基本就是线程发包了。除此之外,是主线程发包的可能性比较大了。

主线程发包逻辑:
1.玩家操作
2.调用功能call
3.整合明文数据包
4.数据包加密
5.系统调用发包函数

在这里插入图片描述

这种情况,只需要在发包函数下断点然后一直让调试器执行到返回(也可以直接看栈回溯),最后就能回溯到功能call

线程循环发包逻辑:
**1.玩家操作
2.调用功能call
3.整合明文数据包
4.数据包加密
5.封包入队列
6.发包线程从队列中取出封包并发送
**
在这里插入图片描述

这种线程循环发包与真正的功能CALL是独立的,所以如果要分析这种方式发包的游戏就得从发包的数据跟随找数据来源。

因为我们要从数据的来源分析,所以就需要跟着 send 函数的buf 参数开始着手分析:

int send (SOCKET s, const char *buf, int len, int flags); 

给 buf 下内存写入断点,这个时候会基本都会断在一个 mov xxx,yyy 的指令上,观察 [yyy] 是否为你找找的包头特征,如果是,就多次执行到返回,最后就可以到达程序领空。

为什么给buf设内存断点就能跳出死循环?
因为给buf设内存断点的时候,你断到了组建buf的过程(也就是步骤 3/4),当你跳出这个过程的时候,那你就找到了组建的开始,也就是功能call执行完后,开始组包 。

为什么bp send会一直都是一样的结果 ?
bp send的时候,断到的是组好包后的结果,发包线程和功能call线程不在同线程,调试的时候只有一个线程是激活状态,其他线程都出去挂起状态,单步跟踪无法跨越线程。

但是这种方法有一个前提,就是 buf 的地址必须是固定的,如果游戏的代码写成这样:

// 如果是在循环外面,就可以使用上面内存写入断点的方法
// char buf[256] = {0};
while(1){
	char buf[256] = {0};
	// 调用 send 发包函数
}

那么每次调用 send 的时候,buf 都是新申请的内存导致地址变更。但好在在这个大循环里创建变量本身就是很消耗性能的,大部分的游戏不会这么写,但如果真碰到了只能找其他的思路了,比如从封包队列入手。

阿里面试题:ConcurrentHashMap为什么是线程安全的?
01-20
阿里面试题:ConcurrentHashMap为什么是线程安全的? ConcurrentHashMap,其实是线程安全的HashMap,所以阅读ConcurrentHashMap,建议 先阅读一下两篇介绍HashMap的文章 你真的懂大厂面试题:HashMap吗? jdk1.7 HashMap中的致命错误:循环链表 jdk1.7 ConcurrentHashMap jdk1.7 ConcurrentHashMap数据结构 jdk1.7 ConcurrentHashMap是由一个Segment数组和多个HashEntry数组组成 其实就是将HashMap分为多个小HashMap,每个Segme
StringBuilder为什么线程不安全?
01-20
作者:千山 juejin.im/post/5d6228046fb9a06add4e37fe 引言 面试官:StringBuilder和StringBuffer的区别在哪? 我:StringBuilder不是线程安全的,StringBuffer是线程安全的 面试官:那StringBuilder不安全的点在哪儿? 我:。。。(哑巴了) 在这之前我只记住了StringBuilder不是线程安全的,StringBuffer是线程安全的这个结论,至于StringBuilder为什么不安全从来没有去想过。 分析 在分析这个问题之前我们要知道StringBuilder和StringBuffer的内部实现跟S
如何编写线程安全的代码?
01-27
从根源上思考关于这个问题,本质上是有一个词语你没有透彻理解,这个词就是所谓的线程安全,threadsafe。 如果你不能理解线程安全,那么给你再多的方案也是无用武之地。 接下来我们了解一下什么是线程安全,怎样才能做到线程安全。 这些问题解答后,多线程这头大怪兽自然就会变成温顺的小猫咪。可上图关小猫咪屁事!生活中我们口头上经常说的一句话就是“关你屁事”,大家想一想,为什么我们的屁事不关别人?
MFC线程自定义消息循环
01-05
MFC线程自定义消息循环
挂茶馆VIP线程发包教程
07-23
教程名称:挂茶馆VIP线程发包教程  资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
线程线程池、并发包
HaosCoder的博客
11-20 206
1.线程池(java.util.concurrent) 为什么要有线程池 ? 我们知道。使用线程来处理任务,可以达到一定程度的并行计算的效果,在一些比较耗时的操作时候不用一直等待,比如以下i/o操作。那么每次需要的时候就创建一个线程来处理这种任务就好了,为什么要引入线程池这个概念呢? 主要存在三方面的原因: 线程生命周期的开销非常高。 创建线程是需要时间的,并且需要JVM和底层...
循环中的线程
boluo1982107的专栏
12-31 3007
    在循环中创建新线程,是初学者常犯的错误。下面给出一段示例代码,注意:运行它们可能导致系统不可使用。除非不介意重启,否则最好别运行它们。 using System;using System.Web.Mail;using System.Threading;using System.Collections;public class LoopingThreads
java发包工具_【发包工具】http多线程发包工具
weixin_39712865的博客
02-13 383
发包工具】http多线程发包工具使用方法:输入地址,发送的内容,线程数,等待时间,每个线程发送的次数,GET/POST请求。源代码package com.xmxkkk.httptest;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.TitledBorder;publ...
天龙hJ线程发包处理方法如何跳出线程发包
微尘网络安全
02-23 1468
谈到封包,大家第一就想要去找明文包,因为 有了明文包 基本所有的功能call全部都可以找到和实现了,但是现在很多端游都是线程发包的,遇到这个问题 很多人都不知道怎么解决了 那今天就说下这个问题,如何跳出线程找到明文包 以天龙hj为例: 首先OD 加载游戏,CTRL+G 跳转到ws2_32.send 如下图 然后 send 头部下断,观察堆栈窗口 第二个参数 就是 即将send出去的数据,既然知道了他是线程发包 那首先观察发现 这个数据地址是一直不变 那说明什么 ? 说明 是别的线..
线程循环
我的技术博客
02-07 114
@selector(xxxThread)方法以后,在方法中添加 [code="java"] -(void)xxxThread { NSAutoreleasePool* pool = [NSAutoreleasePool new]; NSRunLoop* loop = [NSRunLoop currentRunLoop]; NSTimer* time...
游戏安全——线程发包
07-27
<p><img src="https://img-bss.csdnimg.cn/202107270634246221.png" alt="" /></p>
x86游戏逆向之实战游戏线程发包与普通发包的逆向
彭于晏长沙分晏
05-27 1811
下面的演示以天龙八部私服和官服分别演示,因为天龙八部私服发包不频繁所以用来演示第一种方法,具体操作就是 进游戏有下send断点,然后对数据包下硬件访问断点,我们去游戏选怪,硬件断点断下后,删除我们下的断点,然后Ctrl+f9一层一层返回,每次返回的CALL都下个断点,然后让游戏跑起来,跑起来后我们再选怪,对断下的地方进行分析。既然是这样,那就说明,你往数据缓冲区写包数据的时候之前肯定会调用某个公共函数,那我们只要分析硬件断点断下来的时候堆栈里面有没有公共函数就行了,然后我们去最外层的公共函数分析。
游戏安全UE4引擎之天堂W跳线程,HOOK明文收包发包并分析加密解密,实现send发包
任鸟飞2217777779的博客
08-19 3895
游戏安全UE4引擎之天堂W跳线程,HOOK明文收包发包并分析加密解密,实现send发包
封包协议,加密解密,线程发包,recv,明文收包(转载)
Fiverya的博客
03-27 1202
2.掉线立刻下线, 比如以前的老游戏,电脑蓝屏关机了,由于没有自然下线, 心跳也特别少,人物可能还在上面很长一段时间,这是不安全的,比如传奇2。通过三个函数的特征码到对应模块中进行搜索,这里注意的是这个重新实现的发包函数,可能在原来的模块中ws2_32,也可能在游戏自己的某个模块中。B:... A:在吗?もしもし、韓さんです。功能函数1---》功能函数2---》组包过程---》明文封包---》加密---》发包函数。功能函数1---》功能函数2---》组包---》明文封包---》封包写到某一个地址中。
揭秘封包辅助外G:处理游戏多线程发送封包(三)
奥斯卡连裆裤
06-05 2614
又是一个风和日丽的早晨,又对一款游戏产生了念想,又是熟悉的传统手艺——断点发包函数定位功能Call。 奇怪的是无论怎么Ctrl+F9 都返回不到功能call, 点击OD快捷栏 K 按钮 查看堆栈调用关系,才惊讶的发现 无论做什么动作断下,调用关系都是一样的,也就是说游戏中任何动作都是走的一样的函数一样的代码? 当然不可能的,不同的动作不同的功能,怎么会是同样的代码产生的呢!在断点发包函数的时候,遇到这种现象 只能说明厂商对发送封包进行了特殊的处理。就像小说里面的鬼打墙,让我们一直在同样的代码里面打转转
线程:并发包
qq_25292419的博客
06-02 376
线程:并发包(计数器)CountDownLatch(屏障)CyclicBarrier (计数器)CountDownLatch CountDownLatch 类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0
[转]简单的发包程序练习多线程
Nest of Nonsenser
01-03 1804
文章作者:xuanliang[E.S.T]信息来源:邪恶八进制 #include #include #include #include #pragma comment(lib, "ws2_32.lib")SOCKET       g_Sock;SOCKADDR_IN  g_Addr;//定义IP首部typedef struct ip_head{unsigned char h_verlen;unsi
java线程循环
m0_70958066的博客
01-30 273
1、保存5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件 2、打印数字,读取通知 (1)在main方法中启动两个线程; (2)在1个线程循环打印100以内的整数; (3)直到第2个线程从键盘读取了“Q”命令。
怎么一直不间断的发包
kingt_pro的博客
05-19 1649
用Fiddler抓的 然后批量发 但是太多了卡。 有没有什么东西可以代替一下 无限发
详细介绍Java juc并发包
最新发布
05-30
Java juc(java.util.concurrent)是Java SE 5及以后版本中新增加的并发包,它提供了一些线程安全的实用工具类和高效的并发容器,以及一些原子类和锁。这些工具类和容器可以帮助我们更加方便、高效地编写多线程程序...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Windows Server 2012 R2 搭建自己的网站 22347
  • 远程桌面最小化时出现某些问题的原因 19843
  • FPS 游戏自瞄原理 19305
  • C++ sizeof(a)/sizeof(a[0]) 的正确用法 18108
  • 逆向工程师要学什么? 9785

分类专栏

  • Windows 驱动开发 41篇
  • 进程保护 2篇
  • 后端 7篇
  • RootKit 16篇
  • DLL注入/劫持 8篇
  • 窗口操作 14篇
  • 知识面拓展 15篇
  • 漏洞 1篇
  • DUILIB
  • 虚幻引擎 2篇
  • 通信
  • windbg 3篇
  • 病毒木马 6篇
  • ip代理
  • 虚拟机
  • 机器学习 1篇
  • 机器码 2篇
  • 防多开 6篇
  • ShellCode 3篇
  • 加密解密 3篇
  • 加壳脱壳 2篇
  • 提权 1篇
  • 模拟按键 1篇
  • Lua 2篇
  • C++网络编程 1篇
  • C++功能函数 51篇
  • 调试&检测 36篇
  • C++基础语法 27篇
  • C# 20篇
  • 渗透 10篇
  • 环境搭建 32篇
  • Python 4篇
  • Linux 1篇
  • JavaScript 1篇
  • VB
  • 笔试 3篇
  • 基础知识 28篇
  • Windows 8篇
  • 逆向 6篇
  • CE 2篇

最新评论

  • [Rootkit] dll 隐藏 - VAD

    调皮的空调: 64位的游戏 g_lpNewImage = VirtualAlloc((LPVOID)hDll, g_dwImageSize, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);申请不回来 失败代码487请大神指点下

  • c++ 在内存中加载 exe/dll (不使用CreateProcess、LoadLibrary 等 API)

    qiyuanqwq: 其实这种方法还不如直接用CreateProcessA创建进程,申请可执行内存,写入内存什么的反而更容易被KILL,内存杀直接教你做人

  • x64驱动 使用 InfinityHook

    m0_65099846: 在Win10下蓝屏了

  • c++ 驱动【加载,启动,停止,卸载】

    无药可医�️: 请教下我在stopDvr这步老是报错是什么问题啊

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • [Node.Js] Session 保存用户信息
  • 使用 Enigma Virtual Box 打包单文件
  • [Rootkit] 傀儡进程
2021年82篇
2020年156篇
2019年132篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司长葛网站关键词优化多少钱通辽网站推广推荐光明优秀网站设计报价信阳阿里店铺托管推荐湖州外贸网站建设推荐榆林seo报价横岗SEO按天扣费推荐滨州阿里店铺运营哪家好驻马店SEO按天扣费哪家好遂宁建站多少钱安庆网站推广方案报价蚌埠网站开发价格鹰潭企业网站建设哪家好林芝网站设计模板舟山百度标王报价呼和浩特关键词按天扣费公司金昌网站推广方案报价昌都百度竞价价格菏泽企业网站建设报价红河网站排名优化报价石家庄关键词按天扣费哪家好喀什百度网站优化排名报价德州网站推广方案报价坪山关键词排名哪家好宜宾百度网站优化排名推荐永湖关键词按天计费大丰网站建设设计价格成都网站优化软件多少钱张掖网站改版多少钱临汾企业网站改版价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化