首页
社区
课程
招聘
[旧帖] [求助]MASM中变量名的使用? 0.00雪花
发表于: 2012-6-25 07:53 1779

[旧帖] [求助]MASM中变量名的使用? 0.00雪花

2012-6-25 07:53
1779
在看《加密与解密第三版》的第16章:外壳编写基础时,发现如下用法
ShellStart0 LABEL DWORD
pushad
call next0
ImprotTable DD XXXX

next0:
    pop ebp
    sub ebp, (ImportTable - ShellStart0) ;请问这句用的是ImportTable的地址吗?
如果是那么,mov ImportTable, 1234用的是ImprotTable指向的内存数据吗?
难道它既能当地址用,又能当内存数据用?

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 110
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
其实只需要去看看下面这一句反汇编就知道ImprotTable默认是代表什么了。
jmp ImprotTable

至于这样的用法ImportTable - ShellStart0,这只能说这是编译器的一个特性罢了,换一个编译器说不定就会报错。
从本质而言,标签只是一个地址,如40001000。而变量就是DWORD PTR [40001000]之类。指针本身是一个DWORD的变量,只是它保存的是一个地址而已。心中有数就行了,不用过分纠结编译器的语法。
2012-6-25 11:49
0
雪    币: 44
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是啊,但是编译器让人产生歧义很不爽,比如NASM,用地址时,用ImportTable表示地址,[ImportTable]表示数据。
2012-6-25 13:54
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
sub是32位的,
所以ImprotTable就是32位的数据,DWORD,双字
汇编基础知识
否则要加PTR,亲
2012-6-30 01:03
0
游客
登录 | 注册 方可回帖
返回
//