macOS常用二進位制工具

2021-09-19 19:52:36 字數 2272 閱讀 3373

build xcode projects and workspaces

這個工具可以用來編譯xcode工程:

xcodebuild -project myframework.xcodeproj -scheme myframework -configuration release configuration_build_dir='~/desktop/build/arm'
run or locate development tools and properties.

通常用xcrun來生成ipa包:

create libraries

建立庫。mac平台下的framework依賴另外乙個framework,編譯後預設是不會合併成乙個的,如果想要給出乙個framework可以使用這個工具。

合併兩個靜態庫:

libtool -static -o c a.framework/a b.framework/b
create and maintain library archives

這個命令用於建立和管理歸檔(archive)檔案。主要應用是解決第三方庫衝突,例如ffmpeg衝突就可以用ar分離出衝突檔案,並打包。

將.o從.a靜態庫中刪除:

ar -d lib.a conflict.o
將.a檔案解壓縮:

ar -x lib.a
create or operate on universal files

lipo主要用於處理通用二進位制檔案。

檢視架構資訊:

lipo -info a.framework/a
合併生成乙個胖包:

lipo -create debug-iphoneos/a.framework/a debug-simulators/a.framework/a -output aout
分離出armv7版本庫:

lipo a.framework/a -thin armv7 -output aout
display name list (symbol table)

展示符號資訊:

nm -nm a.out
object file displaying tool

比nm更強大,可以詳細檢視mach-o檔案資訊。mac還有乙個對應的圖形化工具——machoview。

檢視依賴動態庫:

otool -l a.out
檢視反彙編**段:

otool -v -t a.out
display information from object files

反彙編目標檔案或可執行檔案。

反彙編a.out所有header資訊:

objdump -x a.out
反彙編a.out所有section資訊:

objdump -d a.out
change dynamic shared library install names

這個工具用的比較少,它可以修改動態庫的找尋路徑。

例如cmake生成的動態庫新增到工程可能存在dyld: library not loaded 的錯誤,這個時候,我們先用 otool 檢視一下這個動態庫的路徑:

otool -l  a.framework/a
得到結果:

/users/worthy/desktop/a.framework/a (compatibility version 0.0.0, current version 0.0.0)

/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)

/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.5.0)

/usr/lib/libsystem.dylib (compatibility version 1.0.0, current version 1238.50.2)

install_name_tool -id @rpath/a.framework/a a.framework/a

macOS常用二進位制工具

build xcode projects and workspaces 這個工具可以用來編譯xcode工程 xcodebuild project myframework.xcodeproj scheme myframework configuration release configuration ...

二進位制工具

現在的pwn題很多都是linux下的程式,因此學會gdb的除錯是做pwn題必不可少的,現在簡單介紹一下gdb的使用,gdb下有個很好的外掛程式peda,可以安裝一下。例子 include include includeint add int a,int b int main 1.進行編譯 gcc t...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...