雜物聚集地

WSL 上 adb 找不到 devices 的問題

Tue, 01 Oct 2024 09:42:25 GMT

這裡講的是在windows cmd中可以找到,但是WSL內不行 如果是windows cmd中就找不到建議還是先安裝Google USB 驅動程式

一開始查網路上大部分的說法主要是說windows的adb版本與wsl內的需要一致,但是我試過還是不行。 後來找到了這個issue,裡面講了另外一個workaround,比較麻煩但確實可以解決這個問題。

在windows 下 cmd執行以下指令:

adb -a -P 5037 nodaemon server

在WSL2裡執行以下指令

adb kill-server
export ADB_SERVER_SOCKET=tcp:xxx.xxx.xxx.xxx:5037
adb devices

把xxx換成windows的IP即可。


APK 逆向工程工具

Tue, 01 Oct 2024 09:42:25 GMT

解apk資源檔

ApkTool https://ibotpeaches.github.io/Apktool/install/ 大部分資源都可以解開,除了java程式碼

解 java 程式碼

dex2jar 轉換smali to class https://github.com/pxb1988/dex2jar d2j-dex2jar <apk.file>

Java Decompiler GUI http://java-decompiler.github.io/ 用來檢視打開上一個步驟產出的jar檔

解 .so 檔

IDA pro IDA Pro 需要付費,有免費版但是不能解.so檔

Radare2 https://github.com/radareorg/radare2 未試,因為在公司被F-Secure判定為malware

Cutter https://cutter.re/ 目前要跑很久,還不確定實不實用

Hopper https://www.hopperapp.com/ 只有mac與linux版,故沒有測試

Ghidra Ghidra是美國國家安全局(NSA)開發的免費和開源的逆向工程工具 目前測試後可解,速度也可接受,雖然有解出來的邏輯有時候還是看不懂,但是基本上可接受。


Android 上 Chrome 99 full screen的顯示issue

Tue, 29 Mar 2022 16:00:00 GMT

目前遇到一個無解的問題先記錄一下

測試版本號: Chrome 99.0.4844.73
測試日期: 2022.3.29 測試手機: A70

一開始以為是專案問題,後來多測了幾款競品或類似專案也會有相同問題,最後發現連 google首頁都可以重現,看來是chrome的issue無誤了。

重現方法:

  1. 手機開啟開發者模式與電腦連接
  2. 開啟google首頁
  3. 手機如果有鎖定螢幕直向的話請關閉,讓他可以直橫版切換
  4. 使用chrome dev tool,打開Console tab
  5. 輸入 document.documentElement.requestFullscreen() 強制進入全螢幕
  6. 手機轉向
  7. 拖出navigation bar,按返回退出全螢幕
  8. 再輸入 document.documentElement.requestFullscreen() 進入全螢幕一次
  9. 此時可以看到網頁顯示為全黑

以上步驟只是單純重現專案遇到的狀況,觸發的條件應該在於全螢幕狀態下轉向,只要沒有做這件事就不會觸發。

查找一下 chromium的issue有看到一個類似的,且他的版號是98,重現步驟幾乎一樣,所以也許這個問題在98版就有了,且試過退到 版號91跟96不會有這個問題。


在 Fork 設定 外部合併工具 為 TortoiseGitMerge

Tue, 15 Feb 2022 09:38:00 GMT

Fork是我目前在Windows上使用的git GUI工具,其優點眾多使我試用幾小時候就決定棄SourceTree改用Fork,另外我都會使用TortoiseGit來做為第二套git工具,主要是他在檔案總管有右鍵選單功能,另一點就是我覺得他的Merge功能是目前最滿意的。
由於Fork的預設外部工具沒有包含TortoiseGit,所以不能像SourceTree只要下拉選單選一下就好,故紀錄一下設定值。

打開Fork 選 File > Preferences..,切到Intergration頁即可設置。

Merge Tool Setting
Merger: Custom
Merger Path: TortoiseGit安裝路徑\bin\TortoiseGitMerge.exe
Arguments: /base:$BASE /mine:$LOCAL /theirs:$REMOTE /merged:$MERGED

External Diff Tool Setting
Diff Tool: Custom
Diff Tool Path: TortoiseGit安裝路徑\bin\TortoiseGitMerge.exe
Arguments: $LOCAL $REMOTE


製作一個能離線安裝的套件包

Wed, 09 Feb 2022 09:30:00 GMT

目前工作上遇到一個需求,公司使用 Verdaccio 建立一個 Node.js private proxy registry,裡面有一些建置環境需要的package,Verdaccio建在私有網域,但是公司的建置機器卻是在雲端服務,目前無法連回公司網域,所以一開始的思路是找可以離線安裝的方法。

使用bundledDependencies

https://docs.npmjs.com/cli/v6/configuring-npm/package-json#bundleddependencies

This defines an array of package names that will be bundled when publishing the package.
In cases where you need to preserve npm packages locally or have them available through a single file download, you can bundle the packages in a tarball file by specifying the package names in the bundledDependencies array and executing npm pack.

可以在package.json中設置pack時需要一起打包的dependencies package,這樣使用npm pack時就會一起包進去。

不過因為這樣的需求就要改package.json且造成檔案變大好像不太好,這裡有一個別人提供的腳本可以自動化。

使用shrinkpack

https://www.npmjs.com/package/shrinkpack

這個工具的運作模式可以看這個章節 ,基本上使用 npm ci 是基於package-lock.json的package安裝方法,該工具將所有依賴的package抓到node_shrinkpack資料夾並改寫package-lock.json,所以只要使用 npm ci --offline就可以離線安裝所有依賴package。

這個方法需要npm version是7以上才可以使用。