摘要: 数据寄存器Ax,cx,dx,bxA1字节(3BH)=8位Ax=ABCDHAX分为高八位(AH),低八位(AL)nop空指令EIP指向cpu所取得指令Mov ax,19Mov ah,70Add ax,bx,Add al,1Sub ax,1物理地址存储器里唯一的字节地址,8086 16位cpu,20位地址总线物理地址=段地址*10h+偏移Cs(内存分的段):1000H,IP:0022物理地址:1000... 阅读全文
posted @ 2018-09-25 12:59 kailicard 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 算术运算符:+,-,*,/字符运算符 :+(字符串连接),+=(字符串连接复合);布尔运算符:!,&&,||;一元操作符:++,—,+,-;关系比较运算符: ,=,=,!=,==,====,!==;按位运算符: ~,&,,|,^,>,>>>赋值运算符:=,复合赋值(+=,-=,*=,/=)复合按位赋值(~=,&=,|=,^=,>=,>>>=)对象操作符:.(属性访问),[](属性或数组),New(... 阅读全文
posted @ 2018-09-19 21:38 kailicard 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。时间复杂度最优时间复杂度:O(n) (升序排列,序列已经处于升序状态)最坏时间复杂度:O(n2)稳定性:稳定def insert_so... 阅读全文
posted @ 2018-08-19 17:18 kailicard 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 选择排序(select_sort)是一个基础排序,它主要通过查找已给序列中的元素的最大或者最小元素,然后将其放在序列的起始位置或者结束位置,并通过多次这样的循环完成对已知序列的排序,在我们对n个元素进行操作时,我们至少需要n-1次。def select_sort(list): n=len(list) #进行n-1次操作 for i in range(n-1): mi... 阅读全文
posted @ 2018-08-19 16:42 kailicard 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序是一种基础排序算法,在python中,我们利用列表的的方式来完成,它对列表中的元素进行重复的遍历,在遍历的同时进行比较,如果两个数没有按照我们规定的顺序进行排列,就按照我们预先设定好的是顺序或者逆序输出,类似于烧开水时的气泡,主要操作如下:比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大... 阅读全文
posted @ 2018-08-19 09:06 kailicard 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 书接上文,双端队列区别于单队列为:双端队列可以对队列头和尾部同时进行操作,单队列不行#coding:utf-8class DoubleQueue(object): def __init__(self): self.list=[] def empty(self): return self.list==[] def queue_front(self,ite... 阅读全文
posted @ 2018-08-18 21:28 kailicard 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 队列概念队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的(First In First Out)的线性表,简称FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!假设队列是q=(a1,a2,……,an),那么a1就是队头元素,而an是队尾元素。这样我们就可以删除时,总是从a1开始,而插入时,总是在队列最后。这也比较符... 阅读全文
posted @ 2018-08-18 20:57 kailicard 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 栈栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。由于栈数据结构只允许在一端进行操作,因而按照后进先出的原理运作。附上完整代码:cla... 阅读全文
posted @ 2018-08-18 20:25 kailicard 阅读(204) 评论(0) 推荐(0) 编辑
摘要: class SingleNode(object): """单链表的结点""" def __init__(self,item): # _item存放数据元素 self.item = item # _next是下一个节点的标识 self.next = Noneclass SingleLinkList(object): def _... 阅读全文
posted @ 2018-08-07 22:04 kailicard 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 单链表结构简单,组成为节点节点实现方法我们采用类进行封装def __init__(self,item): self.item=item self.next=None在这里我们实现对链表的操作时可以参照列表的操作Empty()检查是否为空Length()检查长度Travel()遍历Add(),insert(),append(0实现添加,add对头部操作,insert()指定位置,appe... 阅读全文
posted @ 2018-08-06 22:20 kailicard 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 安装binutils:git clone https://github.com/Gallopsled/pwntools-binutilssudo apt-get install software-properties-commonsudo apt-add-repository ppa:pwntools/binutilssudo apt-get updatesudo apt-get install ... 阅读全文
posted @ 2018-07-19 11:03 kailicard 阅读(1642) 评论(0) 推荐(0) 编辑
摘要: gdb aslr -- 显示/设置 gdb 的 ASLR asmsearch -- Search for ASM instructions in memory asmsearch "int 0x80" asmsearch "add esp, ?" libc assemble -- On the fl 阅读全文
posted @ 2018-07-19 10:49 kailicard 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 现在我们使用 readelf 命令来查看 elfDome.out 的文件头readelf -l elfDemo.out使用 readelf 来查看程序头:readelf -S elfDemo.o使用 readelf 命令查看目标文件中完整的段:可以使用 readelf 读取这两个表:偏移表加字符$ readelf -x .strtab elfDemo.oreadelf -s elfDemo.o符号... 阅读全文
posted @ 2018-07-19 05:47 kailicard 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 在linux下进行调试时容易出现权限不够的情况;此时解决办法就是chmod 777+文件名提升权限,以实验吧debug为例,给出了简单的32elf文件,我在查看一些资料以后发现,我需要在main函数处进行设置断点,于是使用break __libc_start_main设置断点,然后在将文件跑起来 r,通过ida分析在0x804849b处会进行打印flag操作,接下来在push处进行设置set$ei... 阅读全文
posted @ 2018-07-14 12:46 kailicard 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 之前找资料废了很大功夫,深知不易,所以把自己整理的一些资源放出来吧。春秋资源https://pan.baidu.com/s/1Ca4eSbk-AACVxryTZ7uQCg前端资源https://pan.baidu.com/s/1oZEgy7SkUnVqbmCo4ihRdAc#https://pan.baidu.com/s/1anQ9LNdEi8a1XtkmZQXShg汇编和一些破解的学习资料htt... 阅读全文
posted @ 2018-07-07 22:46 kailicard 阅读(87) 评论(0) 推荐(0) 编辑