首页
社区
课程
招聘
[旧帖] [求助]如何把寄存器的内容写入内存 0.00雪花
发表于: 2011-10-12 03:27 5638

[旧帖] [求助]如何把寄存器的内容写入内存 0.00雪花

2011-10-12 03:27
5638
EAX 00E497A8
ECX 00E92EA0 ASCII "123456"
EDX 00000000
EBX 00E7648C
ESP 0300F1E4
EBP 0300F848
ESI 00000000
EDI 00000000
EIP 00523A87 crackme.00523A87

如上,比如,我想将ECX寄存器的值保存到指定的内存位置[00888888],应该怎么做?
感谢!

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 21
活跃值: (269)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
mov ds:[00888888], ecx
2011-10-12 04:47
0
雪    币: 188
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
如果写code 看ls
在od里改,
下面有内存栏可以直接修改该 注意小端模式
2011-10-12 09:22
0
雪    币: 579
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
GetThreadContext
2011-10-12 09:35
0
雪    币: 104
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
多谢,我现在不明白的是,这样能不能实现,比如

在同一个程序中
程序段 1
把某个寄存器的值,如EAX,暂时存放 到一个内存位置

程序段 2
再次把某个寄存器的值,如ECX,暂时存放到一个内存位置

3.读取两个保存的值,用CMP比较,这样能不能实现

如果我选取一个固定的内存地址(00E5XXXX),在其他机器运行会不会有问题?
感谢!
2011-10-12 11:47
0
雪    币: 188
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
如果是自己写程序, 用几个全局变量保存寄存器的值就行了

对于固定的内存地址应该是不可取得
首先如果是栈上的, 每次模块被载入的地址可能不一样, 调用栈起始地址也可能不一致

如果是堆上得,那一样的几率就更小了,

======================

如果是自己在调试器里修改,
你可以把值保存在调用栈尾端(地址最小处,这里一般不会被用)
2011-10-12 12:19
0
雪    币: 104
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
是自己在调试器修改
“把值保存在调用栈尾端(地址最小处,这里一般不会被用)”
这个怎么添加汇编代码实现,求指教
2011-10-12 12:30
0
雪    币: 188
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
用手的,

要添加代码自动实现,那工作量我觉得是太大了 (如果用windbg,我会用脚本实现)

只能找一个相对安全的地址,把寄存器内容保存, 然后需要时再去哪里取
2011-10-12 12:49
0
雪    币: 96
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
嗯,学了一招
2011-10-14 20:41
0
雪    币: 139
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
2楼的正解!
2011-10-15 10:43
0
游客
登录 | 注册 方可回帖
返回
//