看过这里有的大大是断下send后,去找调用send的CALL,找到这个CALL再找上一次的CALL,这样去找关键CALL,但是,有的游戏这样是找不来的,所以,如果有的游戏不能这样找回去,那怎么办呢,这就要先说说原理了。
  要说找CALL的原理,我们应该想想游戏的运行机制。也就是说游戏的控制方式是怎么样的。
  不说费话,其实大多数的游戏都是这样的,来个买药的例子吧:
  点击买药后:
  1、客户端产生一个买药行为 并调用买物品的过程,如:BuyGoods(s:string,n:integer); //参数s为物品种类 n为数量
        2、这个行为会产生一个发送给服务器的数据信息 MakeInfoString;
   比如:36 00 01 .........
  3、数据出来要进行一次或N次的加密。
  4、加密后通过send或WSASend函数将这个信息发给服务器处理。
  5、等待服务器处理返回。
  6、服务器返回购买成功的信息。
  7、客户端响应这个信息,并调用本地动作行为。
  这样,基本上就构成了游戏的一般的控制方式。
  写出程序大概可能为:
主程序
....
....
BuyGoods(LifeMedicine,10);  //行为产生后调用买物品过程
....
....
主程序

procedure BuyGoods(s:string,n:integer);  //买物品的过程
begin
  send(Encrypt(MakeInfoString(s,n)));
end;
当然写法也可以是:
MakeInfoString;
Encrypt;
send;

不管怎么样方法都是差不多的。
  了解了程序的大至写法,那么我们逆向起来就有个思路了:
    bp send
        返回向回找,先找到Encrypt,再向回找,能找到MakeInfoString(也就是找到明码部分),再向上找,就是调用这些东西的BuyGoods(s:string,n:integer)了。

  我来找一个游戏说明一下吧,比如说有个什么名状的游戏。
  这个游戏有个出征和休息待卫的功能,也就是放出和休息宝宝了。就拿这个CALL来讲吧。
  这个游戏我用一般的思路往回找无法找出来这个出征的CALL,别的CALL没试,主要用是讲个例子。那么我就用另一个方法:
  1,我先下bp send,返回看到这里,不用说就是send函数了。
     0069FFBF  |.  E8 82A11000  call    <jmp.&WS2_32.#19>
  ,2,给send的BUF区下硬键访问断点,来到这里,看出是这里向Send函数的BUF区放数据的。
     0069FB43  |.  F3:A5        rep    movs dword ptr es:[edi], dword ptr [e>; |
  3,给esi下断分析,发现加密函数。
     0069FB64  |.  E8 67060000  call    006A01D0                ; \封包加密函数
  4,好,我们在这个加密函数下个断。然后点击“出征”,断下来后执行到返回。可以看到调用它的CALL。
     0069DD14  .  E8 471D0000  call    0069FA60
  5,下断,再往回找,看到上一级的调用CALL。
     0069DEFC  |.  E8 BFFDFFFF  call    0069DCC0
  6,下断,再往回找。
     006DBDFB  |.  FF50 0C      call    [eax+C]              
  7,下断,再找。
     0065CB89  |.  8B4D 08      mov    ecx, [ebp+8]
     0065CB8C  |.  33C0          xor    eax, eax
     0065CB8E  |.  66:8B46 21    mov    ax, [esi+21]
     0065CB92  |.  6A 32        push    32                            ; /Arg3 = 00000032
     0065CB94  |.  50            push    eax                            ; |Arg2
     0065CB95  |.  51            push    ecx                            ; |Arg1
     0065CB96  |.  8D8D E4FBFFFF lea    ecx, [ebp-41C]                ; |
     0065CB9C  |.  C745 FC 00000>mov    dword ptr [ebp-4], 0          ; |
     0065CBA3  |.  E8 88F10700  call    006DBD30                      ; \TheWarlo.006DBD30    
   8,再放上,是这里,看到红色这个CALL了吗,它就是“出征”的CALL了。

    004101B2 |. 83F8 14 cmp eax, 14
004101B5 |. 8B45 08 mov eax, [ebp+8]
004101B8 |. 73 06 jnb short 004101C0
004101BA |. 83F8 01 cmp eax, 1
004101BD |. 7E 01 jle short 004101C0
004101BF |. 48 dec eax
004101C0 |> 8B4486 04 mov eax, [esi+eax*4+4]
004101C4 |. B9 58E88000 mov ecx, 0080E858
004101C9 |. 50 push eax ; /Arg1
004101CA |. E8 81C82400 call 0065CA50 ; \TheWarlo.0065CA50
004101CF |. 5E pop esi
004101D0 |. 5D pop ebp
004101D1 \. C2 0400 retn 4
   9,再上就是GuiDll的领空了。
   这两个都可以,
  给大家这个例子,是想告诉大家,什么是BPSEND的原理,我的意思是如果你都分析不清楚一个游戏或程序的运行方法,那你无论如何是不可能找到这些的。当然,如果有别人给的一些实际操作的例子除外。
  好了,也差不了多少。也不知道我说的这些对大家有没有用,欢迎大家批评指正。

为什么要下断bpSend,原理分析。相关推荐

  1. 使用EasyExcel导出模板并设置级联下拉及其原理分析

    一.概述 项目中有时会遇到需要导出一个Excel模板,然后在导出的Excel中填充数据,最终再调用接口批量把Excel中的数据导入到数据库当中的需求. 其中级联下拉选择,手机号校验,性别校验等都是比较 ...

  2. Android免Root环境下Hook框架Legend原理分析

    0x1 应用场景 现如今,免Root环境下的逆向分析已经成为一种潮流! 在2015年之前的iOS软件逆向工程领域,要想对iOS平台上的软件进行逆向工程分析,越狱iOS设备与安装Cydia是必须的!几乎 ...

  3. ARP局域网断网攻击原理分析及演示

    ARP局域网断网攻击分析及演示 ARP断网攻击,是针对以太网地址解析协议(ARP)的一种攻击技术.此种攻击可让攻击者取得局域网上的数据封包甚至可篡改封包,且可让网络上特定计算机或所有计算机无法正常连接 ...

  4. BP神经网络原理分析及c++代码实现(下)

    本部分主要是BP神经网络的C++代码部分,在这里简单的介绍下代码的头文件,具体代码的实现以及测试数据,请在csdn资源里下载:http://download.csdn.net/detail/hjkhj ...

  5. 下拉 html 实现原理,百度搜索下拉框实现技术原理分析

    问:百度搜索下拉框关键词是怎么来的,下拉框实现技术原理分析一下. 来自百度站长平台的站长回答: 对于词的研究,想必每个seoer都知道,而除了比较热门的百度相关搜索词之外,百度下拉框关键词应该也是不少 ...

  6. 分布式专题-分布式消息通信之ActiveMQ03-ActiveMQ原理分析(下)

    目录导航 前言 unconsumedMessage源码分析 异步分发的流程 同步分发的流程 消费端的PrefetchSize及优化 原理剖析 prefetchSize 的设置方法 总结 消息的确认过程 ...

  7. gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_ARP协议在同网段及跨网段下的工作原理...

    前言:ARP协议是在链路层通讯中,已知目标IP地址,但是,仅有IP 地址是不够的,因为IP数据报必须封装成帧才能通过数据链路进行发送,而数据帧必须要有目的MAC地址,每一个网络设备在数据封装前都需要获 ...

  8. bmp/gif/jpg图象最底层原理分析

    bmp/gif/jpg图象最底层原理分析(1)---- JPG 转载自:http://www.cnblogs.com/glaivelee/archive/2011/10/10/2205151.html ...

  9. chroma负载机恒压工作原理_一款恒压/恒流充电器工作原理分析

    该充电器工作原理介绍如下,电路见附图所示. 1 .主电路 采用220V电网直接供电,经 KZ1 - KZ4 全控桥式整流,再经极性切换开关输出接负载 ( 蓄电池 ) .当蓄电池在充电工作方式时,切换开 ...

最新文章

  1. c4d中的3D插图制作视频教程 Skillshare – 3D Illustration in Cinema 4D
  2. 为什么阿里巴巴要禁用Executors创建线程池?
  3. 【Linux】一步一步学Linux——traceroute命令(167)
  4. PCB设计中的问题整理
  5. Spring+Mybatis多数据源配置(二)——databaseIdProvider的使用
  6. 「镁客·请讲」安智汽车郭健:ADAS是一个链条式的系统,每个模块都必须做好...
  7. Centos7 把php5.4升级到php5.6
  8. MongoDB 复制集节点增加移除及节点属性配置
  9. 麟龙指标通达信指标公式源码_通达信麟龙KDJ多周期副图指标 源码(图文)
  10. Notification(一)系统通知的监听移除
  11. 直线插补 圆弧插补 步进电机二维直线插补圆弧插补控制算法 C语言 STM32移植
  12. 用PS将照片背景变成白色
  13. oracle两个字段减法,Oracle 的加减法函数
  14. 1.CPU基本工作流程
  15. transformer中的相对位置偏置的介绍(relative position bias)
  16. centos7操作系统下编译安装veracrypt
  17. PC端-中文转拼音后续问题
  18. MATLAB-最简单基础的画二维图(点图、折线图、拟合曲线)
  19. 数学测试卷软件,小学数学练习机_随机出数学练习题软件 50.0官方版
  20. 使用VRT裁剪栅格影像

热门文章

  1. Java红包退款_微信现金红包开发4(JAVA)
  2. 第五届字节跳动青训营 - 寒假专场 【前端后端】
  3. 《深度学习进阶:自然语言处理》读书笔记:第2章 自然语言和单词的分布式表示
  4. PostgreSQL Substring教程
  5. Te r m i n a t e T h r e a d函数是异步运行的函数,必须调用Wa i t F o r S i n g l e O b j e c t
  6. ChatGPT如何4步制作ppt
  7. CDR插件开发之Addon插件003 - 认识解决方案(sln)和项目(csproj)文件
  8. java毕业设计某银行OA系统某银行OA系统演示2021mybatis+源码+调试部署+系统+数据库+lw
  9. uaa 授权_使用UAA引导OAuth2授权服务器
  10. python读取文件编码报错解决