首页
社区
课程
招聘
[求助]请求指点关于内存补丁的写法是否正确
发表于: 2005-10-18 02:53 3961

[求助]请求指点关于内存补丁的写法是否正确

2005-10-18 02:53
3961
PE 信息
名称->地址->尺寸
.text        0001 001B:10901000 00022386
.rdata        0002 0023:10924000 00005F10
.data        0003 0023:1092A000 0002C844
.idata        0004 0023:10957000 0000554D
.rsrc        0005 0023:1095D000 00000F3C

需要补丁的代码:
0016:10177358        8b442408 mov eax,[esp+08]
0016:1017735c        8b542404 mov edx,[esp+04]
0016:10177360        8b0a         mov ecx,[eax]
0016:10177362        8902         mov [edx],ecx
0016:10177364        c20c00         RET 000c
我想把edx 的值写的固定的地方,请教这样的写法对吗?
0016:1017735C e99f321e0f jmp 10956900(data结尾,是否写在此处,要不要加上DS的地址)
0016:10177361 90         nop

0023:10956900 8b542404         mov edx,[esp+04]
0023:10956904                  mov dword ptr[0023:10956800],edx
0023:1095690? 8b0a         mov ecx,[eax]
0023:1095690?                  jmp 10177362

我的软件要读0023:10956800的内容,这个地址要怎么算?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 4908
活跃值: (2343)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
试试这样
call @f
.....
@@:
  pop eax
  push eax
  sub eax,VALUE(这里VALUE=EAX-10956800这里的实际差值)
  mov dword ptr [eax],edx
  ......
  ret
2005-10-18 19:52
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢oep1的回复,不过有点不明白。
你的这段代码是保存EDX,但是eax 是动态变化的,这样还是没办法
将edx的值保存在固定的地方啊,而且内存补丁,是如何将:
@f与@@:标识符写进去?
我的原意是在原代码0016:1017735c处代码开始打补丁(因为JMP需要
5个字节,所以我想知道在这里开始替换代码对吗?)
还有DATA段0023:10956900的计算是不是要0023+10956900,这个如何
计算呢?
2005-10-18 20:34
0
雪    币: 4908
活跃值: (2343)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
用HIEW直接写汇编代码,我在上面的符号只是为了用WIN32汇编代码模式让你看清楚。
正因为是动态的,所以使用了CALL 和POP的模式,这样可以保证IP的差是不会改变的。
2005-10-20 19:03
0
游客
登录 | 注册 方可回帖
返回
//