自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 5.4Irvine32库

一、创建这个库的原因目前为止还没有微软官方支持的汇编语言编程库。当程序员在1980年代开始在x86处理器上编写汇编语言时,MS-DOS是最常用的操作系统。当时的16位的程序能够调用MS-DOS方程(被称为INT 21h服务)来进行简单的输入和输入。但是在当时,如果我们想要在控制台输出一个整数,那么我们需要写一个相当长的程序,这个程序需要将我们的整数转化为ASCⅡ字符,我们把这个程序称为WriteInt,程序的实现逻辑如下:初始化:let n equal the binary valuelet buf

2021-01-30 19:26:40 846 3

原创 2.1~3 32位及64位x86处理器介绍

这篇文章着重介绍32位x86处理器的各种基本特征,32位x86处理器包括了Intel IA-32处理器以及AMD 32位处理器。一、运行模式x86处理器有三种基本的运行模式:保护模式(protected mode)、实地址模式(real-address mode)和系统管理模式(system management mode)。此外,还有一种称为virtual-8086的子模式,这个子模式是保护模式的一个特殊变种。接下来简要介绍下每种模式:保护模式保护模式是处理器最初始的运行模式。在保护模式下, a

2021-01-30 15:33:48 1952

原创 8.2 汇编栈帧

一、堆栈框架堆栈框架(stack frame)也称为活动记录(activation record),它是为传递的参数、子例程的返回地址、局部变量和保存的寄存器保留的堆栈空间。堆栈框架是按以下步骤创建的:如果有传递的参数,则压入堆栈子例程被调用,子例程的返回地址压入堆栈子例程在开始执行时,EBP被压入堆栈EBP设为ESP的值,从这时开始,EBP就被作为寻址所有子例程参数的基址指针使用了如果有局部变量,ESP减去一个数值,以便在堆栈上为局部变量保留空间如果任何寄存器需要保存,则压入堆栈1.1

2021-01-27 22:56:45 829 1

原创 AT&T与intel汇编格式区分

操作数赋值方向在intel语法中,第一个操作数表示目的操作数,第二个操作数表示源操作数,赋值方向从右向左。而在AT&T语法中,第一个操作数表示源操作数,第二个操作数表示目的操作数,赋值方向从左到右。例:将ebx赋值给eaxintelat&tmov eax,ebxmovl %ebx,%eax指令前缀在intel语法中寄存器和立即数不需要前缀,而AT&T语法中寄存器需要加前缀%,立即数需要加前缀$例:将1赋值给eax寄存器intelat&

2021-01-27 10:59:02 552

原创 C语言volatile关键字

volatile关键字是一种类型修饰符,用它声明的变量类型可以被某些编译器未知的因素更改,比如:操作系统、硬件或其他线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对该特殊地址的稳定访问。声明volatile语法如下:int volatile vInt;,当要求使用volatile声明的变量的值时,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。例如:volatile int i=10;int a = i;...// 其他代码,并未明确

2021-01-27 10:11:44 140

原创 radare2命令介绍

启动在Ubuntu中输入r2,输出如下:zyjsuper@ubuntu:~$ r2Usage: r2 [-ACdfLMnNqStuvwzX] [-P patch] [-p prj] [-a arch] [-b bits] [-i file] [-s addr] [-B baddr] [-m maddr] [-c cmd] [-e k=v] file|pid|-|--|=其中参数含义如下:d:以debuger模式启动命令测试程序如下void main(){

2021-01-26 10:22:17 1442

原创 python内置类型

python解释器中主要内置类型有数字、序列、映射、类、实例和异常。序列类型-list,tuple,range有三种基本序列类型:list,tuple和range通用序列操作大多数序列类型,包括可变类型和不可变类型都支持下表中的操作。此表按优先级升序列出了序列操作,在表格中,s和t是具有相同类型的序列。n、i、j和k是整数而x是任何满足s所规定的类型和值限制的任意对象。注意,in和not in操作具有与比较操作相同的优先级,+(拼接)和*(重复)操作具有与对应数值运算相同的优先级运算结

2021-01-22 14:52:24 510

原创 gdb官方说明文档中文版

一、简介GDB本身是一个debug工具,可以进行以下几类动作:启动程序,specifying anything that might affect its behavior.让我们的程序在特定情况下暂停执行当我们的程序停止执行时,检测下发生了什么修改我们的程序,让我们可以修复了某个bug后可以继续进行测试,寻找其他的bug二、启动和退出GDB2.1 启动我们可以使用命令gdb来启动gdb,启动后gdb一直等待着我们从命令行输入的指令,一直到我们退出GDB:gdb带有很多参数,这些参数

2021-01-21 19:23:08 5881 3

原创 7.7-11 重定位过程描述+可执行目标文件的加载+共享库动态链接

目标文件有以下三种类型:Relocatable object file(可重定位的对象文件). Contains binary code and data in a form that can be combined with other relocatable object files at compile time to create an executable object file.Executable object file. Contains binary code and data in

2021-01-20 23:49:14 1545 4

原创 Linux bash基本介绍

一、认识bash这个shell管理整个硬件的是操作系统的内核(kernel),内核是需要被保护的,所以一般使用者只能通过shell来和内核沟通,来让内核达成我们想要达成的工作。那么操作系统有多少shell,为什么我们要使用bash?下面回答下这些问题。1.1 硬件、内核与shell首先我们先了解下电脑的工作状态,以“我们的电脑需要输出一段音乐”为例,来看下我们的电脑需要哪些部分:硬件:首先需要我们有“声卡”这个配置,不然无法输出声音内核管理:我们需要操作系统的内核支持这个“硬件”,所以还需要提供

2021-01-20 18:15:37 743

原创 Linux账号管理

一、新增与移除使用者我们可以使用useradd来新增使用者,密码的给予则使用passwd这个指令,这两个指令使用方法如下:1.1 useradd语法如下:useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明文件] [-d 家目录绝对路径] [-s shell] 使用者账号名选项与参数:-u:后面跟的是UID,是一组数字,直接指定一个特定的UID给这个账号-g:后面接的是初始群组,该群组的GID会被放置到/etc/passwd的第四部分中-G:后

2021-01-18 18:12:07 187

原创 实验7 寻址方式在结构化数据访问中的应用

Power idea公司从1975年成里一直到1995年的基本情况如下:下面的程序中,已经定义好了这些数据:assume cs:codesgdata segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','1994','1995'

2021-01-14 10:26:24 196

原创 实验9-编程显示字符串

要求:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串’welcom to masm!’编程所需的知识如下:内存地址空间中,B8000H~BFFFFH共32KB的空间,为80×2580\times2580×25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上。80×2580\times2580×25代表显示器可以显示25行,每行80个字符。每个字符有256种属性(背景色、前景色、闪烁、高亮等信息),所以一个字符在显示缓冲区要占两个字节,分别存放字符的ASCⅡ码和属

2021-01-13 17:28:26 750

原创 13-int指令

一、int指令int指令的格式为int n,n为中断类型码,它的功能是引发中断过程。CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下:取中断类型码n标志寄存器入栈,IF=0,TF=0CS、IP入栈(IP)=(n*4), (CS)=(n*4+2)从此处转去n号中断的中断处理程序。可以在程序中使用int指令调用任何一个中断的中断处理程序。例如,下面的程序:assume cs:codecode segmentstart: mov ax,0b00h mov

2021-01-07 19:44:56 3558

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除