HIT 计统实验2 二进制炸弹(gdb破解版) 拆弹过程
CSAPP 实验2是一个很好玩的实验,网上有很多参考资源写的都很好,本文增加了一些具体细节。
想要我的炸弹可以私信我。 还得看形式语言 , 炸弹6 7 有时间再拆
第1章 实验基本信息
1.1 实验目的
- 熟练掌握计算机系统的ISA指令系统与寻址方式
- 熟练掌握Linux下调试器的反汇编调试跟踪分析机器语言的方法
- 增强对程序机器级表示、汇编语言、调试器和逆向工程等的理解
1.2 实验环境与工具
1.2.1 硬件环境
Intel 10850H x86_64
1.2.2 软件环境
Ubuntu 20.04
1.2.3 开发工具
Vim、gdb、visual studio
1.3 实验预习
认真学习gdb的用法与汇编语言相关知识
了解一些cmd指令,比如看计算器 cmd+calc
cmd命令以及用法大全_cmd命令操作_qq_38196334的博客-CSDN博客
第2章 实验环境建立
2.1 Ubuntu下CodeBlocks反汇编(10分)
CodeBlocks运行hello.c。反汇编查看printf函数的实现。
要求:C、ASM、内存(显示hello等内容)、堆栈(call printf前)、寄存器同时在一个窗口。
注意:如果想调试的话必须建立工程,血的教训!!!!
测试代码:
#include<stdio.h>
int m = 0;int r = 3;int sum(int x1,int x2,int x3,int x4, int x5,int x6,int x7,int x8){return x1+x2+x3+x4+x5+x6+x7+x8;
}int main(){m = m/r;m = sum(1,2,3,4,5,6,7,8);printf("%d\n",m);const char* a= "Hello-2021112114-lyx";printf("Hello-202111-xiaoyu");
}
进行调试:
查看变量m的值:
如图所示(橙色荧光标注),由于数据在计算机中采用小端存储,所以是0000000..24(十六进制)
转换成十进制就是36
查看字符串2021112114-lyx:
方法1:字符串在字符串表里,你这个是字符串常量,它的值是个const char*,你如果想看可以用一个const char*指向它然后查一下这个地址
方法2:通过rip查找,也就是查看PC的值,然后去访问那个地址,把字节开到最大就能找到字符串。
将rip的地址输入,把字节调到最大就能找到,这里显示的是printf中的参数,不是const char *的参数,一个是字符库一个是位于数据区和代码区
本来想拿edb看虚拟地址,但是有保护机制,每次运行的虚拟地址不一样。
2.2 Ubuntu下EDB运行环境建立(10分)
用EDB调试hello.c的执行文件,截图,要求同2.1
gcc hello.c
edb --run a.out
点完run 以后一直step into 不要问为什么QWQ
第3章 各阶段炸弹破解与分析
前几阶段的密码:防止笔误
I was trying to give Tina Fey more material.
0 1 1 2 3 5
3 g 207
14 7
5 115
每阶段30分,密码10分,分析20分,总分不超过80分
汇编器将汇编代码翻译成二进制指令
cd 到所在文件夹
gdb bomb
b phase_1 #设置断点
run
ni 单步运行一句 ni 2单步运行两句
layout asm 调试查看方便一些
objdump -d ./bomb > bomb.s
翻译成汇编代码
3.1 阶段1的破解与分析
密码如下:I was trying to give Tina Fey more material.(注意标点).
破解过程:
调用了string not equal函数,如果不相等,就跳转到炸弹爆炸函数,推测比较的字符串在寄存器里,此外可以看到两个push将参数入栈,是为strings_not_equal()准备的。根据函数名,可以知道这个函数是在比较两个字符串是否相等,所以push的很有可能就是一个答案字符串所在地址(如果是程序自带的变量包括字符串等都会在.rodata部分,所以压栈时会直接压入对应地址,另一个来自标准输入的字符串地址。所以利用gdb查看输入和比较的字符串。
3.2 阶段2的破解与分析
密码如下:0 1 1 2 3 5
破解过程:光看汇编代码就能破解。
根据汇编代码推测,第一个参数的位置在$rbp-0x30(位置) 第二个参数在$rbp-0x2c(44)的位置根据规律依次减少四,存入参数地址。首先判断第一个和第二个数是不是0和1,ebx相当于计数器i记录循环的标志,-0x30(%rbp,%rax,4)相当于数组是输入的参数以偏移量的形式展示。$rdx和$ebx是相等的,ecx比eax少1,显示不同顺序的参数,由add -0x30(%rbp,%rcx,4),%eax相当于一个斐波那契数列,递归的起点是0 1,递推式是fib(n) = fib(n-1)+fib(n-2)
0000000000401414 <phase_2>:401414: 55 push %rbp401415: 48 89 e5 mov %rsp,%rbp401418: 53 push %rbx401419: 48 83 ec 28 sub $0x28,%rsp40141d: 48 8d 75 d0 lea -0x30(%rbp),%rsi401421: e8 c8 05 00 00 call 4019ee <read_six_numbers>401426: 83 7d d0 00 cmpl $0x0,-0x30(%rbp) //第一个数是不是040142a: 75 06 jne 401432 <phase_2+0x1e> //不相等或者不为040142c: 83 7d d4 01 cmpl $0x1,-0x2c(%rbp) //同理401430: 74 05 je 401437 <phase_2+0x23> //如果第二个参数不是1引爆炸弹401432: e8 95 05 00 00 call 4019cc <explode_bomb>401437: bb 02 00 00 00 mov $0x2,%ebx // i = 240143c: eb 08 jmp 401446 <phase_2+0x32>40143e: e8 89 05 00 00 call 4019cc <explode_bomb>401443: 83 c3 01 add $0x1,%ebx //i = i+1=3 i=4 i = 5401446: 83 fb 05 cmp $0x5,%ebx if(i!=5)401449: 7f 1e jg 401469 <phase_2+0x55> //我们的目标是安全循环出来40144b: 48 63 d3 movslq %ebx,%rdx//rdx = 2 rdx = 340144e: 8d 4b fe lea -0x2(%rbx),%ecx//ecx = 0 ecx = 1 ecx = 2 ecx = 3401451: 48 63 c9 movslq %ecx,%rcx401454: 8d 43 ff lea -0x1(%rbx),%eax//eax = 1 eax = 2 eax = 3 ecx = 4401457: 48 98 cltq 401459: 8b 44 85 d0 mov -0x30(%rbp,%rax,4),%eax//传入第二个参数 传入第三个参数40145d: 03 44 8d d0 add -0x30(%rbp,%rcx,4),%eax//a2'=a1+a2=1 a3'=a2+a3=1+a3 a4'=a3+a4 a5=a4+a5401461: 39 44 95 d0 cmp %eax,-0x30(%rbp,%rdx,4)//a3=a2'=1? a4=a3'=a3+1? a5 = a4'? a6=a5'=a4'+a5=2(a3+1)+a5?401465: 74 dc je 401443 <phase_2+0x2f>401467: eb d5 jmp 40143e <phase_2+0x2a>401469: 48 83 c4 28 add $0x28,%rsp40146d: 5b pop %rbx40146e: 5d pop %rbp40146f: c3 ret
3.3 阶段3的破解与分析
密码如下:3 g 207(答案不唯一)
破解过程:
gdb bomb
b phase_
run sol.txt
- 首先当然还是先观察phase_3的汇编代码,看是不是调用了有关输入的参数的函数:在sscanf函数调用后检查$eax,因为sscanf在参数匹配成功后会将匹配成功的参数的个数放入eax中返回,所以检查eax是否大于2,即至少应匹配三个参数才能过第一个爆炸点.
- 确定输入字符串的格式: %d %c %d
推断出$ rbp - 0x4存的是第一参数,并且必须小于7,这里就以3为例
x/x 地址 #查看地址存的数据第一个x代表查看内存内容 第二个x代表以十六进制的形式显示
猜测:判断第三个参数和0xcf也就是207是否相等
猜测rbp-0x9位置存放的是字符,再根据acii码对比可知103--g,第二个是比较ACII码
3.4 阶段4的破解与分析
密码如下:14 7
破解过程:
gdb bomb
b phase_4
r sol.txt #推荐把前几关的密码写入文件中
ni
layout asm
x/s 地址 #查看字符串形式的输入格式
破解过程相信大家已经轻车熟路了,首先查看输入的形式,输入两个数字,如果输入的数字个数不是2,就会引爆炸弹。
根据寄存器的使用规则,arg1作为函数的第三个输入参数,他的存放地址由寄存器rdx来确定,对于第四个参数他的寄存地址由rcx确定,接下来我们要根据代码确定arg1和arg2的具体数值。
1.测试数据 99 88; 通过测试发现$rbp-0x4储存的是第一参数,下方的test是判断是不是等于0的操作。
2.接着单步运行发现不仅要大于0,而且还不能大于0xe也就是15
3.紧接着,执行了三条赋值语句,可以推测三条mov指令是为fun4准备参数
4.关于fun4如何执行我们之后再看,我们先看fun4执行完之后的代码
根据寄存器的使用规则,函数返回值必须放在rax中,所以返回值必须为7,否则会引爆炸弹。
第二个cmpl函数cmpl -x08(rbp),用来比较agr2和7的大小,所以可以确定第二个输入参数为7,我们进一步缩小范围,第一个数小于等于14第二个数是7
5.下面我们来分析一下函数fun4的代码:
测试数据
(gdb) i r
在调用函数之前查看寄存器 rax 存放第一个值 rdx =14 rsi = 0 rdi存放函数的第一个参数,如果相等那么mov $0x0,%eax返回值是0不是7,就不符合要求,所以一定是在函数中跳转结束的。
看代码:
00000000004015be <func4>: (edx=14 ecx =7 esi=0)4015be: 55 push %rbp4015bf: 48 89 e5 mov %rsp,%rbp4015c2: 89 d1 mov %edx,%ecx #此时ecx = edx=144015c4: 29 f1 sub %esi,%ecx #ecx = ecx = 144015c6: 89 c8 mov %ecx,%eax #eax = ecx = 144015c8: c1 e8 1f shr $0x1f,%eax #逻辑右移eax >> 0x1f(31)逻辑移位 相当于左移一位 此时eax应该是0 因为不能保证精度4015cb: 01 c8 add %ecx,%eax #eax = eax+ecx =144015cd: d1 f8 sar %eax #移位的位数等于1时,可以省略 对eax进行算数算数右移一位的操作,可以看成这个数除以2 eax = 74015cf: 01 f0 add %esi,%eax #eax = 0+eax = 7 4015d1: 39 f8 cmp %edi,%eax #7和第一个参数对比 4015d3: 7f 09 jg 4015de <func4+0x20>#如果比第二个参数大话,edi[7,14]4015d5: 7c 13 jl 4015ea <func4+0x2c>#如果小的话4015d7: b8 00 00 00 00 mov $0x0,%eax4015dc: 5d pop %rbp4015dd: c3 ret 4015de: 8d 50 ff lea -0x1(%rax),%edx4015e1: e8 d8 ff ff ff call 4015be <func4>4015e6: 01 c0 add %eax,%eax4015e8: eb f2 jmp 4015dc <func4+0x1e>4015ea: 8d 70 01 lea 0x1(%rax),%esi4015ed: e8 cc ff ff ff call 4015be <func4>4015f2: 8d 44 00 01 lea 0x1(%rax,%rax,1),%eax4015f6: eb e4 jmp 4015dc <func4+0x1e>
第一轮调用:如果是jg eax = 7 ecx = 14 edx = 14 让rax+1
4015ea: 8d 70 01 lea 0x1(%rax),%esi4015ed: e8 cc ff ff ff call 4015be <func4>
只有函数返回值为1的时候递归才结束,此时返回值一定是eax = 2*0+1 = 1
要想让eax= 7只有调用7次,也就是eax增加七次所以7+7 = 14或者7-7=0;又因为前面的限制条件所以第一个参数不能为0,所以密码只能是14 7;
ecx = edx = 6 eax = edx = 6 eax = 0 eax = 6 eax = 3 eax = 3
3.5 阶段5的破解与分析
密码如下:5 115
破解过程:
老规矩我们先分析一下汇编代码
确定参数地址和输入形式
and一个都是1的数字,没有啥作用,作用主要是生成标志位判断是不是0。指令and $0xf, %eax取得第一个参数的后四位,且要求第一个参数不能是15,edx为计数器,ecx为累加,根据当次循环eax的值去寻址mov 0x403200(,%rax,4),%eax取到数组中的下一个不连续的元素,结束循环的条件是eax取到15时edx计数到15次,第二个参数与ecx相等。查看地址 0x4031e0(,%rax,4)的元素,观察数组有唯一确定的跳转表将这些值累加得115 其实直接最后看看ecx就行
3-12-7-11-4-13-6-9-4-8-0-10-1-2-14-6-15
3-12-7-11-4-13-6-9-4-8-0-10-1-2-14-6-15
最后和ecx比较是不是相等
参考:
CSAPP第二次实验 bomb二进制炸弹的破解_FatFat-Whale的博客-CSDN博客
汇编学习记录-两种架构汇编指令简单总结_此号已废20的博客-CSDN博客
B站九曲阑干
哈工大各位大佬
相关文章:
![](https://img-blog.csdnimg.cn/7cf18a7314cb4d88a0ec55cfc2143d44.png)
HIT 计统实验2 二进制炸弹(gdb破解版) 拆弹过程
CSAPP 实验2是一个很好玩的实验,网上有很多参考资源写的都很好,本文增加了一些具体细节。 想要我的炸弹可以私信我。 还得看形式语言 , 炸弹6 7 有时间再拆 第1章 实验基本信息 1.1 实验目的 熟练掌握计算机系统的ISA指令系统与寻址方式熟练掌握Linu…...
![](https://img-blog.csdnimg.cn/0c9a604a8b604ccfa909dfcb43cd6a20.png)
echart 半环渐变仪表盘
实现效果如图: op配置项代码: let Chart this.$echarts.init(document.getElementById(dashboard-1));let option {// backgroundColor: #040d2e,series: [// 中间灰色轴线{type: gauge,radius: 150%, // 位置center: [50%, 90%],startAngle: 180,end…...
![](https://img-blog.csdnimg.cn/img_convert/39d10506f56b4af0386795b69caff59e.png)
【springboot】自动加载分析
文章目录问题SpringBootApplication注解AutoConfigurationPackages.Registrar类AutoConfigurationImportSelector类springboot如何加载其他的starter总结问题 为什么我们在使用springboot的时候,只需要在maven中导入starter就能够使用呢?这里来分析一下…...
![](https://img-blog.csdnimg.cn/img_convert/1e8a4b9380f47b516f4f6df206408ad7.png)
ChatGPT批量翻译-ChatGPT批量生成多国语言
ChatGPT翻译的准吗 ChatGPT是一种基于Transformer架构的自然语言处理技术,其翻译准确性取决于所训练的模型和数据集的质量。在特定的语料库和训练数据下,ChatGPT可以实现一定程度的准确翻译。但是,与人工翻译相比,ChatGPT的翻译质…...
![](https://img-blog.csdnimg.cn/767a4f9e043844ca941ec23f433c6a4a.png)
Symble
ES6引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型,是一种类似于字符串的数据类型。 Symbol特点 Symbol 的值是唯一的,用来解决命名冲突的问题 Symbol值不能与其他数据进行运算 Symbol定义的对…...
![](https://img-blog.csdnimg.cn/img_convert/065ebd7c63dbd859419b5d22cffaa6cb.jpeg)
能在家里赚钱的工作有哪些?适合普通人的兼职项目
当下对于普通人而言,想在社会上找到一份舒心安逸的工作很难,特别是在薪酬待遇这方面,更是低得让人心寒。那么,如果能有一份在家就可以做的事情,而且是收入也不少,那将是很多普通人的最佳选择。在这里&#…...
![](https://www.ngui.cc/images/no-images.jpg)
创建SaaS产品帮助中心的关键步骤
帮助中心是一款SaaS产品必不可少的一部分,为了帮助用户更好的解决产品相关问题,提高新用户的使用体验,并且引导用户更好的使用产品,那么应该怎样制作帮助中心呢,每个产品帮助中心都需要有自己的风格,根据产…...
![](https://img-blog.csdnimg.cn/131b528a56d84b6390c6cffccf80e3e8.png)
高频算法:Leetcode53 最大子数组和
今天讲的是Leetcode第53题,最大子数组和 首先观察题目,题目需要我们找出具有最大和的连续子数组,直接拿题目中的示例来做一个演示,找一找什么规律下的连续子数组才能得到最大的和 先从-2开始,-2 1 -1 此时我们的和…...
![](https://img-blog.csdnimg.cn/004e2c87071f4c99bc37de2fab6d6584.jpeg)
如何编写接口自动化测试框架、
编写接口自动化测试框架需要注意以下几点: 接口选择:首先确定需要测试的接口,包括请求方式、URL、参数、返回值等信息。 框架设计:设计一个灵活的框架,可以根据接口类型(RESTful API、SOAP API等ÿ…...
![](https://img-blog.csdnimg.cn/f2a50a77f25b41f788539d71d0ec87f3.png)
【Java面试八股文宝典之RabbitMQ篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day17
大家好,我是陶然同学,软件工程大三即将实习。认识我的朋友们知道,我是科班出身,学的还行,但是对面试掌握不够,所以我将用这100多天更新Java面试题🙃🙃。 不敢苟同,相信大…...
![](https://img-blog.csdnimg.cn/c059c495a2024a77b7f6611b6933e886.png)
ESP32开发(1)----Espressif-IDE开发环境配置
Espressif-IDE开发环境配置前言一、ESP32-WROOM-32介绍二、IDE环境搭建三、建立第一个项目总结前言 最近得到一块ESP32-WROOM-32的开发板,没有原理图,但板子走线比较简单,看着板子上的布线大致猜一猜连接,然后试玩了一下…...
![](https://img-blog.csdnimg.cn/8cad93ebcd414dd79ca98ac2ab8631a9.png)
MyBatisPlus标准数据层开发
MyBatisPlus标准数据层开发2,标准数据层开发2.1 标准CRUD使用2.2 新增2.3 删除2.4 修改2.5 根据ID查询2.6 查询所有2.7 Lombok概念使用步骤步骤1:添加lombok依赖步骤2:安装Lombok的插件步骤3:模型类上添加注解2.8 分页功能步骤1:调用方法传入参数获取返回值步骤2:设…...
![](https://img-blog.csdnimg.cn/485e23fe171340ac8aa6484295c452bf.png)
C/C++每日一练(20230412)
目录 1. 二维数组找最值 🌟🌟 2. 排序 🌟 3. 二叉树展开为链表 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 二维…...
![](https://img-blog.csdnimg.cn/2199f0a8690c45a98ea7c47b184920a8.png)
Leetcode.1379 找出克隆二叉树中的相同节点
题目链接 Leetcode.1379 找出克隆二叉树中的相同节点 easy 题目描述 给你两棵二叉树,原始树 original和克隆树 cloned,以及一个位于原始树 original中的目标节点 target。 其中,克隆树 cloned是原始树 original的一个 副本 。 请找出在树 …...
![](https://www.ngui.cc/images/no-images.jpg)
2022年团体程序设计天梯赛-总决赛
目录 一、L1-1 今天我要赢 二、L1-2 种钻石 三、L1-3 谁能进图书馆 四、L1-4 拯救外星人 五、L1-5 试试手气 六、L1-6 斯德哥尔摩火车上的题 七、L1-7 机工士姆斯塔迪奥 八、L1-8 静静的推荐 九、L2-1 插松枝 十、L2-2 老板的作息表 十一、L2-3 龙龙送外卖 十二、L…...
![](https://img-blog.csdnimg.cn/img_convert/c4f14f12e16f11aa4f83ad25ab72f3f9.png)
大数据技术之Sqoop——SQL to Hadoop
一、简介sqoop (sql to hadoop)是一款开源的工具,主要用于在 Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MSQL,Oracle,Post…...
![](https://www.ngui.cc/images/no-images.jpg)
Java议题
序号议题 解释MyBatis官网1mapper文件中什么时候使用 # 什么时候必须用 $ 1、关键字作为参数,使用"$",两边不加""。 2、非关键字作为参数,使用"#"防注入。 其他情况优先使用"#" 2主键回填࿰…...
![](https://img-blog.csdnimg.cn/d9b446fa0fbf4f06aef94899edb9e2ea.png)
【阅读论文】USAD:多变量时间序列上的无监督异常检测
USAD : UnSupervised Anomaly Detection on Multivariate Time Series 摘要 IT系统的自动监控是Orange目前面临的挑战。考虑到其IT运营所达到的规模和复杂性,随着时间的推移,用于推断正常和异常行为的测量所需的传感器数量急剧增加,使得传统…...
![](https://www.ngui.cc/images/no-images.jpg)
Java多线程:ReentrantLock中的方法
公平锁与非公平锁 ReentrantLock有一个很大的特点,就是可以指定锁是公平锁还是非公平锁,公平锁表示线程获取锁的顺序是按照线程排队的顺序来分配的,而非公平锁就是一种获取锁的抢占机制,是随机获得锁的,先来的未必就一…...
![](https://img-blog.csdnimg.cn/1ca98012e7874b76bace60c115db1052.png)
RabbitMQ初识快速入门
RabbitMQ初识&快速入门1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯1.2.技术对比:2.快速入门2.1.安装RabbitMQ2.1.1 下载镜像2.1.2 安装MQ2.2.RabbitMQ消息模型2.3.导入Demo工程2.4.入门案例2.4.1.publisher实现2.4.2.consumer实现2.5.总结1.初识MQ…...
![](https://img-blog.csdnimg.cn/c7e69890c893422e8f72bbf29263212f.png)
由浅入深了解HashMap源码
由经典面试题引入,讲解一下HashMap的底层数据结构?这个面试题你当然可以只答,HashMap底层的数据结构是由(数组链表红黑树)实现的,但是显然面试官不太满意这个答案,毕竟这里有一个坑需要你去填&a…...
![](https://img-blog.csdnimg.cn/img_convert/6281ee26796febb36ae5c3114915e435.png)
P5318 【深基18.例3】查找文献
题目描述 小K 喜欢翻看洛谷博客获取知识。每篇文章可能会有若干个(也有可能没有)参考文献的链接指向别的博客文章。小K 求知欲旺盛,如果他看了某篇文章,那么他一定会去看这篇文章的参考文献(如果他之前已经看过这篇参考…...
![](https://www.ngui.cc/images/no-images.jpg)
Error caught was: No module named ‘triton‘
虽然报错但是不影响程序运行: A matching Triton is not available, some optimizations will not be enabled. Error caught was: No module named triton解决: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple triton2.0.0.dev20221120...
![](https://www.ngui.cc/images/no-images.jpg)
Ruby设计-开发日志
Log 1 产品 Product 1.1 创建 Product 创建名为 project 的 rails 应用 rails new project创建 Product 模型 rails generate scaffold Product title:string description:text image_url:string price:decimal这会生成一个 migration ,我们需要进一步修改这个…...
![](https://www.ngui.cc/images/no-images.jpg)
SpringBoot 调用外部接口的三种方式
方式一:使用原始httpClient请求 /** description get方式获取入参,插入数据并发起流程* params documentId* return String*/ RequestMapping("/submit/{documentId}") public String submit1(PathVariable String documentId) throws ParseE…...
![](https://img-blog.csdnimg.cn/e19633dfb56d4a74a67ee97d0152c213.png)
C 中的结构体
C 中的结构体 C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。 结构体中的数据成员可以是基本数据类型(如 int、float、char 等),也可以…...
![](https://www.ngui.cc/images/no-images.jpg)
nodejs安装教程
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,可以用于在服务器端运行 JavaScript 代码。以下是 Node.js 的安装教程: 步骤 1:下载 Node.js 访问 Node.js 的官方网站 https://nodejs.org/,进入官方下载页面。 在下载页…...
![](https://img-blog.csdnimg.cn/d8efefa125294b5c801780693f19ef23.png)
【华为OD机试】1029 - 整数与IP地址间的转换
文章目录一、题目🔸题目描述🔸输入输出🔸样例1二、代码参考作者:KJ.JK🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x…...
![](https://img-blog.csdnimg.cn/0345e8de46694dc8a249c6a223fcc8a6.png)
【FPGA实验1】FPGA点灯工程师养成记
对于FPGA几个与LED相关的实验(包括按键点灯、流水灯、呼吸灯等)的记录,方便日后查看。这世界上就又多了一个FPGA点灯工程师了😏 成为一个FPGA点灯工程师分三步:一、按键点灯1、按键点灯程序2、硬件实现二、流水灯1、流…...
![](https://img-blog.csdnimg.cn/c6d713679f8c4c51a2ab81041ed22b7e.png)
操作系统论文导读(三):Stack-based scheduling of realtime processes基于堆栈的实时进程调度
目录 一、论文核心思想: 二、基本的相关条件 作业运行的条件: 作业抢占其他作业的条件: 三、基本的相关定义 四、基本的相关调度 五、基本的相关调度 六、堆栈资源共享 七、与PCP的比较 一、论文核心思想: -引入了一个抢占优…...
![](/images/no-images.jpg)
做其他国家语言网站/什么平台可以做引流推广
一、最小公倍数(LCM) 最小公倍数输入的两个数之积除于它们的最大公约数(a*b/最大公约数),关键是求出最大公约数; 二、最大公约数(GCD) 1.辗转相除法/欧几里得算法 定义ÿ…...
![](http://s3.51cto.com/wyfs02/M01/7E/12/wKioL1b3P1iBIe8lAAFy6NRcboY044.png)
用爬虫做网站/百度托管运营哪家好
网友问答之:AD、DNS转发器、WINS不能自动启动1、企业网络中,将DNS与Active Directory集成在一起即可,一般建议配置2台Active Directory服务器。络腮胡2014/11/222:10:53王老师你好,请问对于一主一备的域控制器可以两台都虚拟化吗&…...
![](https://img-blog.csdnimg.cn/20201124193237533.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L015cm9uQ2hhbQ==,size_16,color_FFFFFF,t_70)
开不锈钢公司怎么做网站/浙江网站seo
目录 1、什么是事务? 2、事务的几个特性(ACID) 2.1、原子性(Atomicity) 2.2、一致性(Consistency) 2.3、隔离性(Isolation) 2.4、持久性(Durability) 3、MySQL中事务操作 3.1、隐式事务 3.2、显式事务 2.3、savepoint关键字 2.4、…...
![](https://img-blog.csdnimg.cn/img_convert/be29696b2c4c4fbc008b60580781b7f6.png)
网站路径怎么做/做推广哪个平台效果好
一、分类 中国速冻食品根据产品种类可大致分为速冻调制食品(可细分为速冻鱼糜制品、速冻肉制品两类)、速冻面米制品、速冻其他食品三类。其中,速冻面米制品主要包括速冻水饺、汤圆、包子、油条、芝麻球等,是速冻食品中市场规模最…...
![](/images/no-images.jpg)
网站建设上海公司/东莞网站营销
最近把自己的工作平台都迁到ubuntu上了,所以要把环境搭起来,首先要安装的是Boost库。 Boost库可以说是STL里非常好用的一个库。1、获得Boost库直接在命令行中输入:apt-get install libboost-dev libboost-dbg libboost-doc bcp libboost-*&am…...
![](/images/no-images.jpg)
企业的网站建设文章/关键词挖掘工具免费
高考考生即将迎来填报志愿环节,也是教育骗局最猖獗之时。个人信息泄露,早就不是新鲜事。但值得关注的是,随着移动互联技术的快速发展,信息泄露已呈全方位态势。 日前,广东省教育厅发布《广东省普通高等学校一览表》&am…...