首页
社区
课程
招聘
[求助]根据特征码能不能读出cpu 寄存器的值
发表于: 2008-10-7 15:05 7853

[求助]根据特征码能不能读出cpu 寄存器的值

2008-10-7 15:05
7853
在网上找了大半天,没有结果,所以到这里来求助;比如某游戏有一段代码
00425F40 | 8B4424 04     | MOV     EAX, DWORD PTR [ESP+4] |
00425F44 | 69C0 10010000 | IMUL    EAX, EAX, 110          |
00425F4A | 0301          | ADD     EAX, DWORD PTR [ECX]   |
00425F4C | C2 0400       | RETN    4  
根据这段代码,能不能在自己的程序中自动读出ADD  EAX, DWORD PTR [ECX] 后EAX的值;
怎样读;先谢谢大大的回复

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
2
动态调试!
od调试 当eip=00425f4c时 查看 EAX的值就是了!

显然静态分析是得不到具体的值的!当然脑袋是二进制的大牛除外!呵呵!
2008-10-7 15:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
调试能够读出,但是每次eax都会变,只有特征码不变,我想通过特征码来读eax
2008-10-7 15:11
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
4
不明白‘特征码’指的是什么!
呵呵!
2008-10-7 15:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
69C0100100000301C2 0400    这个就是特征码
2008-10-7 15:25
0
雪    币: 354
活跃值: (10)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
6
DEBUG API...
2008-10-7 16:16
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
7
如果C20400后面有足够空闲区域,可以把EAX的值写到内存中某个安全的地址A3 ?? ?? ?? ??然后再返回,你的程序只需要去读那个地址就好了
希望不是用来做外挂的
2008-10-7 16:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
感谢mstwugui 大大的回复;不修改游戏源代码;有办法实现么;有个想法
开始的时候EAX的值是不变的,等到游戏运行到那个位置,eax的值就会变,通过特征码来定位这个地方,读改变以后的eax 数值;程序里面设置一个变量把eax 送到变量里面;定时读,不知道能不能行的通
2008-10-8 09:55
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
9
EAX不是只有这里用到的,很多其他指令都可能修改EAX的值,这样做没有意义
2008-10-8 09:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
如果调用这个子程序,eax的值应该是正确的吧
2008-10-8 10:09
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
11
这个问题应该只有你自己才能回答了,别人又没有分析你的程序,怎么会知道正确与否
有时候自己动手试一下其实是最快的解决办法
2008-10-8 10:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
感谢mstwugui 大大的回复,我去试一下
2008-10-8 10:23
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
13
他可以读到的东西你也可以读到,你看看他怎么获取的你也怎么获取不就ok了么
2008-10-8 12:59
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
你应该继续往上找ESP+4 和ecx是什么值
2008-10-9 09:04
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
15
看起来像是在索引一个结构阵列
(结构占 272 byte)
ECX = 参数0 = *结构阵列起点
[ESP+4] = 参数1 = idx
return( [ECX] + idx*sizeof(struct) )

可能有多个这种阵列, 所以有 [ECX] 这个写法

来乱的. 看过就算了.
2008-10-9 09:49
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
16
我猜测楼主的问题是如何读取其他非调试进程中特定时刻寄存器中的数值
2008-10-9 10:17
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
17
14楼已经给你指明了一条可行的路
至于路有多远要靠你自己去走了
我想很多人也都这样走过的
你可以称他们为过来人
2008-10-9 10:41
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
18
凡是有ccfer的贴。一定要顶
2008-10-9 11:07
0
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
19
膜拜楼上的楼上
2008-10-9 11:12
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
20
膜拜楼上膜拜的人
2008-10-9 11:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
感谢各位大大的指导
2008-10-17 16:51
0
游客
登录 | 注册 方可回帖
返回
//