Android逆向?qū)崙?zhàn):非ROOT環(huán)境下Frida重打包注入完整指南
1. 項目概述為什么我們需要在非ROOT環(huán)境下折騰Frida如果你接觸過移動安全或者逆向工程Frida這個名字對你來說一定不陌生。它就像一把瑞士軍刀能讓你在運行時動態(tài)地注入JavaScript代碼去Hook函數(shù)、修改邏輯、分析數(shù)據(jù)流幾乎是逆向分析師的“標配”。但一提到Frida很多人下意識就會想到一個前提ROOT。無論是Android的Superuser權(quán)限還是iOS的越獄似乎沒有最高權(quán)限Frida就寸步難行。然而現(xiàn)實情況往往更復雜。你手頭的測試機可能是公司配發(fā)的、無法獲取ROOT權(quán)限的工作手機或者你面對的是一個加固嚴密、對ROOT環(huán)境檢測極其敏感的金融類App在ROOT環(huán)境下它根本不會運行又或者你只是想進行一些基礎的、非侵入性的動態(tài)分析不希望大動干戈去修改系統(tǒng)。這時候“非ROOT環(huán)境下使用Frida”就不再是一個可有可無的技巧而是一個必須掌握的實戰(zhàn)能力。簡單來說這個項目的核心目標就是在不獲取設備最高權(quán)限ROOT的前提下成功將Frida注入到目標Android應用中并建立起穩(wěn)定的調(diào)試通道。這不僅僅是“能不能用”的問題更是關乎測試流程的便捷性、對抗環(huán)境檢測的隱蔽性以及分析場景的普適性。接下來我會結(jié)合我踩過的無數(shù)個坑把這件事從頭到尾、掰開揉碎了講清楚。2. 核心思路與方案選型繞過ROOT的幾種“野路子”想在非ROOT環(huán)境下運行Frida核心矛盾在于Frida的常規(guī)工作模式frida-server需要在設備后臺運行一個高權(quán)限的守護進程這顯然需要ROOT。那么思路就必須轉(zhuǎn)向如何在不依賴frida-server的情況下讓Frida的代碼在目標進程里“活”起來。目前主流且經(jīng)過實戰(zhàn)檢驗的思路主要有三種每種都有其特定的適用場景和優(yōu)缺點。2.1 方案一重打包注入Repackaging這是最經(jīng)典、最穩(wěn)定的非ROOT方案沒有之一。其原理非常直接你不是不讓我在運行時注入嗎那我就在應用安裝之前把Frida的“種子”提前種進去。具體操作流程如下反編譯目標APK使用apktool等工具將APK解包成smali代碼和資源文件。注入Frida GadgetFrida Gadget是一個動態(tài)鏈接庫.so文件它是Frida的“輕量級運行時”。我們需要把這個庫文件放到APK的lib/目錄下并修改應用的AndroidManifest.xml或smali代碼確保應用一啟動就自動加載這個庫。重新打包并簽名將修改后的文件重新打包成APK并使用一個調(diào)試密鑰debug keystore或自簽名證書對其進行簽名。安裝與運行將重打包后的APK安裝到設備上。當應用啟動時Frida Gadget會自動加載并監(jiān)聽一個指定的端口或Unix Socket等待來自frida命令行工具的連接。為什么選擇這個方案穩(wěn)定性極高一旦注入成功Frida Gadget就成了應用的一部分只要應用能啟動Frida就能工作幾乎不受系統(tǒng)環(huán)境影響。功能完整支持Frida絕大部分核心功能包括JavaScript注入、RPC調(diào)用等。對抗檢測因為是“內(nèi)置”的所以對于一些只檢測運行時環(huán)境的ROOT檢測手段有一定隱蔽性。它的致命缺點是什么步驟繁瑣每個目標APK都需要單獨處理一次反編譯、注入、打包、簽名的流程。簽名失效重打包后應用的簽名變了。這意味著你無法覆蓋安裝原版應用也無法使用任何依賴原簽名的功能比如微信登錄、某些支付SDK??赡苡|發(fā)加固如果目標APK本身有強力的殼加固反編譯這一步就可能失敗或者注入的代碼被殼識別并清除。注意重打包涉及修改他人應用務必僅在你有合法權(quán)限測試的應用上操作例如自己開發(fā)的應用、公司內(nèi)部測試包或明確授權(quán)測試的應用嚴格遵守法律法規(guī)。2.2 方案二動態(tài)加載注入Runtime Load這個方案可以看作是方案一的“運行時變種”它試圖解決重打包需要修改安裝包的問題。核心思路是找一個已經(jīng)安裝在設備上的、有調(diào)試權(quán)限的合法應用作為“載體”通過這個載體在運行時將Frida Gadget的.so庫文件加載到目標進程的內(nèi)存空間中。常見的實現(xiàn)方式有兩種使用ptrace或LD_PRELOAD這通常需要另一個具有ptrace能力的進程在某些系統(tǒng)或特定條件下非ROOT應用也可能擁有ptrace自身或子進程的權(quán)限。通過ptrace附著到目標進程然后調(diào)用dlopen等函數(shù)遠程加載指定的.so庫。這種方法技術門檻較高且受Android系統(tǒng)版本和安全策略限制極大在新系統(tǒng)上幾乎不可行。利用run-as或調(diào)試器如果目標應用是debuggabletrue可調(diào)試的我們可以通過adb shell run-as package-name命令以該應用的用戶身份執(zhí)行命令。理論上可以嘗試在應用啟動后通過run-as執(zhí)行一個腳本將Frida Gadget庫文件拷貝到應用的數(shù)據(jù)目錄然后通過LD_LIBRARY_PATH或dlopen等方式加載。但這同樣復雜且不穩(wěn)定。為什么這個方案聽起來很美好無需修改APK保持了原應用的簽名和完整性。理論上更靈活可以針對不同的進程動態(tài)選擇注入時機。為什么現(xiàn)實中很少用條件苛刻嚴重依賴目標應用被標記為debuggable而正式發(fā)布的應用99%都不會開啟這個標志。成功率低Android系統(tǒng)的安全沙箱和SELinux策略會嚴格限制進程間的內(nèi)存操作和庫加載非ROOT環(huán)境下極難繞過。工具鏈不成熟沒有像重打包那樣成熟的一鍵化工具鏈每一步都需要手動處理大量底層細節(jié)極易出錯。2.3 方案三使用定制ROM或Magisk模塊半ROOT方案這算是一個“曲線救國”的思路。既然在完全純凈的非ROOT系統(tǒng)上這么難那我們可以稍微改造一下系統(tǒng)環(huán)境讓它“看起來”是非ROOT的但實際上為Frida開了后門。Magisk Hide如果你的設備已經(jīng)通過Magisk獲取了ROOT你可以利用Magisk的Hide功能對目標應用隱藏ROOT狀態(tài)。同時將frida-server放入Magisk模塊中隨系統(tǒng)啟動。這樣對于目標應用來說它運行在一個“非ROOT”環(huán)境因為它檢測不到SU但實際上Frida-server正在后臺運行。這嚴格來說不屬于“非ROOT”而是一種高水平的隱藏。定制內(nèi)核或ROM一些極客會編譯修改版的Android內(nèi)核或ROM在內(nèi)核層面集成Frida支持或者放寬某些權(quán)限限制使得在用戶空間無需ROOT即可執(zhí)行一些特權(quán)操作。這需要極高的技術能力且設備通用性極差。如何選擇對于絕大多數(shù)實戰(zhàn)場景尤其是分析第三方應用方案一重打包注入是唯一可靠且通用的選擇。方案二更多存在于理論探討和特定極端案例中。方案三則適用于你自己擁有完全控制權(quán)的測試設備。因此下文將重點深入講解方案一的完整實操流程、細節(jié)和避坑指南。3. 實戰(zhàn)準備工欲善其事必先利其器在開始動手前我們需要把環(huán)境和工具準備好。這里我會列出清單并解釋每一個工具的作用以及為什么需要它。3.1 基礎環(huán)境搭建你需要一臺電腦Windows, macOS, Linux均可并安裝以下基礎軟件Java Development Kit (JDK)版本8或以上。這是運行apktool、keytool、jarsigner等Java工具的基礎。建議安裝OpenJDK。Android SDK Platform-Tools主要為了使用adbAndroid Debug Bridge。這是與手機通信的橋梁用于安裝應用、傳輸文件、獲取日志等。確保adb命令可以在終端中直接調(diào)用。Python 3Frida的客戶端工具frida和frida-tools是用Python寫的。確保已安裝pip。3.2 核心工具鏈安裝與配置這是重打包流程的“四大金剛”apktool作用反編譯APK解碼資源為近乎原始形式將Dex文件反編譯為smali代碼和重新打包。安裝從其官網(wǎng)下載最新的apktool.jar。為了方便可以寫一個簡單的shell腳本或批處理文件來運行它。驗證在終端運行java -jar apktool.jar --version能輸出版本號即可。Frida Gadget作用Frida的嵌入式運行時庫我們將把它注入到APK中。獲取前往Frida的GitHub Release頁面找到對應你設備架構(gòu)的Gadget動態(tài)庫文件。通常文件名格式為frida-gadget-版本-android-架構(gòu).so.xz。常見的架構(gòu)有arm 舊的32位ARM設備。arm64 目前主流手機如驍龍8系、天璣系列的64位ARM架構(gòu)。x86/x86_64 Android模擬器如雷電模擬器常用。處理下載的.so.xz文件是壓縮包需要解壓得到最終的.so文件。在Linux/macOS上可以用xz -d命令Windows可以用7-Zip。Keytool Jarsigner (包含在JDK中)作用keytool用于生成簽名APK所需的密鑰庫Keystorejarsigner用于對APK進行簽名。這是Android系統(tǒng)驗證應用來源和完整性的必要步驟。準備如果你沒有現(xiàn)成的調(diào)試密鑰可以用以下命令生成一個有效期10000天keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -keysize 2048 -validity 10000按照提示輸入信息密碼可以簡單設為android便于記憶。Frida Client (frida-tools)作用這是運行在你電腦上的Frida客戶端用于連接并控制設備上的Frida Gadget。安裝在電腦的終端里運行pip install frida-tools。這會同時安裝frida和frida-tools。安裝后使用frida --version確認安裝成功。版本匹配這是一個極其關鍵的坑點你電腦上安裝的frida版本必須與注入到APK中的frida-gadget.so的版本完全一致。否則會出現(xiàn)協(xié)議不兼容無法連接。例如你下載了frida-gadget-16.1.4-android-arm64.so那么電腦端也應安裝pip install frida-tools16.1.4。3.3 目標APK與測試設備準備獲取目標APK可以從官方應用商店下載或使用adb shell pm path package-name命令從已安裝的設備中提取。確保你擁有測試該應用的合法權(quán)利。準備測試設備/模擬器一部真實的Android手機或一個模擬器如雷電模擬器。在手機的“開發(fā)者選項”中必須開啟“USB調(diào)試”。這是adb能夠工作的前提。連接與驗證用USB線連接手機在終端運行adb devices。如果看到設備序列號后面跟著device字樣說明連接成功。如果顯示unauthorized需要在手機屏幕上點擊授權(quán)提示。4. 詳細實操步驟手把手完成重打包注入假設我們的目標APK是target.apk設備架構(gòu)是arm64-v8a。下面我們一步步來。4.1 第一步反編譯目標APK我們將使用apktool來解包。java -jar apktool.jar d target.apk -o target_outputd: 表示解碼decode。-o target_output: 指定輸出目錄為target_output。執(zhí)行成功后你會看到target_output目錄里面包含了AndroidManifest.xml、res資源文件夾、以及smali代碼目錄可能叫smali或smali_classes2等。4.2 第二步注入Frida Gadget這是最核心的一步有幾種注入方式我推薦最穩(wěn)定的一種修改AndroidManifest.xml。放置Gadget庫文件進入target_output目錄。找到或創(chuàng)建lib/arm64-v8a/目錄根據(jù)你的設備架構(gòu)選擇也可能是lib/armeabi-v7a/等。將你準備好的frida-gadget-16.1.4-android-arm64.so文件復制到這個目錄下。為了簡化可以將其重命名為libfrida-gadget.so。修改AndroidManifest.xml用文本編輯器打開target_output/AndroidManifest.xml。在application標簽內(nèi)部添加以下meta-data和activity聲明application ... !-- 其他原有內(nèi)容 -- !-- 聲明Frida Gadget庫 -- meta-data android:namefrida-gadget-config android:value{ \interaction\: { \type\: \listen\, \address\: \127.0.0.1:27042\ } } / !-- 聲明一個用于加載Gadget的透明Activity可選但能提高兼容性 -- activity android:namecom.example.FridaLoaderActivity android:enabledfalse android:exportedfalse intent-filter action android:nameandroid.intent.action.MAIN / category android:nameandroid.intent.category.LAUNCHER / /intent-filter /activity !-- 關鍵在原有主Activity上添加加載庫的代碼通過android:name指向一個不存在的類觸發(fā)加載 -- !-- 注意這種方法在新版本Android上可能失效更推薦下面的nativeLibrary指令 -- /application更推薦的方法Android 6.0在application標簽或特定的activity標簽中添加android:extractNativeLibstrue如果已經(jīng)是true則忽略并確保Gadget庫能被加載。最粗暴有效的方法是在application標簽內(nèi)直接添加application ... android:extractNativeLibstrue然后我們需要確保庫被加載??梢酝ㄟ^修改主Activity的smali代碼來實現(xiàn)下一步。修改Smali代碼以加載庫關鍵步驟找到應用的主Activity。通常在AndroidManifest.xml中帶有intent-filter且包含ACTION_MAIN和CATEGORY_LAUNCHER的activity就是。在target_output目錄下找到對應這個Activity的.smali文件。路徑可能像smali/com/example/app/MainActivity.smali。在這個文件的.method構(gòu)造函數(shù)通常是init或onCreate方法中添加加載本地庫的代碼。找到方法體的開始部分.locals聲明之后添加如下smali指令.method public onCreate(Landroid/os/Bundle;)V .locals 1 invoke-super {p0, p1}, Landroid/app/Activity;-onCreate(Landroid/os/Bundle;)V # 新增加載Frida Gadget庫 const-string v0, frida-gadget invoke-static {v0}, Ljava/lang/System;-loadLibrary(Ljava/lang/String;)V ... # 原有的其他代碼 .end method這段代碼的作用是在Activity創(chuàng)建時動態(tài)加載名為frida-gadget的庫對應我們重命名后的libfrida-gadget.so。4.3 第三步重新打包并簽名重新打包APKjava -jar apktool.jar b target_output -o target_patched.apkb: 表示構(gòu)建build。target_output: 是反編譯后修改過的目錄。-o target_patched.apk: 指定輸出的APK文件名。對齊優(yōu)化可選但推薦 Android SDK中的zipalign工具可以優(yōu)化APK確保其內(nèi)容按4字節(jié)邊界對齊提高運行時內(nèi)存訪問效率。# 首先找到你的Android SDK中的zipalign工具路徑 # 例如$ANDROID_HOME/build-tools/版本/zipalign zipalign -v -p 4 target_patched.apk target_patched_aligned.apk簽名APK 使用之前用keytool生成的debug.keystore進行簽名。jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore debug.keystore target_patched_aligned.apk androiddebugkey系統(tǒng)會提示輸入密鑰庫密碼和密鑰密碼如果你生成時都用了android這里就輸入android。簽名成功后會生成一個已簽名的APK通常直接覆蓋原文件或生成新文件。4.4 第四步安裝與測試卸載原應用如果已安裝adb uninstall 目標應用包名安裝重打包的應用adb install target_patched_aligned.apk如果安裝失敗提示INSTALL_FAILED_UPDATE_INCOMPATIBLE說明簽名沖突必須先徹底卸載原版。啟動應用并連接Frida在手機上啟動剛剛安裝的重打包應用。在電腦終端使用Frida命令連接frida -U -f 目標應用包名 --no-pause-U: 連接到USB設備。-f 包名: 啟動指定包名的應用。--no-pause: 啟動后立即恢復進程運行否則會暫停在入口點。如果一切順利你會看到Frida的交互式命令行提示符[USB Device::App]-這表示連接成功你可以在這里執(zhí)行JavaScript代碼進行Hook了。5. 進階配置與疑難排錯上面的流程是標準操作但實戰(zhàn)中你會遇到各種“妖魔鬼怪”。下面是我總結(jié)的常見問題與解決方案。5.1 Gadget配置進階之前我們在AndroidManifest.xml里配置了Gadget監(jiān)聽本地端口。你還可以通過配置文件進行更精細的控制。在target_output目錄下創(chuàng)建一個名為libs/arm64-v8a/對應架構(gòu)的目錄在里面創(chuàng)建一個名為libfrida-gadget.config.so的文件注意名字和庫文件對應內(nèi)容可以是JSON{ interaction: { type: listen, address: 127.0.0.1:27042, on_port_conflict: fail, on_load: wait } }on_port_conflict: 端口沖突時的行為fail失敗、pick另選端口。on_load: 加載后的行為wait等待連接應用卡住直到Frida連接、resume立即恢復運行。實操心得對于需要分析啟動階段邏輯的應用建議使用wait這樣你有充足的時間在應用執(zhí)行任何業(yè)務代碼前附加腳本。對于普通分析resume體驗更好。5.2 對抗反調(diào)試與反Frida很多安全敏感的應用會檢測Frida。重打包注入雖然隱蔽但Gadget本身的存在如特定字符串、打開的端口仍可能被檢測。端口檢測應用可能會掃描27042等Frida默認端口。我們可以在配置文件中將端口改為一個不常見的值例如address: 127.0.0.1:1337然后在連接時使用frida -U -H 127.0.0.1:1338 -f 包名注意這里-H指定的是Gadget配置的地址但Frida工具鏈內(nèi)部可能需要端口轉(zhuǎn)發(fā)更常用的方法是保持默認端口但配合adb forward將設備端口轉(zhuǎn)發(fā)到本地。字符串特征檢測應用可能會在內(nèi)存或文件系統(tǒng)中搜索frida、gadget、libfrida-gadget.so等字符串。我們可以將Gadget的庫文件名和配置中的相關字符串進行混淆、加密或重命名。例如將libfrida-gadget.so改名為libhelper.so并在加載時使用對應的名字。行為檢測Frida會修改進程內(nèi)存、導入表等。對抗這個層面的檢測非常困難可能需要結(jié)合靜態(tài)修改繞過檢測點的判斷邏輯。一個簡單的對抗示例重命名將libfrida-gadget.so重命名為libz.so。在smali代碼中將加載庫的語句改為const-string v0, z invoke-static {v0}, Ljava/lang/System;-loadLibrary(Ljava/lang/String;)V相應的配置文件也需要改名為libz.config.so。5.3 常見錯誤與排查表錯誤現(xiàn)象可能原因排查步驟與解決方案adb install失敗提示INSTALL_FAILED_UPDATE_INCOMPATIBLE手機已存在簽名不同的同一應用adb uninstall 包名徹底卸載原版再安裝。frida -U -f連接失敗提示Failed to spawn: unable to connect to remote frida-server1. Frida版本不匹配。2. Gadget未成功加載或配置錯誤。3. 應用崩潰。1.首要檢查frida --version和 Gadget.so文件版本是否完全一致。2. 檢查adb logcat過濾應用包名查看啟動日志確認是否有加載libfrida-gadget.so的記錄或相關錯誤。3. 檢查AndroidManifest.xml修改是否正確smali注入代碼是否在正確的Activity和方法中。連接成功但一執(zhí)行腳本應用就閃退1. Hook的時機不對目標函數(shù)尚未加載。2. JavaScript腳本有語法錯誤或邏輯問題。3. 觸發(fā)了應用的反調(diào)試機制。1. 使用setImmediate或Java.perform確保在合適時機執(zhí)行Hook。2. 先在Frida REPL中執(zhí)行簡單命令如Java.available測試環(huán)境。3. 逐步注釋腳本代碼定位導致崩潰的Hook點。檢查logcat崩潰堆棧。應用啟動后黑屏或卡住不動Gadget配置中on_load設置為wait正在等待Frida連接。這是正?,F(xiàn)象。在另一個終端窗口使用frida -U -f 包名連接應用連接成功后應用會繼續(xù)運行。反編譯或回編譯過程中apktool報錯1. APK本身有加固apktool無法處理。2. 資源文件或smali代碼格式錯誤可能因手動修改導致。1. 對于加固APK需要先脫殼這超出了本文范圍是另一個復雜課題。2. 仔細檢查手動修改的smali代碼語法確保寄存器使用正確如v0在.locals聲明范圍內(nèi)。回編譯時使用-f強制參數(shù)可能忽略一些錯誤但不推薦。無法在lib/目錄下找到對應架構(gòu)的文件夾目標APK是純Java應用或使用了特定構(gòu)建方式如僅包含armeabi-v7a。查看原APK的lib目錄結(jié)構(gòu)。如果完全沒有l(wèi)ib目錄可以自己創(chuàng)建對應的架構(gòu)目錄如lib/armeabi-v7a/并將Gadget庫放入。然后在AndroidManifest.xml的application標簽內(nèi)添加android:extractNativeLibstrue。5.4 使用Frida進行基礎調(diào)試的示例連接成功后你就可以大展身手了。這里給一個最簡單的示例Hook應用中的android.util.Log類打印所有日志調(diào)用// script.js Java.perform(function() { var Log Java.use(android.util.Log); var overloads Log.d.overloads; // Hook d (debug) 方法 for (var i 0; i overloads.length; i) { overloads[i].implementation function() { console.log([*] Log.d called: , arguments[0], arguments[1]); // 打印調(diào)用棧有助于定位代碼位置 // console.log(Java.use(android.util.Log).getStackTraceString(Java.use(java.lang.Exception).$new())); return this.d.apply(this, arguments); // 調(diào)用原方法 } } });保存為script.js然后使用以下命令注入frida -U -f 包名 -l script.js --no-pause6. 替代方案與工具生態(tài)雖然手動重打包是基本功但社區(qū)也有一些工具可以簡化流程不過它們通常也是基于同樣的原理。objection一個基于Frida的運行時移動安全測試框架。它可以通過objection patchapk命令一定程度上自動化重打包過程。但其定制性不如手動操作且可能不適用于復雜場景。Frida-loader腳本網(wǎng)上有一些開源腳本可以自動化完成反編譯、注入、打包、簽名的流程。使用前務必仔細閱讀代碼理解其每一步操作避免注入惡意代碼。集成開發(fā)環(huán)境一些逆向IDE如JEB、IDA有插件支持Frida集成但底層依然需要你先完成Gadget的注入。我的建議是初學者一定要親手走幾遍完整的手動流程。這能讓你深刻理解每個環(huán)節(jié)的原理和可能出錯的地方。熟練之后可以編寫自己的自動化腳本將重復勞動交給機器把精力集中在核心的分析邏輯上。非ROOT環(huán)境下使用Frida就像是在沒有萬能鑰匙的情況下學習如何巧妙地制作一把針對特定鎖的鑰匙。重打包注入是這門手藝里最扎實、最可靠的一招。它要求你對APK的結(jié)構(gòu)、Android的啟動流程、簽名機制和Smali語法都有基本的了解。這個過程可能會因為應用的加固、混淆或獨特的架構(gòu)而變得曲折但每一次解決問題的過程都是對移動應用安全理解的一次深化。最后分享一個我自己的習慣在進行任何重要操作前尤其是修改smali代碼前先備份一份原始的反編譯目錄。這樣一旦注入失敗或引入錯誤你可以快速回滾而不是從頭再來。磨刀不誤砍柴工清晰的步驟和良好的備份習慣能讓你在逆向分析的漫漫長夜里少走很多彎路。

相關新聞

深入理解C語言static關鍵字的本質(zhì)與應用

深入理解C語言static關鍵字的本質(zhì)與應用

1. static關鍵字的本質(zhì)理解在C語言中,static可能是最容易被初學者誤解的關鍵字之一。我第一次接觸這個概念時,曾天真地認為它只是"靜態(tài)"的意思,直到在項目調(diào)試中遇到一個詭異的變量值保持問題,才真正理解它的威力。stat…

2026/8/1 3:09:43 閱讀更多
# 2026年8月更新:ChatGPT Plus / Pro 與 Codex——為什么越來越多開發(fā)者把 AI 當成“第二大腦”(GPT-5.6 最新技術分享)

# 2026年8月更新:ChatGPT Plus / Pro 與 Codex——為什么越來越多開發(fā)者把 AI 當成“第二大腦”(GPT-5.6 最新技術分享)

過去的軟件開發(fā)時代,程序員最重要的資產(chǎn)是什么? 有人認為是: 豐富的技術經(jīng)驗。 有人認為是: 熟練掌握各種框架。 也有人認為: 真正重要的是解決復雜問題的能力。 這些答案都沒有錯。 但進入 2026 年之后,一…

2026/8/1 3:09:43 閱讀更多
FCC禁止進口外國制造機器人吸塵器,對Roomba意味著什么?

FCC禁止進口外國制造機器人吸塵器,對Roomba意味著什么?

聯(lián)邦通信委員會(FCC)已禁止銷售和進口外國生產(chǎn)的機器人設備及電力逆變器,此舉是特朗普政府AI行動計劃的組成部分。FCC認為,機器人吸塵器、割草機器人等先進機器人設備對美國消費者構(gòu)成網(wǎng)絡安全風險,可能被用于監(jiān)控等有…

2026/8/1 3:59:44 閱讀更多
知網(wǎng)與維普AIGC檢測機制對比及學術查重實戰(zhàn)指南

知網(wǎng)與維普AIGC檢測機制對比及學術查重實戰(zhàn)指南

1. 學術查重平臺AIGC檢測功能深度對比去年幫學弟修改畢業(yè)論文時,我同時使用了知網(wǎng)和維普的AIGC檢測功能,結(jié)果兩份報告竟有12%的差異率。這種差異在學術圈其實很常見——去年某高校抽查的86篇論文中,使用不同平臺檢測的結(jié)果差異超過10%的占比達…

2026/8/1 3:59:44 閱讀更多
推挽與開漏輸出電路原理詳解:從MOSFET結(jié)構(gòu)到I2C總線應用

推挽與開漏輸出電路原理詳解:從MOSFET結(jié)構(gòu)到I2C總線應用

1. 從兩個經(jīng)典電路說起:推挽與開漏的本質(zhì)區(qū)別搞嵌入式開發(fā)或者硬件設計的朋友,對“推挽輸出”和“開漏輸出”這兩個詞肯定不陌生。不管是配置STM32的GPIO,還是閱讀各種傳感器、通信芯片的數(shù)據(jù)手冊,這兩個概念就像一對形影不離的兄…

2026/8/1 3:59:44 閱讀更多
JDK23 安裝包(附安裝教程)

JDK23 安裝包(附安裝教程)

Java 是一種廣泛使用的高級編程語言,由 Sun Microsystems 于 1995 年推出,后被 Oracle 收購。它具有跨平臺性、面向?qū)ο蟆⒏咝阅?、安全性強等特點,廣泛應用于企業(yè)級應用開發(fā)、移動應用(Android)、大數(shù)據(jù)處理、云計算等…

2026/8/1 3:59:44 閱讀更多
化工園區(qū)做AR安全巡檢推薦哪家供應商

化工園區(qū)做AR安全巡檢推薦哪家供應商

在化工園區(qū)數(shù)字化轉(zhuǎn)型的深水區(qū),傳統(tǒng)的安全巡檢模式正面臨嚴峻挑戰(zhàn)。紙質(zhì)記錄易篡改、專家資源調(diào)度難、隱患排查不直觀等問題,已成為制約安全生產(chǎn)效率的瓶頸。隨著“產(chǎn)業(yè)元宇宙”概念的落地,AR(增強現(xiàn)實)智慧運維解決方…

2026/8/1 3:59:44 閱讀更多
ComfyUI-Inpaint-CropAndStitch:終極智能局部修復指南

ComfyUI-Inpaint-CropAndStitch:終極智能局部修復指南

ComfyUI-Inpaint-CropAndStitch:終極智能局部修復指南 【免費下載鏈接】ComfyUI-Inpaint-CropAndStitch ComfyUI nodes to crop before sampling and stitch back after sampling that speed up inpainting 項目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-…

2026/8/1 3:49:44 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應用材料(Applied Materials)公司生產(chǎn)的一款用于半導體設備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機,適用于自動化設備及通用機械驅(qū)動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機。額定…

2026/8/1 0:09:33 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應用材料(Applied Materials)公司生產(chǎn)的一款用于半導體設備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機,適用于自動化設備及通用機械驅(qū)動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機。額定…

2026/8/1 0:09:33 閱讀更多