`
kbk730oe
  • 浏览: 19892 次
社区版块
存档分类
最新评论

功能函数及明文发包综合分析

 
阅读更多

功能函数及明文发包综合分析
2011年12月25日
  五林功能函数及明文发包综合分析
  下面先将近期找到的函数作一个整理,在最后附上寻找方法
  -------------------------------------------------- ----------------------------------------
  五林死亡回城函数调用及原型
  DWORD sendadr=0x005648F0;
  _asm
  {
  pushad
  MOV EAX,DWORD PTR DS:[0x8C2F44]
  MOV EAX,DWORD PTR DS:[EAX+0x20]
  LEA ECX,DWORD PTR DS:[EAX+0xEC]
  CALL sendadr
  popad
  } 
  cooltools(5534376) 23:00:04
  下面为游戏中反汇编原型
  004F96B0 . E8 BBC3FAFF CALL elementc.004A5A70
  004F96B5 . 8D88 EC000000 LEA ECX,DWORD PTR DS:[EAX+EC]
  004F96BB . E8 30B20600 CALL elementc.005648F0
  -------------------------------------------------- -----------------------------
  死亡后原地复活的调用方法
  _asm
  {
  pushad
  mov eax , 0x004A5A70
  CALL eax 
  mov eax, 0x0058AA10
  CALL eax
  popad
  }
  -------------------------------------------------- ----------------------------
  五林的捡物函数
  00472060 |. 8B0D 442F8C00 MOV ECX,DWORD PTR DS:[8C2F44]
  00472066 |. 8B97 10010000 MOV EDX,DWORD PTR DS:[EDI+110] ; 物品类别ID
  0047206C |. 8B46 20 MOV EAX,DWORD PTR DS:[ESI+20] ; 物品ID
  0047206F |. 52 PUSH EDX ; /Arg2
  00472070 |. 8B49 20 MOV ECX,DWORD PTR DS:[ECX+20] ; |
  00472073 |. 50 PUSH EAX ; |Arg1
  00472074 |. 81C1 EC000000 ADD ECX,0EC ; |
  0047207A |. E8 41270F00 CALL elementc.005647C0 ; \elementc.005647C0
  -------------------------------------------------- --------------------------------------------------- --
  发言函数(对于密语无效)
  004B5541 |. 57 PUSH EDI ; /Arg2
  004B5542 |. 50 PUSH EAX ; |Arg1
  004B5543 |. 8BCB MOV ECX,EBX ; |
  004B5545 |. E8 36430B00 CALL elementc.00569880 ; \elementc.00569880
  参数二是发言内容,参数一是发言形式
  ecx是固定地址
  -------------------------------------------------- ---------------------------------------------------
  五林明文发包函数
  地址:005697A0
  反汇编调用方法
  0058A041 |. 66:C706 0400 MOV WORD PTR DS:[ESI],4
  0058A046 |. A1 442F8C00 MOV EAX,DWORD PTR DS:[8C2F44]
  0058A04B |. 6A 02 PUSH 2 ; /Arg2 = 00000002
  0058A04D |. 56 PUSH ESI ; |Arg1
  0058A04E |. 8B48 20 MOV ECX,DWORD PTR DS:[EAX+20] ; |
  0058A051 |. E8 4AF7FDFF CALL elementc.005697A0 ; \elementc.005697A0
  实际为三个参数,第三个是ecx
  上述调用为人物死亡回城复活的调用
  发包长度为2,内容为04 00
  扔东西的调用c++调用
  DWORD sendadr=0x005697A0;
  BYTE temp[]={0x0E,0x00 ,0x00 ,0x02 ,0x00};
  DWORD sendbuffer;
  sendbuffer=(DWORD)temp;
  _asm
  {
  pushad
  MOV EDX,DWORD PTR DS:[0x8C2F44]
  MOV ECX,DWORD PTR DS:[EDX+0x20]
  push 5
  push sendbuffer
  call sendadr
  popad
  }
  -------------------------------------------------- ------------------------------------------------
  下面开讲解如何找到的这些函数,由于不能一一作介绍,我们以捡物函数为准进行介绍
  在实际操作前,说一下大致的思路
  在bp send 上下断后,按ctrl+f9
  再f8
  就回到调用的send语句的下面一句了。一般为
  call send
  f8到这
  逐级往回,就可找到调用函数。
  当然,在send处下断,有可能是游戏的保挂连接的函数。
  最后是在按了动作后,断下来的一般才是。
  在分析中,主要使用工具OD,当流程复杂时,可借助于IDA
  第一步:开启OD,载入游戏《五林外传》,进入游戏画面,并在地上扔一个东西,随便什么都行(别扔值钱的,小心被别人捡走,最好找个没人的脚落),准备工作做好了。进行第二步。
  第二步:在OD的命令行中,敲入bp send ,回到游戏
  第三步:用鼠标捡东西,这时程序或停在
  71A2428A > 8BFF MOV EDI,EDI
  71A2428C 55 PUSH EBP
  71A2428D 8BEC MOV EBP,ESP
  这是系统函数 send的入口处,直接按ctrl+f9 ,再按f8 ,就回到游戏区域了,一看是发包函数
  0056E729 |. 8B0D 44B88C00 MOV ECX,DWORD PTR DS:[8CB844]
  0056E72F |. 6A 00 PUSH 0 ; /Flags = 0
  0056E731 |. 6A 01 PUSH 1 ; |DataSize = 1
  0056E733 |. 68 00268C00 PUSH elementc.008C2600 ; |Data = elementc.008C2600
  0056E738 |. 51 PUSH ECX ; |Socket => 100
  0056E739 |. E8 D8F01C00 CALL  ; \send
  0056E73E |. EB 07 JMP SHORT elementc.0056E747
  继续按ctrl+f9 ,再按f8 ,到下面,一看没什么用,继续
  00567365 |. 8B5424 08 MOV EDX,DWORD PTR SS:[ESP+8]
  00567369 |. 52 PUSH EDX ; /Arg3
  0056736A |. 8B5424 08 MOV EDX,DWORD PTR SS:[ESP+8] ; |
  0056736E |. 52 PUSH EDX ; |Arg2
  0056736F |. 50 PUSH EAX ; |Arg1
  00567370 |. E8 4B720000 CALL elementc.0056E5C0 ; \elementc.0056E5C0
  继续按ctrl+f9 ,再按f8,经过观察分析,发现这是明文发包函数(当然这个分析过程,是要对多个功能进行分析,发现都调用这个函数得出的)
  00589C74 |. 8B15 442F8C00 MOV EDX,DWORD PTR DS:[8C2F44] ; elementc.008C6A38
  00589C7A |. 6A 0A PUSH 0A ; /Arg2 = 0000000A
  00589C7C |. 56 PUSH ESI ; |Arg1
  00589C7D |. 8B4A 20 MOV ECX,DWORD PTR DS:[EDX+20] ; |
  00589C80 |. E8 1BFBFDFF CALL elementc.005697A0 ; \elementc.005697A0
  继续按ctrl+f9 ,再按f8 ,就到了实际的功能函数了,其它的功能也是如此
  00472060 |. 8B0D 442F8C00 MOV ECX,DWORD PTR DS:[8C2F44] ; elementc.008C6A38
  00472066 |. 8B97 10010000 MOV EDX,DWORD PTR DS:[EDI+110] ; 物品类别ID
  0047206C |. 8B46 20 MOV EAX,DWORD PTR DS:[ESI+20] ; 物品ID 全是从上一过程传进来的,一个是edi 一个是ecx
  0047206F |. 52 PUSH EDX ; /Arg2
  00472070 |. 8B49 20 MOV ECX,DWORD PTR DS:[ECX+20] ; |
  00472073 |. 50 PUSH EAX ; |Arg1
  00472074 |. 81C1 EC000000 ADD ECX,0EC ; |
  0047207A |. E8 41270F00 CALL elementc.005647C0 ; \elementc.005647C0
  总结一下,一般判断是不是功能函数,要看它的参数。通过分析参数,看是否有规律,是否和物品ID,怪物ID等相关。
  可以从简单的没有参数的功能入手,比如说回城,死亡回城一类。对游戏了解之后可以找更复杂的功能。
分享到:
评论

相关推荐

    C++Hook发包函数核心代码

    C++Hook发包函数核心代码 游戏辅助专用 不得不学 杀猪的

    寒江独钓-Windows内核安全编程(高清完整版).part3

    主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...

    寒江独钓-Windows内核安全编程(高清完整版).part1

    主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...

    寒江独钓-Windows内核安全编程(高清完整版).part7

    主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...

    寒江独钓-Windows内核安全编程(高清完整版).part2

    主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...

    寒江独钓-Windows内核安全编程(高清完整版).part4

    主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...

    寒江独钓-Windows内核安全编程(高清完整版).part6

    主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...

    寒江独钓-Windows内核安全编程(高清完整版).part5

    主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...

    Windows内核安全与驱动开发光盘源码

    12.3.3 文件缓冲:明文还是密文的选择 259 12.3.4 清除文件缓冲 260 12.4 加密标识 263 12.4.1 保存在文件外、文件头还是文件尾 263 12.4.2 隐藏文件头的大小 264 12.4.3 隐藏文件头的设置偏移 266 12.4.4 ...

    Windows内核安全驱动开发(随书光盘)

    12.3.3 文件缓冲:明文还是密文的选择 259 12.3.4 清除文件缓冲 260 12.4 加密标识 263 12.4.1 保存在文件外、文件头还是文件尾 263 12.4.2 隐藏文件头的大小 264 12.4.3 隐藏文件头的设置偏移 266 12.4.4 ...

    防破J技术帖 汇编内核sockt 动态send 动态recv+动态创建线程 实现无法抓包-易语言

    )他是多功能地方调用函数 许多驱动通讯硬盘类操作最走到这个函数然而我们利用ZwDeviceIoControlFile 进行了请求发送 难的是在参数如何获取 因为没有几年逆向功底参数是逆不出来的因为这个函数太多地方调用了了 ...

    XMLHTTP实现HTTPS+post登录

    因为HTTPS传输是加密的,用抓包软件都看不到任何明文,加密有的是128bit,有的更高, 一直登录HTTPS都是用的模拟填写表单的方式,朋友说要用发包的方式登录,有些傻眼, 然后看到XMLHTTP可以模拟发送HTTPS的数据包...

Global site tag (gtag.js) - Google Analytics