![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编
奈沙夜影
这个作者很懒,什么都没留下…
展开
-
有趣的Shellcode和栈
学弟问了一个ctf-wiki上pwn入门题的知识点,本身没什么意思题目下载链接 - sniperoj-pwn100-shellcode-x86-64题目简介很明显栈溢出,buf位于栈顶,栈空间为0x10个字节(可以从buf的位置rsp+0rbp-10h看出),所以栈分布为内容偏移bufrsplast_rbprsp+0x10ret_addrrsp+0x...原创 2020-03-26 04:47:28 · 26051 阅读 · 2 评论 -
170416 汇编-标志寄存器:SF、CF、OF
1625-5 王子昂 总结《2017年4月16日》 【连续第197天总结】A.汇编语言 标志寄存器B.flag的第7位是SF,符号标志位。它记录相关指令后,其结果是否为负。如果结果为负,sf=1;如果非负,sf=0计算机通过补码来表示数据,一个二进制数据的第一位即能表示2的7次方,也能表示负数因此需要SF来记录该结果的正负flag的第0位是CF,进位标志位。一般情况下,原创 2017-04-17 11:51:57 · 4573 阅读 · 0 评论 -
170413 汇编-防溢出除法和数值转字符型的子程序
1625-5 王子昂 总结《2017年4月13日》 【连续第194天总结】A.汇编语言实验十 90%B.第二个子程序:解决除法溢出的问题word型/byte型时以8位寄存器保存余数和商,但有可能商大于8位,此时会报错Divide overflow;解决程序:被除数为dword型,除数为word型,结果为dword型参数:ax=低16位 dx=高16位cx原创 2017-04-13 23:22:35 · 489 阅读 · 0 评论 -
170412 汇编-显示字符串的子程序
1625-5 王子昂 总结《2017年4月12日》 【连续第193天总结】A.汇编语言 实验十30%B.子程序之一:给定行号、列号、字符串和颜色,可以在程序中修改显存来达到显示字符串的目的代码如下:;dh中保存行号(0~24),dl中保存列号(0~79),cl中保存颜色,ds:si指向字符串的首地址show_str: mov ax,0B800Hmov es,原创 2017-04-12 22:24:54 · 966 阅读 · 0 评论 -
170411 PyQt5-控件透明,汇编-call和ret配合、子程序
1625-5 王子昂 总结《2017年4月10日》 【连续第191天总结】A.PyQt5 控件半透明、stackwidget的切换100%汇编第十章90%B.控件半透明主要是背景颜色的设置,百度上大部分都是半透明/透明窗口通过trans.setWindowOpacity(0.5)可以直接设置窗口的透明度(越小越透明,1不变,0全透)但是如果只针对一个控件上述方法原创 2017-04-11 23:44:18 · 1762 阅读 · 0 评论 -
170410 汇编-ret和call,OD-基本操作
1625-5 王子昂 总结《2017年4月10日》 【连续第191天总结】A.汇编语言 第十章70%OlleyDbg基本操作B.ret指令用栈中的数据修改IP的内容,从而实现近转移。相当于pop IPretf指令用栈中的数据修改CS和IP的内容,从而实现远转移。相当于pop IP pop CScall指令将当前的IP或CS和IP压入栈中,然后转移call不能原创 2017-04-10 18:45:17 · 1020 阅读 · 0 评论 -
170409 汇编-转移指令,OD配置
1625-5 王子昂 总结《2017年4月9日》 【连续第190天总结】A.汇编语言 第九章B.段间转移(远转移):jmp far ptr 标号...eg:jmp far ptr sdb 256 dup (0)s:add ax,1...翻译成debug后,jmp行的机器码为:EA0B01 BD0B;指令为:JMP0BBD:010B即目的地原创 2017-04-09 23:49:47 · 560 阅读 · 0 评论 -
170408 汇编-段内转移指令
1625-5 王子昂 总结《2017年4月8日》 【连续第189天总结】A.汇编语言第九章B.可以控制CPU执行内存中某处代码的指令叫做转移指令转移行为有两种:只修改IP时,称为段内转移;同时修改CS和IP时,称为段间转移段内转移又按照IP的修改范围不同,分为两种:短转移:IP的修改范围为-128-127长转移:IP的修改范围为-32768-32767转原创 2017-04-09 11:48:22 · 1088 阅读 · 0 评论 -
170407 汇编-综合练习 实验7
1625-5 王子昂 总结《2017年4月7日》 【连续第188天总结】A.汇编第八章实验 100%B.题:将给定的定义好的数据重新按格式写入指定table段中,并计算21年中的人均收入乍一看还是有点懵的,汇编的结构太混乱了。或者说太简单了,全部由寄存器和内存单元构成。慢慢理清思路,由于年份和总收入都占4个字节,而人数只占2个字节,因此不可能同用一个寄存器来表示(因为长度不原创 2017-04-08 01:30:25 · 717 阅读 · 0 评论 -
170406 汇编-第八章数据类型、div和dup
1625-5 王子昂 总结《2017年4月6日》 【连续第187天总结】A.汇编第八章B.数据处理的两个基本问题:处理的数据在什么地方要处理的数据有多长这两个问题,必须在机器指令中给以明确或隐含的说明,否则计算机就无法工作。在8086CPU中,只有bx,si,di和bp四个寄存器中能够使用于[...]来进行内存单元的寻址。而ax,cx,dx等等都是不可以放于其中原创 2017-04-06 21:55:23 · 476 阅读 · 0 评论 -
170405 汇编-嵌套循环练习,OD-界面介绍
1625-5 王子昂 总结《2017年4月5日》 【连续第186天总结】A.汇编语言 实验6ollydbg界面介绍B.汇编的实验题题为将给定数据段的每行的前4个字母改为大写只要把思路理清了,做起来还是挺容易的原理:大小写英文字母的ASCII码值相差64,即2^5,100000b。且小写字母均大于64,大写字母均小于64。因此只需要使用and操作即可将该位设置为0,来原创 2017-04-05 16:48:23 · 852 阅读 · 0 评论 -
170404 汇编-灵活的内存地址调用方法
1625-5 王子昂 总结《2017年4月4日》 【连续第185天总结】A.汇编第七章 100%加密与解密B.si和di是专门用于表示偏移地址的寄存器,与[bx+idata]类似还可以使用[bx+si]或[bx+di],表示偏移地址为bx中的值加si/di中的值常用[bx][si/di]的格式表示也可以使用[bx+idata+si/di]常用idata[bx][原创 2017-04-04 17:43:21 · 474 阅读 · 0 评论 -
170403 汇编-位运算和地址表示,逆向-winapi和系统相关基础
1625-5 王子昂 总结《2017年4月3日》 【连续第184天总结】A.汇编第七章 50%加密与解密第一章100%B.更灵活的定位内存地址的方法:and:取交位运算,可以将寄存器的值的某一位设为0,其他位不变or:取并位运算,可以将寄存器的值的某一位设为1,其他位不变eg:mov al,01100011Band al,10111111B//可以使原创 2017-04-03 23:39:09 · 845 阅读 · 0 评论 -
170402 汇编-分段、实验和复习
1625-5 王子昂 总结《2017年4月2日》 【连续第183天总结】A.汇编 分段和复习B.编程实验里出了BUG,基本上综合用到了之前的大部分知识,忘得很多了,于是正好来一遍整体复习寄存器:AX,BX通用寄存器,充当变量,任意使用CX专门用于储存循环次数DS数据段寄存器,用于表示默认代码的段前缀SS栈段寄存器,用于表示栈堆指针的段地址CS原创 2017-04-02 14:46:58 · 313 阅读 · 0 评论 -
170401 汇编第六章 内存分段
1625-5 王子昂 总结《2017年4月1日》 【连续第182天总结】A.汇编语言 第六章B.之前虽然学习了栈的使用,但是对于要考虑内存数据的安全性时的正常使用,需要一个单独的安全的数据空间dw命令申请的内存空间就可以派上用场。dw 0,0,0,0,0,0,0,0//既可以表示申请了8个值为0的字的空间,也可以表示开辟了16个字节的空间(供栈使用)为了区分原创 2017-04-02 00:22:52 · 421 阅读 · 0 评论 -
170331 汇编-寄存器复习
1625-5 王子昂 总结《2017年3月31日》 【连续第181天总结】A.汇编语言 第五章实验、6.1B.实验题做的挺困难,很多寄存器需要好好复习CPU的指令各自都拥有自己的特性,和寄存器(变量)结合起来发挥的作用要好好梳理一下DS:数据段寄存器,存储数据;作为访问内存区域的默认段前缀SS:栈堆段寄存器,表示栈指针的段地址SP:栈堆寄存器,表示栈指针的偏移地址原创 2017-04-01 12:21:54 · 391 阅读 · 0 评论 -
170824 汇编-x86基础
A.1625-5 王子昂 总结《2017年8月24日》 【连续第325天总结】 B. 逆向知识 X86与X64指令集数据移动分为5种方式: 立即数到寄存器 立即数到内存 寄存器到寄存器 寄存器到内存或内存到寄存器 内存到内存 前4种是所有现代体系都支持的,第五种是X86独有的,可以通过inc/add来直接操作内存 另外X86使用变长指令,指令长度从1-15字节不原创 2017-08-24 13:04:06 · 363 阅读 · 0 评论 -
170417 汇编-除法防溢出和数值显示的子程序实操
1625-5 王子昂 总结《2017年4月17日》 【连续第198天总结】A.汇编语言 综合设计180%B.综合设计中的三个子程序进行了上机实验,不溢出除法进行的很顺利,除了刚开始写的时候由于公式里没说余数哪去了所以也没写检查了一下公式,重新理解了余数的出现地点然后将其正确输出即可代码:assume cs:codecode segmentstart: mov原创 2017-04-18 00:20:35 · 834 阅读 · 0 评论 -
170418 汇编-adc和sbb的进位/借位加减法命令
1625-5 王子昂 总结《2017年4月18日》 【连续第199天总结】A.汇编 第十一章B.第0位CF,进位标志位表示的是“无符号数”运算时的进位/借位情况第11位OF,溢出标志位表示的则是“有符号数”运算时的溢出情况它们俩是彼此独立的,哪一位有意义取决于运算数是有符号数还是无符号数adc是带进位加法指令,利用了CF位上记录的进位值。adc 数1,数2最终结原创 2017-04-19 11:02:46 · 4268 阅读 · 0 评论 -
170419 汇编-cmp指令
1625-5 王子昂 总结《2017年4月19日》 【连续第200天总结】A.汇编语言 十一章B.cmp指令是比较指令,相当于减法,但不保存结果它执行后对标准寄存器产生影响,其他相关指令通过读取flag来得知结果eg: cmp ax,ax结果:zf=1,pf=1,sf=0,cf=0,of=0对cmp ax,bx若ax=bx,则zf=1若ax!=bx,则zf=原创 2017-04-19 23:38:27 · 661 阅读 · 0 评论 -
170508 PyQt-comboBox的Bug修复,OlleyDbg的断点
1625-5 王子昂 总结《2017年5月8日》 【连续第219天总结】A.汇编语言 十七章PyQt Bug修复B.使用的ComboBox在刷新的时候总会有点谜……两个页面的二级comboBox总是不同步,明明是一样的代码,研究了半天也不知道怎么回事最后化简到直接调用该comboBox的clear()方法都无效不过当作为对比,调用一级comboBox的clear()原创 2017-05-08 18:44:59 · 631 阅读 · 0 评论 -
170507 汇编-直接定址表,反编译-算法分析
1625-5 王子昂 总结《2017年5月7日》 【连续第218天总结】A.汇编语言 第十六章100%加密与解密算法分析 100%B.直接定址表:标志是table,作用是建立一种key和value的对应关系。更接近于字典eg:table db '0123456789ABCDEF'mov bx,3mov ah,table[bx]。则ah中就送原创 2017-05-07 20:45:15 · 465 阅读 · 0 评论 -
170506 解密-ssctf签到wp 汇编-数据标号
1625-5 王子昂 总结《2017年5月6日》 【连续第217天总结】A.汇编语言 十六章ssctf签到100%B.同学给我发了ssctf的签到题的题目,看了一眼是解密:(Z2dRQGdRMWZxaDBvaHRqcHRfc3d7Z2ZoZ3MjfQ==)最后两个字符是=,这是base64编码的特征,遂进行解码,得到:ggQ@gQ1fqh0ohtjpt_原创 2017-05-07 00:50:04 · 2402 阅读 · 2 评论 -
170505 汇编-指令总结
1625-5 王子昂 总结《2017年5月5日》 【连续第216天总结】A. 汇编语言 15章 100%B. 本章主要讲述的是对int9中断例程的改编和安装,由于主要目的是反编译,暂且认为这里重要度较低,留到以后需要时再行查询研究。最后有一个总结,然后就进入16章了。指令系统总结数据传送指令mov,push,pop,pushf,popf,xchg等都是数据传送指令,这些原创 2017-05-06 00:53:50 · 393 阅读 · 0 评论 -
170504 汇编-外中断和键盘输入的处理
1625-5 王子昂 总结《2017年5月4日》 【连续第215天总结】A. 汇编语言 15章 20%B. CPU在计算机系统中,除了要执行指令、进行运算以外,还需要控制外部设备,例如鼠标、键盘等等那么就有两个问题:CPU如何监听外设的消息CPU从何处得到外设的数据PC系统的接口卡和主板上有各种接口芯片,芯片内部有若干寄存器,CPU将它们作为端口来访问因此,CPU通原创 2017-05-06 00:40:13 · 2936 阅读 · 0 评论 -
170502 汇编-CMOS和BCD码;pyqt-comboBox的多级联动
1625-5 王子昂 总结《2017年5月2日》 【连续第213天总结】A.汇编语言 14章B.shl和shr是逻辑移位指令。功能分别为将一个寄存器或内存单元的数据向左/右移若干位,然后将最后移出的一位写入CF中,并把最低位补0如果移动位数大于1,必须将移动位数放在cl中在CMOS芯片中,存放当前时间的格式为:秒分 时 日 月 年02 4 7 8原创 2017-05-02 20:49:05 · 804 阅读 · 5 评论 -
170501 汇编-CMOS芯片
1625-5 王子昂 总结《2017年4月29日》 【连续第210天总结】A.汇编语言 14章60%B.PC机中有一个CMOS RAM芯片,一般简称为CMOS。CMOS芯片包含一个实时钟和一个有128个存储单元的RAM存储器芯片靠电池供电,因此关机后时钟仍可计时时钟占用14个字节(0-0dh)来保存时间信息,其他保存系统配置信息,供系统启动时BIOS程序读取。B原创 2017-05-02 11:40:15 · 481 阅读 · 0 评论 -
170430 汇编-端口的原理
1625-5 王子昂 总结《2017年4月28日》 【连续第209天总结】A.汇编语言14章 20%B.CPU在操控各种存储器、外接设备的时候都把它们当做内存来用地址线、数据线和控制线来控制的,整体称为内存地址空间各种接口卡上的接口芯片、主板上的接口芯片和其他芯片对CPU来说都是一样的,在地址空间中分配一个地址来读写CPU可以直接读写3个地方的数据:内部的寄存器内存原创 2017-05-01 11:25:28 · 521 阅读 · 0 评论 -
170429 汇编-BIOS和DOS的中断例程
1625-5 王子昂 总结《2017年4月28日》 【连续第209天总结】A.汇编语言 第十三章100%B.int指令的格式为int n其中n为中断类型码,作用是引发中断过程BIOS和DOS也提供了一套中断例程。从操作系统的角度来看,DOS的中断例程就是操作系统向程序员提供的编程资源。而和硬件设备相关的DOS中断例程中,一般都调用了BIOS的中断例程安装原创 2017-04-30 11:27:21 · 1191 阅读 · 0 评论 -
170428 汇编-int指令
1625-5 王子昂 总结《2017年4月28日》 【连续第209天总结】A.汇编语言 第十三章60%B.int指令和iret指令的配合使用与call指令和ret指令的配合使用具有相似的思路。在中断过程中,当前的标志寄存器,CS和IP都要压栈,此时压入的CS和IP的内容分别是调用程序的段地址(可以看做是标号s的段地址)和int 后一条指令的偏移地址(即标号send的偏移地址)原创 2017-04-30 11:19:54 · 548 阅读 · 0 评论 -
170427 汇编-内中断的指令和设置
1625-5 王子昂 总结《2017年4月27日》 【连续第208天总结】A.汇编语言 第十二章100%B.CPU的中断过程为:取得中断类型码flag的值入栈设置flag的第八位TF和第九位IF的值为0CS的内容入栈IP的内容入栈从中断向量表中读取中断处理程序的入口地址,设置IP和CS返回中断的指令是iret,与ret类似,从栈中读出IP、CS的值送原创 2017-04-27 21:39:28 · 1206 阅读 · 0 评论 -
170425 汇编-实验11和内中断初识
1625-5 王子昂 总结《2017年4月25日》 【连续第206天总结】A.汇编语言 十一章B.实验11子程序:将包含任意字符,以0结尾的字符串中的小写字母改为大写字母以前通过使用and来无差别修改字母的程序,现在有了条件转移和大小写判断终于可以写一个判断程序了letterc:mov ch,0l:mov al,[si] ;通过8位寄存器al来定义数据单位为原创 2017-04-25 23:07:17 · 392 阅读 · 0 评论 -
170424 汇编-OF标志位的进一步理解
1625-5 王子昂 总结《2017年4月24日》 【连续第205天总结】A.汇编语言QT与JSB.做了几个检测点来巩固一下知识:检测点11.3补全程序,统计F000:0处32个字节中,大小在[32,128]的数据的个数mov ax,0f000hmov ds,axmov bx,0mob dx,0mov cx,32;循环次数s:mo原创 2017-04-24 21:19:19 · 1283 阅读 · 0 评论 -
170422 汇编-串传送和df标志位
1625-5 王子昂 总结《2017年4月22日》 【连续第203天总结】A.汇编语言B.movsb指令用于将ds:si指向的内容送入es:di中,然后将si和di+1/-1当需要处理字的时候,还有movsw指令,可以一次传送两个字节,然后将si和di+2/-2另外还有指令rep可以与他们配合eg: rep movsb意义:重复执行movsb,直到cx为0这样就原创 2017-04-23 11:49:56 · 795 阅读 · 0 评论 -
170421 汇编-方向标志位df
1625-5 王子昂 总结《2017年4月21日》 【连续第202天总结】A.汇编B.flag的第10位是DF,方向标志位。在串处理命令中,控制每次操作后si,di的增减df=0每次操作后si\di递增df=1每次操作后si\di递减串传送指令movsb等价于 es*16+di=ds*16+si若df=0则si++,di++若df=1则si--,di原创 2017-04-22 12:00:52 · 3075 阅读 · 0 评论 -
170420 汇编-其他条件转移指令
1625-5 王子昂 总结《2017年4月20日》 【连续第201天总结】A.汇编 第十一章90%B.检测比较结果的条件转移指令:转移指的是它能够修改IP;条件指的是它可以根据某种条件决定是否修改IP比如jcxz就是一个条件转移指令,检测cx中的值是否为0,决定是否转移至标号处除此以外,大多数条件转移指令都检测标志寄存器的相关标志位。它们通常和cmp指令相配合使用。原创 2017-04-21 00:30:15 · 455 阅读 · 0 评论 -
170509 汇编-断点
1625-5 王子昂 总结《2017年5月9日》 【连续第220天总结】A.加密与解密 OD断点100%B.消息断点:Windows本身是由消息驱动的,如果调试时没有合适的断点,可以尝试消息断点。消息断点使得当某个特定窗口函数接收到某个特定消息时程序中断当用户单机按钮、移动鼠标或向文本框中键入文字时,一条消息就会被发送给当前的窗体。所有发送的消息都有4个参数:窗口句柄、原创 2017-05-09 22:17:10 · 817 阅读 · 0 评论