導航:首頁 > 程序命令 > otool命令

otool命令

發布時間:2023-02-17 21:03:50

❶ Mac查看文件內容常用的命令小結

最近蘋果的熱更新和私有庫問題檢查的更嚴了,如果應用被拒,蘋果在拒絕信中會說到使用 strings / otool / nm 命令進行自查,所以總結了一些命令,方便查找和定位文件內容相關信息。 檢查是否包含(weixin)字元串:

❷ iOS非越獄注入插件

這里我們以QQ App來舉例,這里需要注入的是我自己寫的一個 QQPlus 這個插件; 首先我們需要准備以下文件:

解壓完成後我們先確認包是否加密, 使用 otool 命令

輸入以上命令後輸出

這里 cryptid 為 0 則為未加密, 確認了未加密後我們就可以開始注入了;

可以看到 倒數第三 個依賴, 我們需要使用 install_name_tool 命令修改他

然後再次使用 otool 命令查看是否修改成功

這里可以看到已經把 /usr/lib/libsubstitute.0.dylib 已經被修改為 @executable_path/Frameworks/libsubstitute.0.dylib

這里可以很清楚的看到一個依賴 /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate , 同樣我們需要使用 install_name_tool 命令修改他把他修改到 Frameworks 目錄下的 libSubstrate.dylib

再使用 otool 命令查看是否成功修改依賴

這里可以看到依賴已經被修改為 @executable_path/Frameworks/libSubstrate.dylib

再次使用 otool 命令查看是否注入成功

這里可以看到我們已經插入了 @executable_path/Frameworks/QQPlus.dylib

個人Cydia源: https://moxcomic.github.io
QQ交流群: 821196802

❸ iOS開發中常用命令工具(xcode-select、lipo、xcrun等)

當安裝多個xcode的版本,使用該工具使用指定的版本。

-p 或者 --print-path 查看當前開發者目錄,也即是xcode的版本目錄。print the path of the active developer directory
-s <path> 或 --switch <path> 選擇xcode的版本
--install 安裝
--version 查看版本
--reset 恢復默認
sudo rm -rf /Library/Developer/CommandLineTools 強制刪除安裝目錄下的文件

是管理Fat File的工具, 可以查看cpu架構, 提取特定架構,整合和拆分庫文件。

Mac OS X下二進制可執行文件的動態鏈接庫是dylib文件。所謂dylib,就是bsd風格的動態庫。基本可以認為等價於windows的dll和linux的so。mac基於bsd,所以也使用的是dylib。

Linux下用 ldd 查看,蘋果系統用 otool 。

otool命令介紹
MobSF
Mach-O 文件格式解析

xcodebuild :通過工程文件,生成app文件。
xcrun :通過app文件,來生成ipa文件(包含了簽名的過程)。

通過app文件生成ipa文件

libtool是一個通用庫支持腳本(/usr/bin/libtool),將使用動態庫的復雜性隱藏在統一、可移植的介面中。

可以在不同平台上創建並調用動態庫,我們可以認為libtool是gcc的一個抽象,也就是說,它包裝了gcc或者其他的任何編譯器,用戶無需知道細節, 只要告訴libtool說我需要要編譯哪些庫即可,並且,它只與libtool文件打交道,例如lo、la為後綴的文件。
libtool工具的使用

庫是一單獨的文件,裡麵包含了按照特定的結構組織起來的其它的一些文件(稱做此庫文件的member)。原始文件的內容、模式、時間戳、屬主、組等屬性都保留在庫文件中。
詳細命令參見, 菜鳥網路-ar命令

可以用來創建、修改庫,也可以從庫中提出單個模塊。

lipo libAFNetworking.a -thin arm64 -output lib-arm64.a 生成Arm64包

ar -t lib-arm64.a 輸出包含的.o文件 和 otool -L libAFNetworking.a 一樣。

ar -x lib-arm64.a 解壓出包裡面的.o文件

在iOS開發中,常常用來分析二進制和靜態庫文件。
列出 .o .a .so 中的符號信息,包括諸如符號的值,符號類型及符號名稱等。所謂符號,通常指定義出的函數,全局變數等等。

iOS開發中,可以用來查看.a靜態庫所有打包進去的.o文件和函數介面信息,幫助我們定位崩潰信息。
例如: nm -u libAFNetworking.a 列出某個.o文件的介面信息。

二進制查看命令,將文件顯示為16進制字元串表示形式。
例如: xxd libYTKNetwork.a | grep "net" 查看YTKNetwork.a文件裡麵包含net字元串的,幫助我們分析一些二進制文件。

DWARF文件初探——提取輕量符號表

Mac系統下lipo, ar, nm等工具的使用簡介
美團 iOS 工程 zsource 命令背後的那些事兒
Linux工具參考篇
iOS 靜態庫沖突 兩個不同的.o 文件沖突 ,靜態庫分離

❹ dyld: Library not loaded解決方案

此問題是由於動態庫依賴路徑導致,分為兩種情況:

在項目啟動後,由於路徑問題App直接崩潰,Xcode列印出以下信息:

根據列印內容,我們可以得知是 /usr/local/lib/libimobiledevice-glue-1.0.0.dylib 無法正確找到,解決方法如下:

至此該問題已解決。

首先進行問題定位,可以使用 otool 命令查看問題:
在終端輸入 otool -L 動態庫全路徑 ,就可顯示其內部引用信息。

有的時候崩潰並不是動態庫文件沒找到,而是動態庫內部依賴路徑有問題,Xcode會列印出以下信息:

根據列印內容,我們得知是由於 aa.3.dylib 這個庫內部的引用無法找到,比如我的 libcrypto.3.dylib 真實路徑是 Build/Procts/Debug/xxx.app/Contents/Frameworks/libcrypto.3.dylib ,而這個 aa.3.dylib 內部的引用路徑是 /usr/lib/libcrypto.3.dylib 。因此我們需要講其修改:
打開終端輸入以下命令進行修改:
install_name_tool -change 動態庫中錯誤的引用路徑 正確的引用路徑 有問題的動態庫全路徑
比如我的示例:
install_name_tool -change /usr/lib/libcrypto.3.dylib @executable_path/../Frameworks/libcrypto.3.dylib aa.3.dylib的全路徑
至此問題已解決。

❺ iOS 逆向----otool命令入門

首先可以拿自己的ipa包進行嘗試。

選擇你的ipa包,然後把後綴名改為zip,解壓縮得到Payload文件夾,裡面就是你的APP。

打開終端,直接cd到你的xxxx.app目錄下。具體做法,輸入cd,然後把xxxx.app直接拖到終端里打個回車。

然後輸入otool,會顯示如下內容:

有興趣的同學可以仔細研究一下每個命令是干嗎用的,這里介紹幾個常用命令:

可執行文件的名稱可以右鍵xxxx.app文件,選擇顯示包內容,然後找到裡面的exec文件,把名字打進去。一般來說這個文件的名字跟xxxx是一樣的
然後奇跡就出現了。。。

是不是很熟悉?這個命令列出了你使用的所有庫的名字。

查看ipa包是否加殼:

其中cryptid代表是否加殼,1代表加殼,0代表已脫殼。我們發現列印了兩遍,其實代表著該可執行文件支持兩種架構armv7和arm64.

這里給大家推薦一個自動化檢測的神器:
MobSF
根據Document的提示自行研究一下吧。

❻ ldd與otool

ldd命令用於列印程序或者庫文件所依賴的共享庫列表
ldd不是一個可執行程序,而只是一個shell腳本

體積小,需要鏈接動態庫,對各平台的兼容性可能不太好

參考:

https://www.linuxsong.org/2015/04/mac-os-x-ldd-strace
http://man.linuxde.net/ldd
https://coolshell.cn/articles/1626.html
https://stackoverflow.com/questions/1685483/how-can-i-examine-contents-of-a-data-section-of-an-elf-file-on-linux
https://www.jianshu.com/p/ef462437b999

❼ iOS 包簽名及重簽名

簽名相關的命令:
•$security find-identity -v -p codesigning -- 列出鑰匙串里可簽名的證書

•$security cms -D -i embedded.mobileprovision -- 查看描述文件

•$codesign–fs 「證書串」 文件名 -- 強制替換簽名

重簽步驟:
1.刪除插件和帶有插件的.app包(比如Watch)
2.對Frameworks裡面的庫進行重簽名
3.給可執行文件 +x(可執行)許可權
4.替換描述文件
5.替換BundleID
6.通過授權文件(Entilements)重簽.app包

實際操作:
獲取破殼的ipa包
獲取第三方ipa包
查看ipa包是否已經破殼 》 非上架的都沒加殼,無需關注
解壓ipa包,進入playload文件夾,找到MachO文件

在終端使用命令otool -l DingTalk | grep crypt,0是已脫殼,大於0是未脫殼(一
般為1)

終端查看本地有效證書
$security find-identity -v -p codesigning

刪除無法簽名的插件文件
刪除Plugins文件夾和Watch文件夾

對.app文件夾內的Frameworks文件夾中的每一個framework強制重簽名
命令:$ codesign -fs "iPhone Developer: xxx " xxx.framework
找到framework文件夾下所有.framework,分別使用上面的命令對其簽名。

建議通過腳本命令執行:

將要簽名的描述文件該成 embedded.mobileprovision 替換 來的 embedded.mobileprovision

創建entitlements.plist文件
查看描述文件內容,使用命令security cms -D -I embedded.mobileprovision,找到Entitlements節點,接著創建entitlements.plist文件,內容拷貝過去,最後把entitlements.plist文件拷貝到playload文件夾內(與xx.app同級)。
!]( https://upload-images.jianshu.io/upload_images/1502585-e1694c8e1e77a197.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )

修改xx.app包裡面的info.plist中的bundleId為上面項目的bundleId

對xx.app開始簽名
使用的命令: zip –ry 輸出文件 輸入文件 命令。也可以手動壓縮。

將上述操作 通過shell命令 寫個腳本文件。然後一鍵操作。
shell腳本語言命令

地址: https://github.com/InjoyDeng/ResignTool

蒲公英平台重簽名

本文章主要介紹iOS 版本發布的兩個相關功能。

一 : iOS 開發出的版本發布安裝 用兩種方式 :

軟體環境
Mac: v10.12.6 (16G29)
ruby: v2.3.4
rvm: v1.29.3
sigh: v2.71.1
Xcode: v9.2

使用sigh腳本
使用之前先安裝一下腳本環境

應用場景:
主要解決因重復打包導致測試同學回歸測試的包和上傳App Store的包不一致的問題。以及 合作方之間 證書不一致,需要重新簽名問題。

App開發測試流程

對回歸測試通過的ipa包進行重新簽名,然後上傳 App Store

輸入的 Signing Identity 如果和 .mobileprovision文件 不一致,那麼終端上仍會提示resign成功,但是,安裝時會報錯!

codesign -vv -d xxx.app

本文主要講述sigh命令的安裝和使用。

首先確保你安裝了Xcode的命令行工具。

然後通過gem安裝sigh,gem的安裝請自行谷歌。

在終端執行

依次執行下列步驟:

關於更多sigh用法請訪問 sigh使用

簽名成功的應用就可以順利在我們的設備中安裝了並使用了,用這個方法可以進行非越獄平台安裝在正版基礎移植的越獄應用。

工具: https://github.com/InjoyDeng/ResignTool
借鑒: https://www.jianshu.com/p/d68924e1af25

https://www.jianshu.com/p/d68924e1af25
https://www.cnblogs.com/guohai-stronger/p/11781249.html

iOS APP簽名機制詳解

閱讀全文

與otool命令相關的資料

熱點內容
伺服器主機如何設置啟動 瀏覽:282
linux配置網路命令 瀏覽:774
一張照片怎麼製作視頻app 瀏覽:908
pythonweb和php 瀏覽:976
電腦伺服器地址ip地址 瀏覽:823
對矩陣壓縮是為了 瀏覽:910
setfacl命令 瀏覽:172
linux子系統中斷 瀏覽:342
linux查看進程ps 瀏覽:224
知識庫系統php 瀏覽:623
小波變換壓縮圖像python 瀏覽:151
阿里巴巴程序員怎麼月入百萬 瀏覽:173
如何使用國外伺服器 瀏覽:188
燃燈者pdf 瀏覽:468
編譯器用數學嗎 瀏覽:7
圖形化apk反編譯工具 瀏覽:48
考勤表加密怎麼辦 瀏覽:735
arj壓縮與解壓批處理怎麼寫 瀏覽:658
php和大數據哪個好 瀏覽:930
未來最值得投資的加密貨幣 瀏覽:526