首页
社区
课程
招聘
求助:mov ecx,sizeof IMAGE_SECTION_HEADER
发表于: 2015-4-15 15:55 5293

求助:mov ecx,sizeof IMAGE_SECTION_HEADER

2015-4-15 15:55
5293
如下:

mov        ecx,IMAGE_SECTION_HEADER



mov        ecx,sizeof IMAGE_SECTION_HEADER

是否一样,有什么区别,谢谢

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

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 2664
活跃值: (3400)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
2
typedef struct _IMAGE_SECTION_HEADER {
  BYTE  Name[IMAGE_SIZEOF_SHORT_NAME];
  union {
    DWORD PhysicalAddress;
    DWORD VirtualSize;
  } Misc;
  DWORD VirtualAddress;
  DWORD SizeOfRawData;
  DWORD PointerToRawData;
  DWORD PointerToRelocations;
  DWORD PointerToLinenumbers;
  WORD  NumberOfRelocations;
  WORD  NumberOfLinenumbers;
  DWORD Characteristics;
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

mov        ecx,IMAGE_SECTION_HEADER 明显类型不匹配,编译不通过...

mov        ecx,sizeof IMAGE_SECTION_HEADER 这句是将IMAGE_SECTION_HEADER这个结构体所占的大小赋值给ecx
2015-4-15 16:08
0
雪    币: 40
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=安于此生;1365371]typedef struct _IMAGE_SECTION_HEADER {
  BYTE  Name[IMAGE_SIZEOF_SHORT_NAME];
  union {
    DWORD PhysicalAddress;
    DWORD VirtualSize;
  } Mis...[/QUOTE]

我当时也感到奇怪,这个是WIn32汇编书里给的代码
2015-4-15 16:19
0
雪    币: 2664
活跃值: (3400)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
4
尽信书还不如无书
2015-4-15 18:37
0
雪    币: 40
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢你的回复,我测试了,两条语句的功能是一样的,可以编译执行的
2015-4-16 11:28
0
雪    币: 2664
活跃值: (3400)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
6
你用OD看看, 显示的效果是什么
2015-4-16 11:33
0
雪    币: 183
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
一样吗?路过
2015-4-16 15:46
0
雪    币: 5467
活跃值: (1435)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
一样吗?我感觉不一样。
2015-4-16 16:06
0
雪    币: 7673
活跃值: (5497)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
两句区别也挺简单的啊。
都是给ECX赋值 ,唯一的区别就是 sizeof 这个标志

第一个 【mov        ecx,IMAGE_SECTION_HEADER】,明显的,这里执行后,ECX=IMAGE_SECTION_HEADER 的指针(别说指针都不懂,这样我就难解释了)

第二个【mov        ecx,sizeof IMAGE_SECTION_HEADER】
执行后,ECX=IMAGE_SECTION_HEADER 的大小。
这里要特别说明一下 ,其实是这样的:
sizeof IMAGE_SECTION_HEADER=sizeof(IMAGE_SECTION_HEADER)
这里只是作者懒得打了一个括号,要是打个括号,也许你就不用问这两个有什么区别了。
就像VC中 IF语句后面不一定要用{}一样,当且仅当IF语句后面只有一句代码的时候,是可以不用{}的。
所以这里的sizeof也差不多是这样,sizeof 不一定要用(),打个空格也是一样的。
2015-4-19 16:56
0
雪    币: 11
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
C++内嵌汇编测试:

   _asm mov  ecx,IMAGE_SECTION_HEADER; // 编译为: mov         ecx,dword ptr ds:[0] ; 当然, 运行就会出错
   _asm mov  ecx,TYPE IMAGE_SECTION_HEADER; // 编译为: mov         ecx,28h; 不说了
2015-5-21 18:46
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
对的,第一个是指针,第二个是大小
2015-5-28 14:27
0
游客
登录 | 注册 方可回帖
返回
//