======================================================================
KERNEL32.DLL系统服务功能,包括内存管理、任务管理和动态链接等。
GDI32.DLL图形设备接口。利用VGA与DRV之类的显示设备驱动程序完成显示文本和矩形等功能。
USER32.DLL用户接口服务。建设窗口和传送消息等。
======================================================================
调用MessageBox函数的方法:
Push uType
Push lpCaption
Push lpText
Push hWnd
Call MessageBox
======================================================================
Mov cx,1234h
Cmp flag,1
Jz @F //本条指令后的第一个@@
Mov cx,1000h
@@:
…
Loop @B//本条指令前的第一个@@
======================================================================
变量类型
名称 表示方式 缩写 长度(字节)
字节 Byte db 1
字 word dw 2
双字 dword dd 4
三字 fword df 6
四字 qword dq 8
十字节(BCD)tbyte dt 10
有符号字节 sbyte 1
有符号双字 sword 2
有符号双字 sdword 4
单精度浮点数 Real4 4
双精度浮点数 Real8 8
10字节浮点数 Real10 10
======================================================================
“HELLO,World!”和”HELLO AGAIN”
szText db ‘Hello,world’,0dh,0ah,’Hello again’,odh,oah,0
TestProc proc
Local @loc1:dword,@loc2:word
Local @loc3:byte
Mov eax,@loc1
Mov ax,@loc2
Mov al.@loc3
Ret
TestProc endp
编译后
Push ebp
Mov ebp,esp
Add esp ,FFFFFFF8 //-8
Mov eax,dowrd ptr[ebp-04]
Mov ax,word ptr[ebp-06]
Mov al,byte ptr[ebp-07]
Leave
Ret
======================================================================
Mov esi,offset stWndClass
Mov eax,[esi+WNDCLASS.lpfnWndProc]
存取数据结构
Movzx ax,bTest1
把单字节变量扩展到16位放入AX中。
定义局部变量
Invoke Test ecx,addr szHello
编译后:
Lea eax,[ebp-4]
Push ecx
Push eax
Call Test
=====================================================================
堆栈平衡
Push Var3
Push var2
Push var3
Call SubRouting
Add esp,12
ESP是上加,下减的一个表
从下边入栈,从下边出栈。
ADD ESP,12
这里相当于
POP Var3
POP var2
POP var3
=====================================================================
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课