
汇编语言
yiichan
这个作者很懒,什么都没留下…
展开
-
CSAPP Lab 3 Attack Lab phase1~3
Lab 3 Attack labphase 1第一个很简单,只需要用x命令查看栈内容,定位到ret的返回位置,再用自己输入的缓冲区溢出数据覆盖就行了。计算好需要输入的字节长度,将touch1函数的首地址恰好覆盖原先的栈顶元素,这样ret就会返回到touch1函数,而不是返回到正常的test函数。需要注意的是,由于转移目标地址输入到栈中是ascii码形式保存的,所以如果地址是一些难以输入的ascii码怎么办?官方给了一个转换小程序hex2raw,能够将两位16进制表示的ascii码转换成字符输入,这样就原创 2020-08-04 20:39:05 · 892 阅读 · 0 评论 -
GDB汇编调试命令
GDB汇编调试命令之前学xv6时用到的GDB,在这里整理了一份常用gdb命令,免得自己以后还得去网上查那些对错不论的博客。1. info r 显示当前的寄存器值对于标志寄存器,见下图。其实输入上面命令,eflags后面会直接显示当前为1的寄存器名称。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aik6OLGV-1594872387491)(/home/yichuan/桌面/eflags.png)]2. 要查看寄存器的值,很简单,可以使用如下命令:info r原创 2020-07-16 12:07:42 · 1437 阅读 · 0 评论 -
第8章 检测点
检测点8.3解答:1 . 移动之后是0010 1010 1001 0101,即0x2a952.a. jmp label_proc2.b. jmp bx2.c. jmp [bx]2.d. jmp 0xf000:0x00022.e. jmp far [0x80]2.f. jmp far [es:bx+di+0x08]本章习题1 . 真的不会,调了半天没调出来2 . 去掉38、39行时,如果实际代码长度小于512字节,就是说只使用了0号扇区,则接下来51、52行会读下一个逻辑原创 2020-06-25 20:53:21 · 221 阅读 · 0 评论 -
第8章 硬盘和显卡的访问与控制
第八章 硬盘和显卡的访问与控制8.2 用户程序的结构处理器对指令和数据的获取一律按“段地址:偏移地址“进行,相对应地,一个规范的程序应该包括代码段、数据段、附加段和栈段。段定义NASM编译器使用汇编指令SECTION或者SEGMENT来定义段,格式如下SECTION 段名SEGMENT 段名对齐命令alignIntel处理器要求段在内存中的起始物理地址起码是16字节对齐的,意思是,必须是16的倍数,或者说物理地址必须能被16整除。这在装载时会被操作系统自动装载到对齐后的地址。但是,相应的,原创 2020-06-25 20:51:26 · 535 阅读 · 0 评论 -
Bochs调试
要打开的是bochsdbg.exe。首先在起始页面设置一些基本数据,之后进入调试窗口。b 0x7c00 设置断点c continue,即为不断执行,到断点或终点停下r 显示通用寄存器内容sreg 显示段寄存器内容xp 显示指定内存地址处的内容,默认显示一个双字,可以指定显示的双字个数。如xp/2 0xb8000 ,会从0xb8000起显示两个双字q 退出调试过程u/n 0xXXXX 反汇编指令,用于对0xXXXX地址后的n条指令进行反汇编,得到这n条原创 2020-06-25 20:50:56 · 652 阅读 · 0 评论 -
第7章 比高斯更快的计算
第七章 比高斯更快的计算这一章的主题是汇编计算累加和,以及寻址方式的学习。and、or指令and是按位与,or是按位或。两者的目的操作数都必须是8位或者16位的内存单元或者通用寄存器,源操作数必须是与目的操作数同宽度的内存单元、通用寄存器或者立即数。注意,与其他指令一样,源操作数和目的操作数不能都为内存单元。两者对标志寄存器的影响相同:OF和CF被清零,SF、ZF、PF依计算结果而定,AF位的状态未定义。栈计算机中的栈段一般是从高地址向低地址生长,也就是说压栈减地址,出栈加地址。在这里,我们选原创 2020-06-15 23:34:08 · 335 阅读 · 0 评论 -
第6章 相同的功能 不同的代码
第六章 相同的功能 不同的代码上一章我们分别将每一个显示字符打入显示缓冲区,这样太麻烦,每次修改显示不同内容得重写,所以我们这一章设一个专门存放字符串的数据区,当要显示时,再用指令统一取出来。补课:除法指令div8086处理器除法指令有两种类型。类型一:16位数除以8位数。被除数放置于ax,除数可以由8位通用寄存器或内存单元提供。商在寄存器al中,余数在寄存器ah中。div cl ;除以cx寄存器低位的8位cldiv byte [0x0023] ;除以0x0023处的1字节数据类型原创 2020-06-15 23:33:38 · 473 阅读 · 0 评论 -
第5章 编写主引导扇区代码
第五章 编写主引导扇区代码显存和段寄存器首先理解显存的概念。显卡工作时,会把显存中的信息显示到屏幕上。CPU在显示信息时,首先把信息写入显存,再在屏幕显示。为了加快处理速度,在内存中设置一块显存空间的映射,将信息直接写入内存,再从内存中读取、显示信息。文本模式显存映射的起始物理地址此时是0xB800.DS:段寄存器ES:附加段寄存器此处先用附加段寄存器ES。Intel处理器不允许直接将...原创 2020-04-11 17:26:55 · 318 阅读 · 0 评论 -
ubuntu nasm 如何汇编
打开终端,到需要汇编的asm文件目录下 ,打开终端,执行下述命令nasm −f <format> <filename> [−o <output>] 这是标准的命令格式,output可以指定输出文件格式nasm nasm-f bin xxx.asm -o xxx.bin 用bin格式,否则就错了...原创 2020-04-11 17:23:55 · 444 阅读 · 0 评论