首页
社区
课程
招聘
[求助][求助]为何调用卖物品CALL出错?
发表于: 2010-4-23 21:43 6033

[求助][求助]为何调用卖物品CALL出错?

2010-4-23 21:43
6033
用OD通过bp send,已经找到卖物品的CALL,详细汇编代码如下:
  
00432CB9  |.  C685 18FAFFFF>MOV BYTE PTR SS:[EBP-5E8],0
  堆栈 SS:[0012CB08]=34 ('4')
  此处中断时,EBP=0012D0F0
00432CC0  |.  8B85 90F8FFFF MOV EAX,DWORD PTR SS:[EBP-770]
00432CC6  |.  8B88 F00C0000 MOV ECX,DWORD PTR DS:[EAX+CF0]
00432CCC  |.  898D 10FAFFFF MOV DWORD PTR SS:[EBP-5F0],ECX
  ECX=00000003
  堆栈 SS:[0012CB00]=0669F808, (ASCII "spr/effect\item\item_002.spr")
00432CD2  |.  8B95 90F8FFFF MOV EDX,DWORD PTR SS:[EBP-770]
00432CD8  |.  8B82 F40C0000 MOV EAX,DWORD PTR DS:[EDX+CF4]
00432CDE  |.  8985 14FAFFFF MOV DWORD PTR SS:[EBP-5EC],EAX
  EAX=00000002
  堆栈 SS:[0012CB04]=0000001C
00432CE4  |.  C785 0CFAFFFF>MOV DWORD PTR SS:[EBP-5F4],1
  堆栈 SS:[0012CAFC]=0673DA18
00432CEE  |.  6A 14         PUSH 14                                  ; /Arg2 = 00000014
00432CF0  |.  8D8D 08FAFFFF LEA ECX,DWORD PTR SS:[EBP-5F8]
  堆栈地址=0012CAF8
  ECX=00000003
00432CF6  |.  51            PUSH ECX                                 ; | Arg1 = 0012CAF8
00432CF7  |.  E8 14CE0F00   CALL x00.0052FB10         ; \x00.0052FB10

编写成代码注入器(codeInj_jks.exe)的代码如下:
MOV EBP,0012D0F0
MOV ECX,0
MOV [EBP-5E8],ECX
MOV EDX,3
MOV [EBP-5F0],EDX
MOV EAX,2
MOV [EBP-5EC],EAX
MOV EDX,1
MOV [EBP-5F4],EDX
PUSH 14
PUSH 0012CAF8
CALL 0052FB10

附加游戏后,运行:“远程注入代码”,为何游戏出错退出?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
2
此类话题,看雪不讨论啊~
2010-4-23 23:18
0
雪    币: 142
活跃值: (310)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
强帖要留名 哈哈哈哈~~~~~~~~~~
2010-4-23 23:29
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
4
MOV EBP,0012D0F0
这个是不能硬编码的
2010-4-24 02:11
0
雪    币: 67
活跃值: (66)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
我猜...
参数1 指向数据的指针
参数2 数据结构长度
2010-4-24 02:25
0
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感觉这里是游戏的发包...
2010-4-24 03:08
0
雪    币: 142
活跃值: (310)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
其实这个根本就不是 卖东西的CALL

多分析调试 你会发现 这些都是 给局部变量赋值,要不就是填充数据结构

还有就是 没有在特殊的情况下.参数都是push 形式的

你觉得 mov [ebp-5E8],0 是参数的话大错特错了

除非 call 里面的函数 有这样的代码 mov [ebp+5E8+var]

楼猪 基础知识没打好.去好好看书多实践吧.
2010-4-24 11:09
0
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
[QUOTE=eGirlAsm;796443]其实这个根本就不是 卖东西的CALL

多分析调试 你会发现 这些都是 给局部变量赋值,要不就是填充数据结构

还有就是 没有在特殊的情况下.参数都是push 形式的

你觉得 mov [ebp-5E8],0 是参数的话大错特错了

除非 call 里面的函数 有这样的代码 mov ...[/QUOTE]

噢 对 没看注意看到 ebp很多时候是this指针..
2010-4-24 11:16
0
雪    币: 67
活跃值: (66)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
9
这里的ebp应该不是this指针 因为在call之前ecx已经被当成了参数压栈了 不过优化太bt的代码没啥准的事 跟到那个call里看看就知道了
...
确实像一个发包的上层代码
我猜游戏是天堂吧...
2010-4-24 11:24
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
10
天堂这个游戏应该用日志函数分析法...bp send太土~
2010-4-24 14:38
0
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
这贴还没删............
2010-4-24 15:42
0
游客
登录 | 注册 方可回帖
返回
//