虫虫教学

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3201|回复: 25

游戏加密算法原理和OD破解方法

[复制链接]

4449

主题

4659

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
41710

最佳新人发帖达人推广达人热心会员突出贡献优秀讲师

发表于 2021-9-30 22:37:07 | 显示全部楼层 |阅读模式
             游戏加密算法原理和OD破解方法

    首先,我们还是要了解游戏是怎么来操作数据的:

最基本的大家应该知道,就是:
 
 客户端生成明文包-->调用加密函数加密->交给SEND函数去发给服务器。


而复杂的话可能就是:


  客户端生成明文包-->调用加密函数一加密->交调用加密函数二加密->给SEND函数去发给服务器。


再复杂的可能是:
 
 游戏启动是接服务器发来一个密钥-->客户端生成明文包-->调用加密函数一(利用密钥)加密-->调用加密函数二->给SEND函数去发给服务器。


  基本上就是那样,当然更复杂和变态的可能还有:服务器发来密钥后,客户端对密钥进行一次加密,然后才可以用,不管怎么说这要看游戏编写者想怎么来保护数据了。
  
  不过,最其码你知道了这些方法,那就你就有个思路去跟踪了。


  另外,大家要了解的就是,发包和接包函数:


  有的游戏是用SEND、RECV,有的是用WSASEND、WSARRECV,也可能混用,这你可要找对了。(小方法:可以用WPE拦截看一下,包括游戏启动时。)


  上MSDN查看资料后,我们了解到:
  SEND有个参数BUF,它是用来存将要发送数据的缓冲区。
  RECV也有这么个参数,它是用来接收的缓冲区。

  WSASEND有个参数是lpBuffers,它是一个指向WSABUF结构数组的指针。记住,是指针!
  WSARECV也一样。


  然后,进入游戏,开OD


  以下是跟踪数据的方法(就是看数据SEND.BUF中的数据是从哪里来的,其中SEND的断不要取消,同时要多看数据区的数据变化):
  1、开OD,下断:BP SEND,游戏里说句话。断下后,在OD的数据区里看一下BUF里的东西和BUF的地址。
  2、然后,给BUF下硬件写入WORD断点。F9运行一下。再说一句话,这时就能断下是谁给这个BUF写了数据。
  3、你可能看到是:REP MOVS [EDI],[ESI],对了,这里ESI就是数据的来源,而EDI就是数据要存放的地方,也就是它的下一级SEND.BUF。
  4、这时注意数据区EDI的数据。取消硬件断点,F9一下会断到SEND,看一下EDI也就是这时指向的SEND.BUF中的数据是否有变化,如果有,那么调用这个REP MOVS指令的CALL就是加密CALL。
  5、如过没有,再对ESI指向的空间下硬件写入WORD断,运行游戏,再说一句话。断下另一个地方的REP MOVS,然后和第4步一样,注意数据区的数据变化。


  整个过程就是4-5步这样的。你也可以一次就追下所有的REP MOVS,原理都一样!


  提示:整个过程都要注意看数据区的数据变化。


  而对于WSASEND,它的参数是一个指向WSABUF结构数组的指针。大家上MSDN看一下它的参数。和找SEND的方法一样。


  另外大多数游戏的加密和解密都是用的都是同一个,而跟踪的方法都一样,不同的是一个是往回找,所以叫逆向,一个是往下找。找到任意一个就行了。


  自我感觉跟接包的方法要方便一些,因为它接包后才要调用解密,这样往下找感觉要比往上找好,呵呵,再提示一下,要是跟RECV,断下RECV后一定要注意先F8一下,要让这条指令执行了,它的BUF中的数据才是服务器发来的数据。


3

主题

1457

帖子

8203

积分

钻石会员

Rank: 7Rank: 7Rank: 7

积分
8203
发表于 2021-10-13 10:06:35 来自手机 | 显示全部楼层
一起加油,好好学习,虫虫越来越好
回复

使用道具 举报

3

主题

1457

帖子

8203

积分

钻石会员

Rank: 7Rank: 7Rank: 7

积分
8203
发表于 2021-10-13 10:06:38 来自手机 | 显示全部楼层
一起加油,好好学习,虫虫越来越好
回复

使用道具 举报

0

主题

2465

帖子

2945

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2945

最佳新人宣传达人纪念勋章

发表于 2021-10-13 15:58:16 | 显示全部楼层
感谢老师分享,祝虫虫越来越好!
回复

使用道具 举报

0

主题

2465

帖子

2945

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2945

最佳新人宣传达人纪念勋章

发表于 2021-10-13 15:58:19 | 显示全部楼层
感谢老师分享,祝虫虫越来越好!
回复

使用道具 举报

匿名  发表于 2021-10-13 17:53:32
前来学习!
回复

使用道具

0

主题

5981

帖子

2万

积分

超级版主

Rank: 8Rank: 8

积分
24833

最佳新人活跃会员热心会员突出贡献纪念勋章

发表于 2021-10-13 17:54:02 | 显示全部楼层
前来学习!
回复

使用道具 举报

0

主题

5981

帖子

2万

积分

超级版主

Rank: 8Rank: 8

积分
24833

最佳新人活跃会员热心会员突出贡献纪念勋章

发表于 2021-10-13 17:58:21 | 显示全部楼层
一起学习,共同进步!
回复

使用道具 举报

0

主题

5981

帖子

2万

积分

超级版主

Rank: 8Rank: 8

积分
24833

最佳新人活跃会员热心会员突出贡献纪念勋章

发表于 2021-10-13 17:58:27 | 显示全部楼层
静姐辛苦了!
回复

使用道具 举报

0

主题

1738

帖子

1757

积分

高级会员

Rank: 4

积分
1757
发表于 2021-10-13 21:54:20 来自手机 | 显示全部楼层
感谢老师分享,祝虫虫越来越好!
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

QQ|Archiver|手机版|小黑屋|虫虫教学--虫虫联盟官网

GMT+8, 2025-4-28 22:31 , Processed in 0.947277 second(s), 44 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表