- 博客(16)
- 资源 (49)
- 收藏
- 关注
转载 罗聪 OpCode教程 笔记二
http://www.luocong.com/learningopcode/doc/2._从哪里开始,到哪里结束.htm 计算机是如何知道哪里是某一条指令的开始,到哪里才是它的结束呢?看下面例子:EB:imm8 对应mnemonic就是 jmp,imm8 这是一条近跳转指令,imm8表示一个8位的立即数,意思是jmp到imm8的偏移后的地址去。这条OpCode的域格式是
2012-03-31 11:38:55 2469
转载 罗聪 OpCode教程 笔记一
http://www.luocong.com/learningopcode/doc/1._什么是OpCode?.htm OpCode就是Operation Code,意即操作码的意思, 就是010101了。 mnemonic就是我们用的汇编指令, 叫助记符 .一个OpCode不只对应一个助记符OpCode mnemonic 0x90 NOP 0x90
2012-03-31 11:24:15 2983
原创 一些反汇编引擎的资料
// ollydbg的反汇编引擎的文档及代码http://www.ollydbg.de/srcdescr.htm#_Toc531975949// Intel? 64 and IA-32 Architectures Software Developer's Manual 2A Instruction Set Reference A-M.pdf// Intel? 64 and IA-32
2012-03-31 09:35:50 3272
转载 输入表在PE中的结构及加载过程
http://hi.baidu.com/mymillet/blog/item/0c09123debead3c19f3d6249.html输入表结构我们知道,程序调用外部的dll函数通常都是下面这种形式: call my_label ...my_label: jmp dword ptr [xxxxxxxx] 对一个dll中的函数的调用总是通过一个地址间接的调用的
2012-03-31 08:39:04 2087
转载 汇编的Enter, leave, return 指令
enter的用法:enter 8, 3 ;就是申请8个存储单元(在堆栈中),特权为3http://www.cnblogs.com/keepfocus/archive/2011/09/15/2176925.html1. enter等价于:push ebpmov ebp, esp在函数的入口时常用。ENTER n 申请局
2012-03-21 13:08:02 8141
转载 Call指令与ret指令
一. call指令段内转移CPU执行call指令时,进行两步操作:1、将当前的IP或CS和IP压入栈中;2、转移;call指令不能实现短转移。与jmp指令实现转移的原理相同。格式:call 标号(把当前IP压栈后, 转到标号处执行指令)a. (SP) = (SP) - 2 ((SS) * 16 + SP) = (IP)b. (IP) = (IP) +
2012-03-20 13:15:40 4207
转载 SS, SP, BP 三个寄存器
SS, SP, BP 三个寄存器SS:存放栈的段地址;SP:堆栈寄存器SP(stack pointer)存放栈的偏移地址;BP: 基数指针寄存器BP(base pointer)是一个寄存器,它的用途有点特殊,是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到比如说,堆栈中压入了很多数据或者地址,你肯定想通过SP来访问这些数据或
2012-03-19 20:27:11 29441 1
转载 8086CPU的栈操作和PUSH与POP
一. 栈的执行过程下图:该图注意如下:1. 任意时刻, SS:SP指向栈顶元素SS:存放栈的段地址;SP:存放栈的偏移地址;2. 栈底的地址大.3. 栈是空的是什么意思?例如: 将10000H----1000FH这段空间当作栈, 初始状态栈是空的, 此时, SS=1000H, 那么SP= ?a. 栈底地址大.b. 任意时刻, SS:SP指向栈顶元素所以
2012-03-19 19:46:28 9666
转载 罗云彬win32汇编教程笔记 子函数的声明, 定义与调用
在主程序中用call指令来调用子程序。 Win32汇编中的子程序也采用堆栈来传递参数,这样就可以用invoke伪指令来进行调用和语法检查工作。一. 子程序的定义子程序的定义方式如下所示。子程序名 proc [距离][语言类型][可视区域][USES 寄存器列表][,参数:类型]...[VARARG] local 局部变量列表 指令子
2012-03-16 11:56:51 3959
转载 汇编lea 指令与 mov 指令
http://www.cnitblog.com/textbox/articles/51912.html比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子: push ebp mov esp, ebp sub esp, 4 现在栈上就有了4各字节的空间,这就是你的局部变
2012-03-12 21:22:54 5207
转载 Win32汇编的 PTR, OFFSET, ADDR
http://tech.ddvip.com/2010-04/1270705496150170.htmlPTR: 指定要操作的数据尺寸OFFSET: 获取全局变量或标号的偏移地址ADDR: 类似 offset 也是获取变量的地址(局部变量的地址只能用ADDR来获取) PTR: 指定要操作的数据尺寸; Test12_1.asm .386 .model flat, s
2012-03-12 20:18:45 2303
转载 罗云彬win32汇编教程笔记 变量的使用
变量的使用1. 以不同的类型访问变量例如: 定义一个变量:szBuffer db 1024 dup (?)使用:mov ax, szBuffer编译器会报一个错:error A2070: invalid instruction operands意思是无效的指令操作,为什么呢?因为szBuffer是用db定义的,而ax的尺寸是一个word,
2012-03-12 19:23:03 4050 1
转载 罗云彬win32汇编教程笔记 Win32汇编的全局变量与局部变量
Win32汇编的全局变量与局部变量变量的值在程序运行中是需要改变的,所以它必须定义在可写的段内,如 .data和 .data?,或者在堆栈内。按照定义的位置不同,MASM中的变量也分为全局变量和局部变量两种。1. 全局变量的定义全局变量的作用域是整个程序,Win32汇编的全局变量定义在 .data或 .data?段内,可以同时定义变量的类型和长度,格式是:变量名
2012-03-12 17:14:39 5201
转载 罗云彬win32汇编教程笔记 Win32汇编的标号和 @@
Win32汇编的标号和 @@(相当于C中的goto)当在程序中使用一条跳转指令的时候,可以用标号来表示跳转的目的地,编译器在编译的时候会把它替换成地址,标号既可以定义在目的指令同一行的头部,也可以在目的指令前一行单独用一行定义,标号定义的格式是:标号名: 目的指令标号的作用域是当前的子程序,在单个子程序中的标号不能同名,否则编译器不知该用哪个地址,但在不同的子程
2012-03-12 13:18:20 2462
原创 Win32汇编环境配置
Win32 汇编环境配置1. 下载MASM32 http://www.masm32.com/masmdl.htm2. 安装(例如安装在C:\MASM32)3. 编译下面例子; 使用 nmake 或下列命令进行编译和链接:; ml /c /coff Hello.asm; Link /subsystem:windows Hello.obj;>>>>>>>>>>>>>>>
2012-03-08 15:49:27 956
原创 sizeof 与结构体大小及结构体对齐问题, 字节对齐
遇到了这样的情况有如下结构体struct ST_1{ char a; double b; char c;}; 1. 写入文件ST_1 st;st.a = 'a';st.b = 123.4;st.c = 'b';fwrite(&st, sizeof(ST_1), 1, file); 2. 从文件中读出来
2012-03-07 13:08:20 1370
Win7下VFW调用
2015-04-25
例说 const_cast,reinterpret_cast,static_cast,dynamic_cast代码.rar
2009-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人