首页
社区
课程
招聘
如何得到指针的指针?
发表于: 2006-6-18 05:10 4233

如何得到指针的指针?

2006-6-18 05:10
4233
LOCAL   @temp[100]:BYTE

lea eax,@temp

eax中存放的是@temp的指针

我还想要得到eax的指针,应该如何如何做?

我目前的做法
LOCAL   @temp[100]:BYTE
LOCAL   @lptemp:LPVOID

lea eax,@temp
mov @lptemp,eax
lea eax,@lptemp

可否不用@lptemp这个变量???

把操作都放入寄存器中。。。。。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
不大看懂你的意思,你这几步不过是让eax中存放了@temp的地址而已
2006-6-18 10:50
0
雪    币: 235
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
简单的说,我如何得到一个寄存器的地址?

lea eax,[ebx]

这样好像是得到ebx的值而不是地址
2006-6-18 14:27
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最初由 lemony 发布
LOCAL @temp[100]:BYTE

lea eax,@temp

eax中存放的是@temp的指针
........


首先说明一下...寄存器是不能取地址的哦.....

之于下面这个,不明白你是什么意思....

我目前的做法
LOCAL   @temp[100]:BYTE
LOCAL   @lptemp:LPVOID

lea eax,@temp
mov @lptemp,eax
lea eax,@lptemp
你先将@TEMP 地址放在@LPTEMP中..又取@LPTEMP地址放在EAX中...如果你想
LEA EAX,@TEMP
LEA EBX,EBX 
那就会出错...是不可能的....
2006-6-18 14:31
0
雪    币: 235
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
那就是说,如果我要取得一个变量地址的地址,就必须再声明一个变量了。。。。。。。
2006-6-18 14:45
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
  没有必要了...因汇编中两次取地址几乎很少用.....lea eax,temp
本来就是取的变量地址.....如果有必要用两次取地址...那就要额外变量了...
2006-6-18 15:36
0
雪    币: 122
活跃值: (45)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
最初由 lemony 发布
简单的说,我如何得到一个寄存器的地址?

lea eax,[ebx]

这样好像是得到ebx的值而不是地址


不明白你这里"寄存器的地址"是什么意思?
寄存器里存放的数据可以是数值,也可以是内存地址.他们是在CPU内部的存储器,用标号表示就可以了,一般不会关心他们的地址.
2006-6-18 16:35
0
游客
登录 | 注册 方可回帖
返回
//