您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

tiktok協議源碼(TikTok估值近5000億,都有哪些公司控股?) 02

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-07 03:28:19【】9人已围观

简介FS提供了它需要的解決方案,以確保用戶始終可以訪問他們的工作。8Valist信任IPFS以實現安全的Web3軟件分發通過網站或應用商店發布軟件有時會引入安全問題,正如2020SolarWinds攻擊所

FS 提供了它需要的解決方案,以確保用戶始終可以訪問他們的工作 。

8 Valist 信任 IPFS 以實現安全的 Web3 軟件分發

通過網站或應用商店發布軟件有時會引入安全問題,正如 2020 SolarWinds 攻擊所證明的那樣。Valist通過允許開發團隊以 Web3-native 方式分發軟件來解決這個問題。 IPFS 通過提供大量開箱即用的安全保證,充當 Valist 的主要存儲層。

9 Snapshot 確保 DAO 投票過程通過 IPFS 去中心化

流行的 DAO 投票系統快照 依賴 IPFS 作為其基礎設施的核心部分。 它允許 DAO 成員通過去中心化投票過程就特定協議提案達成共識。快照是從產品到協議的一切社區治理不斷增長的空間中最常用的工具之一

技術更新

2021 年還見證了 IPFS 工作方式的多項技術更新。其中的核心是:

1 IPFS 0.11.0

這是面向 Go 開發人員的 IPFS 實現。除了重要的修復之外, 最新版本還改進了 UnixFS 分片和 PubSub 實驗以及對 Circuit-Relay v2 的支持 。在這一年中,還進行了其他改進,例如:

對 go-ipfs 的 IPLD 內部結構的更改使使用非 UnixFS DAG 更容易提供多種新命令和配置選項網關支持通過 DAG 導出端點下載任意 IPLD 圖自定義 DNS 解析器支持非 ICANN DNSLink 名稱單獨打包的遷移為 Apple M1 硬件構建固定服務的 WebUI 支持遠程固定服務更快的固定和取消固定

2 JS IPFS 0.60.0

JS IPFS 是基于 JavaScript 的類似實現。 它緩解了將 IPFS 數據與 JavaScript 應用程序鏈接的問題,允許開發人員使用它來本地訪問 IPFS 數據 。最新版本包括重要的錯誤修復,并且全年進行了重要的改進,例如:

ESM 和 CJS 雙重發布一個更簡單的 globSource APIPubSub 支持解決瀏覽器連接限制ipfs.get 上的壓縮包輸出默認從 RSA 切換到 Ed25519Dag 導入導出實現更好的類型定義啟用 NAT UPnP 打孔在 ipfs-買粉絲-client 中添加了對支持遠程固定服務的支持

3 IPFS 集群 0.14.1

提高可以列出 pinset 的速度將內容遷移到新集群時更靈活CAR導入支持批量固定攝取對 Badger 數據存儲的自動垃圾收集

為了更好地理解為什么這些改進很重要,請務必查看本技術指南 到 IPFS。

采用的下一步

盡管 IPFS 在去年取得了長足的進步,但仍有增長空間。新的合作伙伴關系和進步將是更廣泛的 Web3 可用性的關鍵。 隨著越來越多的主流用戶意識到對去中心化互聯網的需求,對 IPFS 等工具的需求將會增加 。隨著他們繼續進入這個領域,我們將看到 2022 年會帶來什么。

怎樣在切入切出虛擬攝像頭時營造卡頓效果

背景介紹:本人原先是android逆向工程師,后來因為工作變動,離開了協議分析這類的崗位,目前在做直播機與第三方應用兼容性分析相關分析,所以就有了這篇兼容性分析文章。

問題:tiktok在我們推流設備直播時,經過幾個特定步驟后切換前后置攝像頭會出現卡住的問題。

現象:直播畫面卡住不動了。

解決思路:找到點擊切換按鈕后的點擊事件回調,找到切換攝像頭的核心邏輯,來找到卡住原因。

1、如果了解ART虛擬機的同學會知道,jni函數和java函數都會調用到art虛擬機ArtMethod的Invoke函數。

輸出日志:

find target method: android.view.View.performClick

ArtMethod Invoke【22955】: ; lr:0x4af78c; libart.so: android.view.View.performClick

ArtMethod Invoke【22955】: ; lr:0x2e2800; libart.so: java.lang.Enum.toString

ArtMethod Invoke【22955】: ; lr:0x2e2800; libart.so: X.Ggh.LIZ

ArtMethod Invoke【22955】: ; lr:0x2e2800; libart.so: java.util.LinkedHashMap.<init>

ArtMethod Invoke【22955】: ; lr:0x2e2800; libart.so: java.util.HashMap.putAll

ArtMethod Invoke【22955】: ; lr:0x2e2800; libart.so: java.util.HashMap.put

ArtMethod Invoke【22955】: ; lr:0x2e2800; libart.so: X.DED.LIZ

ArtMethod Invoke【22955】: ; lr:0x2e2800; libart.so: X.D5k.onClick

通過frida hook libart.so的ArtMethod的Invoke函數,我們找到了點擊事件的回調類X.D5k.

找到這個類對應的onClick函數后,我對整個流程做個簡單的研讀,感覺發現了核心代碼在注釋直播流處理。

跟著核心代碼一路往下找到LiveCore這應該就是直播的核心代碼,其實現類為LiveCoreImpl,ILiveStream的實現類為LiveStream。

發現此處只是做了日志信息的合成和應用鏡像之類的代碼,但是又找到一個核心的類LiveStreamVideoCapture。

追蹤到這里發現鏈路斷了,又湊巧通過frida打開tiktok卡死在啟動頁上,那么接下來使用Xposed繼續理流程。

上面的代碼雖然沒有追中到切換攝像頭的核心邏輯,但是我們找到了兩個核心邏輯的類LiveStreamVideoCapture和LiveCoreImpl,分別和直播視頻流控制直播核心流程控制相關,所以Xposed繼續走的時候以這兩個類為重點,那么此處就開始放大招了,hook這兩個類的所有函數,貼上代碼。注意這里使用的classloader是application的classloader。

日志太多了,這里通過shell命令setprop做了個日志控制。

然后找到CameraVideoCapturer類的tryDeliverFrame,這里是處理相機的視頻幀,感覺越來越接近真相了,繼續hook這個方法,然后發現相機切換卡住以后,這個方法也停止調用了,那么沒辦法,繼續往上找堆棧中run方法的調用調用處。

繼續hook。

找到這個類。

至此,熟悉相機開發的同學應該知道,這就是SurfaceTexture.setOnFrameAvailableListener后,相機的可用幀會回調到這個函數,切換相機后卡頓,可用幀也同時不回調。

接下來hook原生相機。

調用的是android.hardware.Camera,也就是camera1相關的api,切換卡頓的時候并沒有調用Camera.open函數。

首次開直播的時候調用了這兩個函數,點擊切換相機的時候并沒有調用,在X.HCF這個類里找到switchCamera函數,那么猜測首次開相機,和切換前后相機走的并不是同一個流程,因為這個bug只有在切換相機時才會出現,所以我們就不關注首次開相機的流程。

果然,切換相機的時候走了這個流程,這是又發現了LiveStreamVideoCapture這個核心類,那么簡單進去看看SwitchCaptureRunnable這個有沒有被創建。

經過測試,發現這個類只會被創建一次,而run方法每次切換都會被調用,而且卡住的情況下也會被調用,那么結合上面Camera.open卡住時沒有調用,可以大膽的猜測中間過程某個條件不滿足被return了。根據堆棧信息繼續往下找幾個關鍵點。

發現CameraVideoCapture里也有切換相機的流程,切一步步往下走,能調用到上面我們hook過的X.HCF的switchCamera,那么我們就看看這里的switchCamera有沒有調用吧。

•情況一:先滑動直播界面,再按home鍵,然后回到tiktok,再切換相機,此時status()函數返回1,走了后續Camera.open流程。

•情況二:先滑動界面,再切換相機,然后按home鍵,接著回到tiktok,最后切換相機,此時status()函數返回2,沒走后續Camera.open流程。

從日志看switchCamera兩種情況都走了,再結合switchCamera的源碼看,源碼里的status()函數的返回值決定了

很赞哦!(66624)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:四川巴中平昌县

工作室:小组

Email:[email protected]