随笔分类 -  汇编

反汇编一个c程序
摘要:方式一:使用gccgcc编译有四步走,预编译,编译,汇编,连接使用-S编译选项[c-sharp] view plaincopygcc-Stest.c会在当前目录下生成test.s的文件,该文件即是相应的汇编程序方式二:使用gdb首先编译时要是用-g编译选项[c-sharp] view plaincopygcc-g./test.c-o./test接着运行gdb[c-sharp] view plaincopygdb./test--(可执行文件)在gdb中使用 disassemble + frame(帧),即可查看相应代码段的汇编代码frame通常为一个函数名。方式三:使用objdump命令为[c- 阅读全文

posted @ 2013-05-04 00:25 云化雨 阅读(900) 评论(0) 推荐(0)

汇编各寄存器作用
摘要:先来看寄存器相对寻址方式:操作数的有效地址是一个寄存器的内容和指令中给定的一个位移量(disp)之和。对于16位寻址,这个寄存器只能是基址寄存器BX、BP或变址寄存器SI、DI;对于32位寻址,允许使用任何32位通用寄存器。位移量可以是8位、16位、32位(只适用于32位寻址情况)的带符号数。这种寻址方式常用在访问数组中的数据。有效地址EA=(基址<或变址>寄存器)+disp若指令中使用的是BX、SI、DI、EAX、EBX、ECX、EDX、ESI、EDI,则默认操作数在数据段,即它们默认与DS段寄存器配合;若使用的是BP、EBP、ESP,则默认操作数在堆栈段,即它们默认与SS段寄存 阅读全文

posted @ 2013-04-26 16:43 云化雨 阅读(494) 评论(0) 推荐(0)

通过汇编学习程序布局
摘要:CODE SEGMENT ...MAIN PROC ... MOV AX,1111H PUSH AX CALL SUBPROC ... MAIN ENDPSUBPROC PROC MOV AX,2222H PUSH AX POP AX RETSUBPROC ENDP ...CODE ENDS END MAINCALL指令执行时,会先把返回地址压入堆栈,再形成子程序入口地址,最后把控制权交给子程序。一、返回地址:根据子程序的调用方式分为两种,1、段内调用:把CALL之后的那条指令地址的偏移量部分(当前IP或E... 阅读全文

posted @ 2013-04-26 15:56 云化雨 阅读(165) 评论(0) 推荐(0)

汇编语言数据类型与声明
摘要:类型描述类型缩写位数字节数浮点数有效位数值范围字节BYTEDB81 0..255有符号字节SBYTEDB81 -128..127字WORDDW162 0..65535有符号字SWORDDW162 -32768..32767双字DWORDDD324 0..4294967295有符号双字SDWORDDD324 -2147483648..2147483647远字FWORDDF486 四字QWORDDQ648 十字节TBYTEDT8010 单精度浮点数REAL432461.18*10-38..3.40*1038双精度浮点数REAL8648152.23*10-308..1.79*1030810字节浮点数 阅读全文

posted @ 2013-04-09 16:20 云化雨 阅读(765) 评论(0) 推荐(0)

导航