功能函数及明文发包综合分析
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等相关。
可以从简单的没有参数的功能入手,比如说回城,死亡回城一类。对游戏了解之后可以找更复杂的功能。
发表评论
-
Log4j使用总结(全面)二
2012-01-20 11:12 783Log4j使用总结(全面)二 17小时前 四、Log4j ... -
单元过关----捷达学校中级《财务管理》测试题(3)
2012-01-20 11:12 2844单元过关----捷达学校中 ... -
C# Winform 去掉按钮按下时周围黑线框
2012-01-20 11:12 2116C# Winform 去掉按钮按下时周围黑线框 2011年0 ... -
最萌吸血鬼猎人,螺旋猫COS『BLOOD C』更衣小夜
2012-01-20 11:12 1172最萌吸血鬼猎人,螺旋猫COS『BLOOD C』更衣小夜 20 ... -
vc++网络安全编程范例(17)-open ssl 实现文件加密与解密
2012-01-19 16:04 1012vc++网络安全编程范例(17)-open ssl 实现文件加 ... -
[转载]问题9、如何用SPSS作方差分析比较?(转)
2012-01-19 16:04 1737[转载]问题9、如何用SPSS作方差分析比较?(转) 201 ... -
KEIL编译错误信息表(转载)
2012-01-19 16:04 1957KEIL编译错误信息表(转载) 2011年09月28日 ... -
蓝牙项目实现
2012-01-19 16:03 694蓝牙项目实现 2012年01月17日 ... -
【转】PPOE常见错误
2012-01-19 16:03 662【转】PPOE常见错误 2011年12月14日 宽带错误 ... -
iframe跨域请求 注销
2012-01-17 05:53 1039iframe跨域请求 注销 2011年10月10日 a域 ... -
如何解决js跨域问题
2012-01-17 05:53 624如何解决js跨域问题 201 ... -
做个第三眼美女
2012-01-17 05:53 511做个第三眼美女 2011年0 ... -
马英九:这是追求清廉和平繁荣的台湾路线胜利
2012-01-17 05:53 506马英九:这是追求清廉和平繁荣的台湾路线胜利 2012年01月 ... -
校内网XSS WORM分析
2012-01-17 05:53 641校内网XSS WORM分析 2011 ... -
面空文日志崇翔忧滏袖眼垤
2012-01-16 04:42 618面空文日志崇翔忧滏袖眼垤 2012年01月09日 ... -
文言文的词类活用
2012-01-16 04:42 756文言文的词类活用 2012年01月12日 文言文 ... -
南方古代建筑的风格
2012-01-16 04:42 606南方古代建筑的风格 20 ... -
登徒子好色赋所表达的意思
2012-01-16 04:42 661登徒子好色赋所表达的 ...
相关推荐
C++Hook发包函数核心代码 游戏辅助专用 不得不学 杀猪的
主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...
主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...
主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...
主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...
主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...
主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...
主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的...
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 ...
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 ...
)他是多功能地方调用函数 许多驱动通讯硬盘类操作最走到这个函数然而我们利用ZwDeviceIoControlFile 进行了请求发送 难的是在参数如何获取 因为没有几年逆向功底参数是逆不出来的因为这个函数太多地方调用了了 ...
因为HTTPS传输是加密的,用抓包软件都看不到任何明文,加密有的是128bit,有的更高, 一直登录HTTPS都是用的模拟填写表单的方式,朋友说要用发包的方式登录,有些傻眼, 然后看到XMLHTTP可以模拟发送HTTPS的数据包...