win32汇编语言寻址
2012-07-19 10:23
197 查看
汇编的寻址一直都比较让初学者头疼,这两天我在学习汇编语言。写个文章总结一下。
mov [eax],XXXX 间接寻址将xxxx中的数据存入eax指向的地址,传送指令不可以直接操作两个内存中的数
mov @sz ,@sc 当然是错误的
mov @sz ,4 mov @sz ,eax 这是可以的
总之两个内存中的数不可以,其他的指令一样适用 cmp指令 也是这样
立即数不可以间接寻址 mov eax ,[004100xx] 错误的!!! mov eax ,[@sz ] 会被编译成 mov eax ,ptr dword [ 004100xx] 相当于 mov eax ,@sz 不是间接寻址没有达到目的
offset是宏指令 在编译器有编译器处理的
mov eax ,offset @sz 实际上编译之后是 mov eax ,004100xx 立即数寻址
call 指令可以直接适用地址 call 00410xxx 也可以 call [eax +xxx] 间接寻址调用方法
在线程注入时由于代码在编译的时候是按照建议地址装载的(一般就是00401000)所以注入到进程地址的时候地址一定是错误的,所以代码重定位后就可以访问。
call @F
@@:
pop ebx
sub ebx ,offset @B ebx是实际的装载地址 pop ebx 的地址 offset @B 是pop ebx 编译时候的地址 相减后就是偏移了
这个时候ebx中保存的就是偏移量
所有的全局变量寻址由于在编译期的地址是错误的所以加上偏移量xxx后才可以访问到。
比如 sxdate dd
mov eax ,[xxx+sxdate ] 这个时候访问的就是sxdate 的值了
mov [eax],XXXX 间接寻址将xxxx中的数据存入eax指向的地址,传送指令不可以直接操作两个内存中的数
mov @sz ,@sc 当然是错误的
mov @sz ,4 mov @sz ,eax 这是可以的
总之两个内存中的数不可以,其他的指令一样适用 cmp指令 也是这样
立即数不可以间接寻址 mov eax ,[004100xx] 错误的!!! mov eax ,[@sz ] 会被编译成 mov eax ,ptr dword [ 004100xx] 相当于 mov eax ,@sz 不是间接寻址没有达到目的
offset是宏指令 在编译器有编译器处理的
mov eax ,offset @sz 实际上编译之后是 mov eax ,004100xx 立即数寻址
call 指令可以直接适用地址 call 00410xxx 也可以 call [eax +xxx] 间接寻址调用方法
在线程注入时由于代码在编译的时候是按照建议地址装载的(一般就是00401000)所以注入到进程地址的时候地址一定是错误的,所以代码重定位后就可以访问。
call @F
@@:
pop ebx
sub ebx ,offset @B ebx是实际的装载地址 pop ebx 的地址 offset @B 是pop ebx 编译时候的地址 相减后就是偏移了
这个时候ebx中保存的就是偏移量
所有的全局变量寻址由于在编译期的地址是错误的所以加上偏移量xxx后才可以访问到。
比如 sxdate dd
mov eax ,[xxx+sxdate ] 这个时候访问的就是sxdate 的值了
相关文章推荐
- 汇编语言 第三版 王爽 实验7 寻址方式在结构化数据访问中的应用
- 汇编语言复习之--寻址方式1
- 汇编语言寻址方式
- 汇编语言寻址方式在结构化数据访问中的应用
- 汇编语言实验3-寻址方式
- Win32汇编语言实战编写软件教程即将开始录制
- 使用MASM09 - Win32汇编语言017
- Win32汇编语言教程
- 汇编语言之不同寻址方式的灵活运用
- 王爽 汇编语言 第二版 实验七 寻址方式在结构化数据访问中的使用 源码
- 汇编语言之寻址方式
- 汇编语言基础之二 - 各种寻址和过程进出简介
- 使用MASM09 - Win32汇编语言017
- Win32汇编语言核心
- AT&T汇编语言及其寻址方式简述
- Win32汇编语言教程
- 汇编语言学习笔记之与转移地址有关的寻址方式
- 使用MASM07 - Win32汇编语言015
- Win32汇编语言教程(1)
- WIN32汇编语言中位图的使用