首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏iOS 备忘录

    mach-o文件分析多余的类和方法

    再使用otool命令otool -v -s __DATA __objc_selrefs逆向__DATA. otool命令简单使用 比如项目名字为TestClass,进入TestClass exec所在的文件夹 otool符号格式化,输出项目的类结构及定义的方法 // 直接在命令行查看 otool -arch arm64 -ov TestClass // 或者输出对应信息到指定文件,比如导出到otool.txt otool -arch arm64 -ov TestClass > otool.txt 查看链接了哪些库 到这里为止,otool是什么? OtoolAnalyse的实现原理 首先,参考otool的命令otool -arch arm64 -ov TestClass > otool.txt,生成otool.txt 打开otool.txt,搜索

    4.1K11发布于 2021-06-15
  • 来自专栏landv

    实现用VB.Net/(C#)开发K/3 BOS 插件的真正可行方法

    Handles m_ListInterface.MenuBarInitialize         Try             'TODO: 请在此处添加代码响应事件             Dim oTool )    '将菜单对象插入指定工具栏             '新增 dizhu 菜单对象,并设置属性             oTool = oMenuBar.BOSTools.Add("dizhu" )    '将菜单对象插入指定工具栏             '新增 config 菜单对象,并设置属性             oTool = oMenuBar.BOSTools.Add("config ")             With oTool                 .Caption = "设置"                 .TooltipText = "设置自定义执行的SQL )    '将菜单对象插入指定工具栏             '新增 Info 菜单对象,并设置属性             oTool = oMenuBar.BOSTools.Add("Info")

    1.9K10发布于 2018-06-22
  • 来自专栏Helloted

    减包-删除无用的代码

    .dylib(动态库文件 ) .framework(库文件) .dSYM(XCode 调试符号文件) 可执行文件(没有扩展名) dyld(动态链接器,一个特殊的可执行文件) MachO 查看工具:OTool 与 MachOView: OTool 是 macOS 自带的 MachO 文件查看工具,基于命令行,可以通过不同的命令参数快速地查看 MachO 文件各个方面的信息,OTool 位于(/Library /Developer/CommandLineTools/usr/bin/otool) MachOView 是一款开源的 MachO 文件查看工具,基于图形界面,它为查看和编辑(基于 Intel 和 ARM __objc_superrefs Objective-C 超类引用 三、利用Otool工具查找无用代码 OTool 是 macOS 自带的 MachO 文件查看工具,基于命令行,可以通过不同的命令参数快速地查看 MachO 文件各个方面的信息,OTool 位于(/Library/Developer/CommandLineTools/usr/bin/otool) 1、所有方法 “otool - ov $path

    1.8K30编辑于 2022-06-08
  • 来自专栏CoderStar

    Xcode 常见 CLI 工具

    otool & objdump 为什么要把这两个工具放到一起说呢?因为这两个工具之间有一定的关系。其实otool本质上就是objdump的一层 wrapper,底层其实都是使用objdump的实现。 比如 otool -L XXX 本质就等价 objdump --macho -dylibs-used XXX,更多详细的转换规则可见otool.html[12]。 otool 路径:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool -L XXX # 筛选是否链接了xxx库 otool -L XXX | grep "xxx" # 查看汇编码 otool -tV XXX # 输出Object-C类结构以及定义的方法 otool -ov XXX # 查看头部内容 otool -h XXX # 查看 load commands otool -l XXX # 查看该应用是否砸壳 # 看输出结果的cryptid参数,其中0:砸壳

    5K21编辑于 2022-09-23
  • 来自专栏iOS开发攻城狮的集散地

    iOS 了解Xcode Bitcode

    查看framework或者.a文件是否支持bitcode,支持哪些架构: 首先给大家介绍一个工具:otool 说明: otool:object file display tool. 我们可以使用otool查看framework或者.a 是否支持设置Enable Bitcode为YES,在终端中使用如下命令查看: otool -l framwork路径下的实体文件 | grep __ LLVM 说明: 使用otool 工具 查看framework文件的load commands内容,然后搜索load commands中的__LLVM。 示例: otool -l /Users/wangyongwang/Documents/QiBitcode/QiBitcode.framework/QiBitcode | grep __LLVM 如果上述命令没有输出结果

    1.3K20编辑于 2022-05-13
  • 来自专栏君赏技术博客

    我怎么在`Object-C`中用`Swift`

    你可以随时可以在终端运行otool -L查看一个产品包含的FrameWork。 这个可以显示你的产品依赖的静态库和FrameWork 如果你用Swift,运行otool -L将会出现所有的Swift的FrameWork 在包含swift的MyFrameWork运行otool -L

    1K60发布于 2018-08-31
  • 来自专栏腾讯移动品质中心TMQ的专栏

    手机APP安装包缩减方案

    那么通过otool命令逆向__TEXT__cstring段来获取二进制文件中所有的字符串常量,并检查这些字符串常量是否匹配安装包中任意图片资源名(去除文件后缀,如@3x.jpg)。 具体方法为: ① 通过otool命令逆向__DATA.__objc_classlist段和__DATA. 具体方法为: ① 用脚本从linkmap文件中解析二进制文件中所有的类方法(通过解析text代码段内容) ② 通过otool命令逆向__DATA. 3 相关工具和知识介绍 一、Otool命令介绍 Otool可以提取并显示ios下目标文件的相关信息,包括头部,加载命令,各个段,共享库,动态库等等。 使用方法:将安装包中的二进制文件作为otool的命令参数 二、LinkMap简介 LinkMap文件是Xcode产生可执行文件的同时生成的链接信息,用来描述可执行文件的构造成分,包括代码段(__TEXT

    1.8K60发布于 2018-02-06
  • 来自专栏花落的技术专栏

    动态库

    实际是苹果对动静态库多了一层包装, 本质是一个动态库或者静态库. lldb -file test -> r -> 运行起来报错(Library not loaded) 其实就是程序运行的时候,根据路径找不到动态库. otool -l test | grep 'DYLIB' -> 查看动态库路径 otool -l test | grep 'DYLIB' -A 5 -> -A 查找时多显示5行 发现根据系统动态库的名字 -> 动态库路径不对 解决Library not loaded错误 编译链接生成动态库的时候, 去保存动态库的路径 -> 动态库的Macho文件Load_Command去保存自己的路径 进入动态库目录 -> otool @rpath/Framework/TestExample.framework/TestExample @rpath -> 由可执行文件的MachO提供 去查看可执行文件中是否有@rpath -> otool grep 'RPATH' -A 5 -> 发现没有 注意此处大小写敏感 在可执行文件中添加@rpath -> install_name_tool -add_rpath <路径> <添加的可执行文件> otool

    1.4K30编辑于 2021-11-26
  • 来自专栏iOS打包,上架知识大全

    iOS Class Guard 成功了,但无法区分差异

    You can use the otool utility if you need to check for the Objective-C symbols after stripping. otool  will show unneeded information, but it can be filtered using grep and awk to only show symbols: otool

    35910编辑于 2023-12-02
  • 来自专栏欧阳大哥的轮子

    iOS疑难Crash的寄存器赋值追踪排查技术

    用系统自带的otool工具,进行代码的反汇编处理。 下面的otool命令格式可以用来显示具体的函数或者方法的反汇编代码: otool "可执行文件路径" -p "函数或者方法名" -V -t otool命令中 -p 后面跟的是方法名或者函数名或者符号名 本例的问题使用otool如下: otool "/Users/apple/Downloads/Payload/testApp.app/testApp" -p "___99-[XXX fn:queue 0000000103ae6580<+328> mov x1, x22 0000000103ae6584<+332> bl 0x107fac9e8 ; Objc message: -[x0 testString] //这里是otool

    3.8K30发布于 2021-04-01
  • 来自专栏韦弦的偶尔分享

    [译] 苹果在 iOS 10.1 和 macOS 10.12 中使用了 Swift

    这可以通过otool使用 -L 选项的命令行工具轻松完成: -L 显示目标文件使用的共享库的名称和版本号,如果文件是共享库,则显示共享库 ID。 在 PIPAgent 应用程序上运行此命令时: otool -L /System/Library/CoreServices/PIPAgent.app/Contents/MacOS/PIPAgent | $1) is using Swift # It returns the number of occurrences of the string 'swift' # from the output of otool #------------------------------------------------------------------------ isFileUsingSwift () { otool #--------------------------------------------------------------------- isFileUsingSwift () { otool

    1.9K20编辑于 2021-12-24
  • 来自专栏TechBox

    iOS逆向之app脱壳

    大家通常使用的判断加壳的方式是是使用machOView可视化工具或otool命令行工具。 使用otool检测 otool是Xcode自带的命令行工具,安装了Xcode的macOS系统不需要额外安装otool。 使用otool的如下命令可以检测App是否被加壳。 如下: otool -l mach-O文件 | grep crypt 例如: 图片 image.png 如上:TEST是笔者App的已经脱壳的可执行文件。 使用MachOView检测 不想使用otool命令行还可以使用MachOView,MachOView是一款开源的Mach-O可视化工具。通过MachOView可以清晰的查看Mach-O问价的内部结构。

    14.1K20编辑于 2022-08-14
  • 来自专栏我的技术专刊

    动态库详解

    实际是苹果对动静态库多了一层包装, 本质是一个动态库或者静态库. lldb -file test -> r -> 运行起来报错(Library not loaded) 其实就是程序运行的时候,根据路径找不到动态库. otool -l test | grep 'DYLIB' -> 查看动态库路径 otool -l test | grep 'DYLIB' -A 5 -> -A 查找时多显示5行 发现根据系统动态库的名字 -> 动态库路径不对 解决Library not loaded错误 编译链接生成动态库的时候, 去保存动态库的路径 -> 动态库的Macho文件Load_Command去保存自己的路径 进入动态库目录 -> otool @rpath/Framework/TestExample.framework/TestExample @rpath -> 由可执行文件的MachO提供 去查看可执行文件中是否有@rpath -> otool grep 'RPATH' -A 5 -> 发现没有 注意此处大小写敏感 在可执行文件中添加@rpath -> install_name_tool -add_rpath <路径> <添加的可执行文件> otool

    1.2K20编辑于 2021-12-06
  • 来自专栏酷酷的哀殿

    定量分析 static 字符串对二进制体积的影响

    iphoneos clang -target arm64-apple-ios8.0 main.m -fmodules -fobjc-arc -o demo 第二步:获取每个 section 的大小 otool 总结 本文分享了通过 otool 分析二进制文件体积变化的的技术方案。除静态变量外,类似增加 Class 对体积的影响都可以用本方案分析。

    72921发布于 2021-03-22
  • 来自专栏深度学习入门与实践

    【深度学习系列】关于PaddlePaddle的一些避“坑”技巧

    后来我发现我本机装了anaconda,用anaconda的python运行paddle会有一些小问题,不过可以使用otool 和 install_name_tool对_swig_paddle.so进行修改就可以 :   1.运行otool,可以看到pip安装之后的_swig_paddle.so依赖/usr/local/opt/python/Frameworks/Python.framework/Versions /2.7/Python,但实际系统中不存在该路径 1 otool -L /anaconda/lib/python2.7/site-packages/py_paddle/_swig_paddle.so 2 anaconda/lib/python2.7/site-packages/py_paddle/_swig_paddle.so 3.替换成功后,可以看到第五条已经成功的换成anaconda下的路径了 1 otool

    1.2K60发布于 2018-03-19
  • 来自专栏zhimingcow

    iOS 静态库&动态库

    和库相关的几个命令 nm display name list (symbol table),其实就是把对象文件中的相关符号标识都列出来 otool otool,顾名思义就是object tool,

    3K20发布于 2020-03-12
  • 来自专栏岑志军的专栏

    (6)脱壳

    将可执行的Mach-o文件拖入Hopper Disassembler v4当中 查看Load Commands -> LC_ENCRYPTION_INFO -> Crypt ID的值,0代表未加密 通过otool 命令行也可以:otool -l 可执行文件路径 | grep crypt Clutch - 配置 下载最新的Release版: https://github.com/KJCracks

    1.4K60发布于 2018-05-28
  • 来自专栏iOS逆向

    其他工程引用monkey dev的动态库dylib用法

    MonkeyDevPath)/Frameworks/libsubstrate.dylib -lcycript -framework RevealServer 步骤二:修改动态库依赖 首先我们可以查看动态库依赖,使用otool 命令,一下篇幅都以libMyDylib.dylib作为我们生成的dylib otool -L libMyDylib.dylib 内容如下 libMyDylib.dylib (architecture armv7 flags中增加命令 -force_load ${SRCROOT}/CapMock/libMyDylib.dylib 让工程强制加载我们的动态库,因为动态库本身只有在使用时候才会加载 执行完上述命令后,再使用otool

    2.5K40发布于 2019-04-24
  • 来自专栏腾讯Bugly的专栏

    三步走起 提升 iOS 审核通过率 上篇

    have access to the library’s source, you may be able to search the compiled binary using “strings” or “otool The “strings” tool can output a list of the methods that the library calls and “otool -ov” will output 源码中如果恰好定义了方法与非公开的 API 重名,也会导致被拒;比较常见的是,使用的第三方静态库中,包含了非公开的 API,那么可以通过 strings 或 otool 命令来查找相关的 API: 使用 otool –ov LibName.a 输出 Object-C 类结构以及定义的方法。 ,实现原理如下: 1、获取未公开库:基于 iOS 的 SDK,dump 出全库,全库减去私有库和公开库后,得到未公开库(non-public API); 2、获取头文件方法和成员的列表:使用 Otool

    1.9K90发布于 2018-03-23
  • 来自专栏程序员的园——原创文章

    开发库的哪些注意事项

    如windows平台的dumpbin.exe,linux平台的nm,mac平台的otool。 MyLibrary.dll //windows平台查看静态库 dumpbin.exe /LINKERMEMEBER MyLibrary.lib //linux平台 nm MyLibrary.a //mac平台 otool 可以通过工具(如Linux的ldd或macOS的otool -L)检查库的依赖关系。 6. 符号冲突 如果项目中的多个库包含相同符号(如函数或变量名),会造成符号冲突。

    93910编辑于 2024-11-04
领券