首页
社区
课程
招聘
[原创]Windows X64汇编入门(1)
发表于: 2007-5-5 23:31 67678

[原创]Windows X64汇编入门(1)

2007-5-5 23:31
67678
;示例代码1.asm
;语法:GoASM
DATA SECTION
text     db 'Hello x64!', 0
caption  db 'My First x64 Application', 0

CODE SECTION
START:
sub rsp,28h
xor r9d,r9d
lea r8, caption
lea rdx, text
xor rcx,rcx
call MessageBoxA
add rsp,28h
ret

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
  • 1.jpg (55.41kb,2345次下载)
  • 2.jpg (63.77kb,2473次下载)
  • 3.jpg (29.36kb,2272次下载)
  • 4.jpg (6.28kb,2247次下载)
  • 5.jpg (37.78kb,2289次下载)
收藏
免费 7
支持
分享
最新回复 (41)
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
沙发,好帖。32位的还才刚看。。。。收藏以后看
2007-5-5 23:41
0
雪    币: 615
活跃值: (1222)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
好文
tankaiha 的本本太强悍. 汗一下
在问tankaiha一个问题,是不是一些句柄必须放在RCX中?
loc_10000B2FA:          ; lParam
xor     r9d, r9d
xor     r8d, r8d        ; wParam
mov     edx, 0C5h       ; Msg
mov     rcx, rbp        ; hWnd
mov     cs:qword_100012760, rdi
call    cs:PostMessageW
mov     rcx, cs:qword_100011148 ; hWnd
mov     ebx, 5
mov     edx, ebx        ; nCmdShow
call    cs:ShowWindow
mov     rcx, cs:hWnd    ; hWnd
movsxd  r8, r13d        ; wParam
xor     r9d, r9d        ; lParam
mov     edx, 0B9h       ; Msg
call    cs:SendMessageW
mov     rcx, cs:hWnd    ; hWnd
call    cs:SetFocus
mov     rcx, rsi        ; hCursor
call    cs:SetCursor
2007-5-6 10:32
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
4
rcx只是第一个参数,在许多API如MessageBox,PostMessage和SendMessage中确实是句柄,不过别的API应该不一定。

呵呵,偶也是刚学啊,多讨论。
2007-5-6 11:44
0
雪    币: 150
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
一不小心就让我看到了,win64刚接触学习学习~
2007-5-7 07:18
0
雪    币: 97
活跃值: (301)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
天啦,都出64位了,32位还没过关。汗。。。
2007-5-7 09:05
0
雪    币: 214
活跃值: (11)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
太有才了……
不知道能流畅运行Vista的计算机什么时候才会降到普通学生能接受的价格
2007-5-7 10:57
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
现在学64位有用么?
2007-5-7 15:34
0
雪    币: 47147
活跃值: (20460)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
9
好像听到64位脚步声了,tankaiha每次都能与大家分享这些新的技术,谢谢
2007-5-7 15:41
0
雪    币: 615
活跃值: (1222)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
64位PE文件的结构,64位执行文件需要PEID的支持,支持64位EXE,DLL的OllyDBG,等等等等.
2007-5-7 17:01
0
雪    币: 314
活跃值: (15)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
11
学习学习再学习
2007-5-7 17:30
0
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
od 2.0 是不是 在等 64位的普及啊?
2007-5-8 08:34
0
雪    币: 235
活跃值: (50)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
13
学习!学习!再学习!
2007-5-8 15:07
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
sub rsp,28h

这个每个还要去自己计算,感觉麻烦些了.
2007-5-9 15:37
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
15
呵呵,可以用GoASM的Invoke宏,不过masm还没支持。

如果连续几个API调用的话,在第一个之前sub一个比较大的值就OK了,不用一个个sub再add,也不是非常麻烦。
2007-5-9 20:24
0
雪    币: 716
活跃值: (162)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
16
好文章啊,怎么现在才看到,
2007-5-9 22:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
怎一个强字了得!
顺便请教下,初学者应该先从32位开始还是直接从64开始好?
2007-5-10 18:36
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
18
偶觉得32位目前还是根本
2007-5-10 19:15
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
之前有愈到過64bit 下的問題,藉此可以學一下
2007-5-10 22:41
0
雪    币: 223
能力值: (RANK:130 )
在线值:
发帖
回帖
粉丝
20
好文章啊,一直想学64位汇编呢
2007-5-10 23:59
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
好是好,看来我得先搞台机子了
2007-5-11 12:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
代码中还有一处值得注意,那就是sub rsp,28h和add rsp,28h。28h这个数值是怎么来的呢?

四个参数不是通过寄存器传递的吗?
2007-9-5 15:45
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
23
caller负责构造stack frame
平时win32中,由callee构造并释放了,所以我们一般不太注意
2007-9-5 20:27
0
雪    币: 153
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
注意:sample中就4个参数,刚好利用了rcx, rdx, r8, r9,如果有5个甚至更多的话这么办?
就是mov [rsp+20h], param5
   mov [rsp+28h], param6
这样的啦。
2007-9-6 06:33
0
雪    币: 442
活跃值: (107)
能力值: ( LV9,RANK:350 )
在线值:
发帖
回帖
粉丝
25
羡慕...你的本本...^0^
2007-9-8 11:14
0
游客
登录 | 注册 方可回帖
返回
//