首页
社区
课程
招聘
请问如何将偏移量转换为地址?
发表于: 2005-10-29 16:52 21284

请问如何将偏移量转换为地址?

2005-10-29 16:52
21284
请问如何将偏移量转换为地址?

  我在使用软件定位木马特征码的时候,只得到偏移量,为什么有的人用OD转到偏移量,但我用OD的时候,显示没有这个偏移量的,请问如何将偏移量转换为地址?

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

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 229
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
看点汇编的书
2005-10-29 17:51
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
3
在DFCG回答过,再转过来吧。

+---------+---------+---------+---------+---------+---------+
|  段名称   虚拟地址  虚拟大小  物理地址  物理大小   标志   |
+---------+---------+---------+---------+---------+---------+
|  Name     VOffset    VSize    ROffset    RSize      Flags |
+---------+---------+---------+---------+---------+---------+
|  .text   00001000   00000092  00000400  00000200  60000020|
|  .rdata  00002000   000000F6  00000600  00000200  40000040|
|  .data   00003000   0000018E  00000800  00000200  C0000040|
|  .rsrc   00004000   000003A0  00000A00  00000400  C0000040|
+---------+---------+---------+---------+---------+---------+
文件虚拟偏移地址和文件物理偏移地址的计算公式如下:

>>>>>>>VaToFileOffset(虚拟地址转文件偏移地址)
如VA = 00401000 (虚拟地址)
ImageBase = 00400000 (基地址)
VRk = VOffset - ROffset = 00001000 - 00000400 = C00 (得出文件虚拟地址和文件物理址之间的VRk值)
FileOffset = VA - ImageBase - VRk = 00401000 - 00400000 - C00 = 400(文件物理地址的偏移地址)

如VA = 00401325,则:
FileOffset = VA - ImageBase - VRk = 00401325 - 00400000 - C00 = 725

>>>>>>FileOffsetToVa(文件偏移地址转虚拟地址)
如FileOffset = 435(文件偏移地址)
VA = FileOffset + ImageBase + VRk = 435 + 00400000 + C00 = 00401035(虚拟地址)
2005-10-29 18:10
1
雪    币: 47147
活跃值: (20470)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
小虾讲的不错,再给楼主一张图理解一下:

2005-10-29 18:24
1
雪    币: 298
活跃值: (445)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
5
用工具PETools或LordPE转换。。。
2005-10-29 19:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
什么汇编的书最好啊?
2005-10-29 22:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 kanxue 发布
小虾讲的不错,再给楼主一张图理解一下:



终于找回帐号了,我不知道文件中的.data段中间隙是怎么找的,还有这里哪个版才是新手区啊,我想多看点基础的东西
2005-11-4 13:31
0
雪    币: 47147
活跃值: (20470)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
8
最初由 ghostscat 发布


终于找回帐号了,我不知道文件中的.data段中间隙是怎么找的,还有这里哪个版才是新手区啊,我想多看点基础的东西


这里不分新手区、高手区,只按讨论内容分类。
区段的间隙,你用LordPE打开一个PE,再配合十六进制工具,就会明白了。间隙那段空间全是0.
2005-11-4 13:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢,看到0有很多。我看了几篇关于动态内存补丁技术的文章,都说可以在.data尾向上一点找到空白段写自己的代码,这里的间隙是不是就是空白段?
2005-11-4 14:34
0
雪    币: 47147
活跃值: (20470)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
10
用LordPE查看区块后面部分.
因为区块都是对齐的,磁盘上对齐值一般是0x200或0x1000,如果某个区块中的有效数据大小是0x160,而为了对齐,区块的大小是x200,则0x160到0x200之间就是间隙.
说的很抽象的,你用实例操作一下,再结合上面的图自己分析一下就会很清楚的。
2005-11-4 14:47
0
雪    币: 316
活跃值: (336)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
版大是俯首甘为孺子牛
2005-11-4 15:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
非常感谢,现在终于明白PE结构了。还有个问题这里只能用16进制编辑器吗?我想直接写汇编可以用什么工具?jmp/call的地址是写物理地址还是写虚拟地址?

我是刚接触PE的,也花了不少时间找这方面的资料,但没人指点,搞得一头雾水,真搞浑了...,还请各位教教小弟。我的目的是想做出像红色警戒2之类游戏的金钱地址动态变成静态,然后写出修改器。
2005-11-4 19:22
0
游客
登录 | 注册 方可回帖
返回
//