首页
社区
课程
招聘
未解决 [求助]关于Win32汇编中ptr和[ ]的使用问题
发表于: 2018-11-11 17:20 1874

未解决 [求助]关于Win32汇编中ptr和[ ]的使用问题

2018-11-11 17:20
1874
mov eax 11223344h
;将16进制数0x11223344传送到eax中,结果是eax保存的值是0x11223344
;

;--------------------------------

mov    ecx, DWORD PTR [eax]
;这句话是什么意识呢?
;就是想问[]有什么用
;ptr在这里有什么用
;DWORD在这里有什么用

新手问题比较低级,还请多多包涵!


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

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 204
活跃值: (911)
能力值: (RANK:1324 )
在线值:
发帖
回帖
粉丝
2
相当于 ecx = *(uint*)eax
2018-11-11 17:25
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
jackandkx 相当于 ecx = *(uint*)eax
也就是说,DWORD是限定传递的数据的大小了。
2018-11-11 17:32
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

下面的代码为什么输出的不是dwAge的值22,而是dwAge的地址呢?

.386
.model flat,stdcall
option casemap:none


include D:/masm32/include/masm32.inc
include D:/masm32/include/kernel32.inc
includelib D:/masm32/lib/masm32.lib
includelib D:/masm32/lib/kernel32.lib

include D:/masm32/include/msvcrt.inc
includelib D:/masm32/lib/msvcrt.lib



    .DATA
szFormat DB  'eax=%x',0    
dwAge    DD  22  


    .CODE
main proc

    mov eax ,   DWORD ptr [offset dwAge]
    invoke crt_printf, offset szFormat, eax  ; 

    Ret
main endp

end main
2018-11-11 17:36
0
雪    币: 14541
活跃值: (3368)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
哈士奇去上学 也就是说,DWORD是限定传递的数据的大小了。
DWORD=2字=4字节
2018-11-11 20:55
0
雪    币: 1907
活跃值: (6064)
能力值: ( LV7,RANK:116 )
在线值:
发帖
回帖
粉丝
6
你拿到OD跟踪下看代码变成了什么
最后于 2018-11-11 21:53 被VirtualCC编辑 ,原因:
2018-11-11 21:53
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
Shark曾 你拿到OD跟踪下看代码变成了什么

我发现要先将全局变量dwAge的地址传送到一个寄存器中,再引用这个寄存器才能如我所愿输出22

    .DATA
szFormat DB  'eax=%d',0    
dwAge    DD  22     ; 


    .CODE
main proc stdcall


    mov edx , offset dwAge
    mov eax , DWORD ptr [edx]
    invoke crt_printf, offset szFormat, eax  ; eax = 22

    Ret
main endp

end main
2018-11-11 22:07
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
landeaxm DWORD=2字=4字节
Yes,I know
2018-11-11 22:08
0
游客
登录 | 注册 方可回帖
返回
//