目录

前言 1.1

Hopper概览 1.2

下载和安装Hopper 1.3

Hopper使用 1.4

Hopper举例 1.5

AwemeCore 1.5.1

Thunder 1.5.2

打开应用 1.5.2.1

分析逻辑 1.5.2.2

Hopper心得 1.6

Hopper vs IDA 1.7

附录 1.8

参考资料 1.8.1

前言

iOS逆向工具：Hopper

最新版本：v1.0.0

更新时间：20231008

简介

介绍iOS逆向的常用工具之前：Hopper。先是Hopper概览；然后是下载和安装，接着是如何使用；并且给出了具体例子，比如AwemeCore、Thunder等；且整理了相关心得；以及和IDA的对比。

源码+浏览+下载

本书的各种源码、在线浏览地址、多种格式文件下载如下：

HonKit源码

crifan/ios_re_tool_hopper: iOS逆向工具：Hopper

如何使用此HonKit源码去生成发布为电子书

详见：crifan/honkit_template: demo how to use crifan honkit template and demo

在线浏览

iOS逆向工具：Hopper book.crifan.org

iOS逆向工具：Hopper crifan.github.io

离线下载阅读

iOS逆向工具：Hopper PDF

iOS逆向工具：Hopper ePub

iOS逆向工具：Hopper Mobi

版权和用途说明

此电子书教程的全部内容，如无特别说明，均为本人原创。其中部分内容参考自网络，均已备注了出处。如发现有侵权，请通过邮箱联系我 admin 艾特 crifan.com，我会尽快删除。谢谢合作。

各种技术类教程，仅作为学习和研究使用。请勿用于任何非法用途。如有非法用途，均与本人无关。

鸣谢

感谢我的老婆陈雪的包容理解和悉心照料，才使得我crifan有更多精力去专注技术专研和整理归纳出这些电子书和技术教程，特此鸣谢。

其他

作者的其他电子书

本人crifan还写了其他150+本电子书教程，感兴趣可移步至：

crifan/crifan_ebook_readme: Crifan的电子书的使用说明

关于作者

关于作者更多介绍，详见：

关于CrifanLi李茂 – 在路上

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 16:18:47

Hopper概览

Hopper概览

Hopper=Hopper Disassembler

偶尔缩写为：hd

是什么：iOS逆向工具

Hopper is a reverse engineering tool for OS X and Linux, lets you disassemble, decompile and debug your applications

This tool will let you disassemble any binary you want, and provide you all the information about its content, like imported symbols, or the control flow graph! Hopper can retrieve procedural information about the disassembled code like the stack variables, and lets you name all the objects you want.

作用：主要用于二进制的静态逆向分析代码逻辑

disassemble

decompile

对标：IDA

支持

运行平台：Mac、Linux

目标架构：32/64bits Intel/Apple Silicon Mac, Linux, Windows and iOS executables

主页

Hopper (hopperapp.com)

截图

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 10:50:22

下载和安装Hopper

下载和安装Hopper

请支持正版

警告⚠️：此处Hopper破解版仅限于技术研究使用，不准用于非法目的，否则后果自负。

如有侵权，请联系笔者删除。

下载

下载破解版的Hopper Disassembler：

hopper disassembler for mac v4破解版下载(免授权文件/序列号) v4.0.8 - 软件学堂

-> 得到：hopperdisassembler_6040.dmg

安装

双击dmg，继续，进入界面：

注：不要参考教程中说的，双击，否则会直接运行的。

去把Hopper Disassembler v4.app拖动到应用程序中：

另外Crack中有个：HopperV4Patcher.app

双击运行，出现提示：

不明身份开发者

去隐私中允许：

仍要打开

即可出现界面：

再去把应用程序中的：Hopper Disassembler v4.app拖动到这个patch界面中：

瞬间就破解好了：

显示patch success

如此，即可安装完毕，即可正常打开，已破解的Hopper：

的确没有注册弹框，可以看到Computer license了，说明破解成功。

另外：为了防止更新导致破解失效，去看看更新设置：

此处已经是关闭自动升级更新了，是我们希望的：不要开启自动更新。

后记：

结果用了几天后，还是会过期，无法继续使用：

Demo period has expired
Document will be closed

点击OK，就退出了。

另外，此处感觉Hopper也比较卡顿，且对于大型app也会卡死，所以放弃。

继续转用IDA吧。

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 14:27:55

Hopper使用

Hopper使用

Hopper基本界面

打开后的Hopper主界面是：

Preferences设置界面

Hopper功能介绍

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 16:07:32

Hopper举例

Hopper举例

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 11:27:43

AwemeCore

Hopper使用举例：AwemeCore

Hopper加载AwemeCore

输入文件：AwemeCore

然后把AwemeCore拖进Hopper

出现Loader弹框：

然后开始加载和分析：

Loading Mach-O AArch64 file

Processing bindings

Reading Objective-C

Reading Objective-C super refs

Reading Objective-C class list

加载完毕，进入主页面：

缺点：目前总体有点卡顿

分析代码逻辑

接下来，就是如何具体分析逻辑了

此处可以看到函数名：awe_isBackground

双击后，跳转到函数实现：

点击 尝试别人说的，切换到 伪代码 ObjC的

此处出现警告：

No procedure at this address

继续去找其他逻辑：比如，是否有越狱相关内容。

从左边的函数列表：

找找哪些和 启动相关的、初始化相关的

比如之前看到的，靠近entry的AWELaunchMainPlaceholder这种函数：

就很值得好好研究看看

另外继续研究越狱相关：

继续研究左边函数列表：

去试试，搜索Find->Find

越狱：jailbreak

看看Type还有哪些类型

此处为了模糊搜索更多内容，所以取消勾选：Case sensitive

开始搜索：

此处搜索了很多分钟，仍没有结束。

后来是，等待了2天多，依旧没结束，所以放弃。

尝试点击Cancel时，已无法点击。

索性强制退出：

->

目前的结论

Hopper对于（包含逻辑和内容很多的）大的二进制，基本上无法正常使用。

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 11:48:30

Thunder

Thunder迅雷

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 14:53:21

打开应用

Hopper打开Thunder迅雷

Hopper Disassembler v4->File->Read Executable to Disassemble:

尝试去打开Mac的app：迅雷

Thunder.app/Contents/MacOS/Thunder

弹框显示加载选项：

顺带看看Loader参数的其他可选性：

Loader可选项

Mach-O 64bits

Raw Binary

点击OK，即可加载分析：

开始加载和分析。很快分析完毕，效果是：

再去把右边和底部也开启显示：

底部的log是：

Hopper is ready
Mach-O 64bits file loaded
Starting background analysis
Analysis segment __TEXT
> analysis section __text
> analysis section __stubs
> analysis section __stub_helper
> analysis section __gcc_except_tab
> analysis section __objc_methname
> transform section __objc_methname to C strings
> analysis section __cstring
> transform section __cstring to C strings
> analysis section __const
> analysis section __objc_classname
> transform section __objc_classname to C strings
> analysis section __objc_methtype
> transform section __objc_methtype to C strings
> analysis section __ustring
> analysis section __swift3_typeref
> analysis section __swift3_reflstr
> analysis section __swift3_fieldmd
> analysis section __swift3_assocty
> analysis section __swift2_types
> analysis section __swift2_proto
> analysis section __swift3_capture
> analysis section __unwind_info
> analysis section __eh_frame
Analysis segment __DATA
> analysis section __nl_symbol_ptr
> analysis section __got
> analysis section __la_symbol_ptr
> analysis section __const
> analysis section __cfstring
> analysis section __objc_classlist
> analysis section __objc_nlclslist
> analysis section __objc_catlist
> analysis section __objc_protolist
> analysis section __objc_imageinfo
> analysis section __objc_const
> analysis section __objc_selrefs
> analysis section __objc_protorefs
> analysis section __objc_classrefs
> analysis section __objc_superrefs
> analysis section __objc_ivar
> analysis section __objc_data
> analysis section __data
> analysis section __bss
> analysis section __common
Analysis segment __LINKEDIT
Analysis segment External Symbols
> mark procedures
Analysis segment __TEXT
> analysis section __text
> disassemble section __text
> searching additional procedures in section __text
> analysis section __stubs
> disassemble section __stubs
> searching additional procedures in section __stubs
> analysis section __stub_helper
> disassemble section __stub_helper
> searching additional procedures in section __stub_helper
> analysis section __gcc_except_tab
> analysis section __objc_methname
> analysis section __cstring
> analysis section __const
> analysis section __objc_classname
> analysis section __objc_methtype
> analysis section __ustring
> analysis section __swift3_typeref
> analysis section __swift3_reflstr
> analysis section __swift3_fieldmd
> analysis section __swift3_assocty
> analysis section __swift2_types
> analysis section __swift2_proto
> analysis section __swift3_capture
> analysis section __unwind_info
> analysis section __eh_frame
Analysis segment __DATA
> analysis section __nl_symbol_ptr
> analysis section __got
> analysis section __la_symbol_ptr
> analysis section __const
> analysis section __cfstring
> analysis section __objc_classlist
> analysis section __objc_nlclslist
> analysis section __objc_catlist
> analysis section __objc_protolist
> analysis section __objc_imageinfo
> analysis section __objc_const
> analysis section __objc_selrefs
> analysis section __objc_protorefs
> analysis section __objc_classrefs
> analysis section __objc_superrefs
> analysis section __objc_ivar
> analysis section __objc_data
> analysis section __data
> analysis section __bss
> analysis section __common
Analysis segment __LINKEDIT
Analysis segment External Symbols
> dataflow analysis of procedures in __TEXT
> dataflow analysis of procedures in __DATA
> dataflow analysis of procedures in __LINKEDIT
> dataflow analysis of procedures in External Symbols
Background analysis ended in 10712ms

显示的是加载和分析的过程。

看到有__swift3_typeref，或许表示此处Mac版Thunder是用Swift写的？

继续看看其他的：

File Information

Calling Convention除了System V外还有Microsoft x64

中间部分解析出的内容：

        ; ================ B E G I N N I N G   O F   P R O C E D U R E ================

        ; Variables:
        ;    var_29: -41
        ;    var_2A: -42
        ;    var_2B: -43
        ;    var_2C: -44
        ;    var_2D: -45
        ;    var_2E: -46
        ;    var_2F: -47
        ;    var_34: -52
        ;    var_40: -64
        ;    var_48: -72
        ;    var_50: -80
        ;    var_58: -88
        ;    var_60: -96
        ;    var_68: -104

从Beginning of procedure感觉是：main函数 入口处

看到了，上面就是_main：

        ; ================ B E G I N N I N G   O F   P R O C E D U R E ================

                     _main:
0000000100049286        push      rbp
0000000100049287        mov        rbp, rsp
000000010004928a        pop        rbp
000000010004928b        jmp        imp___stubs__NSApplicationMain

感觉是：Hopper自动帮我们定位到了main入口所在的位置

从main切换到CTF mode，结果显示的内容，很简单：

没有我希望的：函数调用顺序

不过后来搞懂了：是此处函数本身简单。

换个下面的函数代码段：

切换到CTF mode后，就可以看到希望看到的：调用关系了：

以及右边有Control Flow Graph=控制流程图了

移动后，随时可以看到占整体的比例和位置：

重点再去看看，找找，左边的：

函数列表

Labels

Proc

Strings

继续看看其他的：

点击芯片图标按钮，弹出调试窗口：

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 14:53:56

分析逻辑

Hopper分析Thunder逻辑

对于Thunder迅雷的基本界面：

想要去研究其中对应的精选、搜索、应用之类的内容。

去搜：

search

第一个，看起来就是我们希望的要找的

-[XLRecycleToolbarController clickSearchSubtitleMenu:]:

点击搜索子菜单

-》那顶部的5个：

精选 正在下载 已完成 搜索 应用

就应该叫做 主菜单了

看了看代码：

也看不出什么头绪

十秒逆向九秒猜

再去找 精选

但是不知道英文如何翻译 精选 才能找到

不过想到了，去找类似的

SubtitleMenu

或

XLRecycleToolbarController click

只有其他的一些 但不是我们要的

也没有我们要的

搜：jingxuan，也没有。

再去找找其他的：application

找到：

00000001000c9558        dq        ___CFConstantStringClassReference, 0x7c8, 0x1000b1a88, 0x16 ; "com.xunlei.plugin.page", DATA XREF=___56+[XLHostPageController __XS5H3XA3RXEDCO23XNT2RO4L3LER__]_block_invoke+55
                     cfstring_com_xunlei_plugin_page_applications:
00000001000c9578        dq        ___CFConstantStringClassReference, 0x7c8, 0x1000b1ac7, 0x23 ; "com.xunlei.plugin.page.applications", DATA XREF=-[XLHostPageController plugin:loadSubPluginsForIdentifer:]+100
                     cfstring_Identifier:

-》或许还有其他的

com.xunlei.plugin.page.xxx

?

labels中没找到

不过发现strings中有一些：

不过其中的：

00000001000ab6a4        db        "com.xunlei.embeddedplugin.view.webview", 0 ; DATA XREF=cfstring_com_xunlei_embeddedplugin_view_webview

反推，倒是很可能是此处的：精选

表示用webview 显示 精选内容

那再去搜搜：

com.xunlei.embeddedplugin.view

com.xunlei.embeddedplugin

没有找到其他的

顺带看到一个 Tag Scope

是一个：好像是 内部的类 方法 函数 的列表

另外顺带看看：

Proc=Procedure=进程=函数

Strings

去看看app截图：

有下载未完成 待观看

或许能找到这些字符串？

当然如果加密了，是找不到的。

搜下载：搜不到。

搜未完成=uncomplete：搜到一些

继续：

搜vip：还真能搜到些内容

很明显有些是相关内容：

isVip
vipStatus
vipRank

UserController isVip
UserController vipStatus
UserController vipRank

去看看：伪代码=pseudo code

再去找找String中是否有我们要的重要的内容

可以找到很多isVip相关的内容

有点看起来是：和user用户相关的各种属性

000000010009e96b         db         "nickName", 0                               ; DATA XREF=0x1000cc0d8, 0x1000cc6c0, 0x1000d3120, 0x1000de3b0, 0x1000f5708
000000010009e974         db         "imageUrl", 0                               ; DATA XREF=0x1000d3198, 0x1000f5710
000000010009e983         db         "userName", 0                               ; DATA XREF=0x1000cc120, 0x1000cc708, 0x1000d3138, 0x1000de380, 0x1000f5720

继续找被调用的地方：

找到了几处：

如此，根据需求，继续深入研究，即可慢慢分析出自己要找的逻辑。

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 15:08:47

Hopper心得

Hopper心得

Hopper导出伪代码

poboke/Class-Decompile: Class Decompile is a python script for Hopper Disassembler. This script can export pseudo code of the classes. (github.com)

据说可以导出Hopper的全部伪代码。有空去试试。

没有右键复制，直接快捷键复制

点击了函数，竟然没有直接双击选中并复制的功能

且右键也没有复制：

-》后来发现，其实没有双击和右键复制选择

-》当光标处于某行，直接Control+C就是复制整行内容

常见问题

卡死

Hopper打开太大的二进制，比如：

YouTube的Module_Framework

Aweme的AwemeCore

经常直接卡死，无法正常打开

-》导致无法正常使用。

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 16:07:45

Hopper vs IDA

Hopper vs IDA

Hopper vs IDA

概述

IDA算95分，Hopper算70分

IDA比Hopper强大很多

详解

总体对比

功能对比

IDA：更强大

伪代码：逻辑更清晰

Hopper：功能简洁，基本够用

伪代码：代码逻辑不够清晰

IDA和Hopper类比

Hopper：小工具箱

IDA：各种专业工具的工作室

分项对比

平台支持

Hopper：更倾向于Mac

IDA：支持多平台：Windows、Linux、Mac

功能支持

总体上还是IDA更强大，Hopper相对较弱

不过据说部分细节方面，有些Hopper支持更好？

比如

中文字符搜索

IDA 7.0+：不支持

Hopper：支持

价格

正版IDA比Hopper贵很多很多

IDA Pro：1000+美元

Hopper：~100美元

Hopper vs IDA：反编译代码对比

某同一段代码的反汇编效果对比：

IDA

Hopper

再用BeyondCompare详细对比：

结论：

明显能发现，反编译后的伪代码的效果：

IDA更好，Hooper不够好

再具体的说说细节：

Hopper的ObjC函数调用的写法做了优化，比IDA更易读

IDA

v22 = objc_msgSend(v15, "getApiName");
v23 = objc_retainAutoreleasedReturnValue(v22);

Hopper

r8 = [[r10 getApiName] retain];

但是Hopper的核心代码调用逻辑，没有IDA清楚

IDA

int __cdecl -[LoginAdapter loginWithLoginOption:isForce:extraInfo:completionHandler:cancelationHandler:request:](struct LoginAdapter *self, SEL a2, int a3, char a4, id a5, id a6, id a7, id a8)
...
  if ( !v8->_login_service )
  {
    v18 = 0;
    v19 = v39;
    goto LABEL_27;
  }
...
LABEL_27:
  objc_release(v15);
  objc_release(v13);
  objc_release(v11);
  objc_release(v19);
  return v18;
}

Hopper

int -[LoginAdapter loginWithLoginOption:isForce:extraInfo:completionHandler:cancelationHandler:request:](void * self, void * _cmd, int arg2, char arg3, void * arg4, void * arg5, void * arg6, void * arg7) {
...
loc_2aaf046:
    if (r10 != 0x0) {
            [stack[2052] releasePendingLock];
    }
    r6 = stack[2054];
    goto loc_2aaf060;

loc_2aaf060:
    [r10 release];
    [r11 release];
    [r6 release];
    [r4 release];
    r0 = r5;
    return r0;

...

loc_2aaee0a:
    r5 = 0x0;
    r4 = stack[2053];
    goto loc_2aaf060;
}

后记：

自己在给YouTube恢复符号表之后，发现：

IDA的函数调用，也已经自动为iOS的ObjC做了优化，比如：

IDA

void __cdecl -[MLHAMQueuePlayer setStatus:](MLHAMQueuePlayer *self, SEL a2, signed __int64 a3)
{
  signed __int64 v3; // x19
  MLHAMQueuePlayer *v4; // x21
  signed __int64 v5; // x20
  __int64 v6; // x0

  if ( self->_player )
  {
    v3 = a3;
    v4 = self;
    v5 = self->_playerStatus;
    self->_playerStatus = a3;
    if ( a3 != 7 )
    {
      if ( v5 != 1 || (unsigned __int64)(a3 - 2) >= 3 )
      {
        if ( a3 == 8 && self->_playerError )
        {
          -[MLHAMQueuePlayer failWithError:](self, "failWithError:");
LABEL_11:
          -[HAMEventCenter asyncBroadcastPlayerStatusChangeFromStatus:toStatus:](
            v4->_hamEventCenter,
            "asyncBroadcastPlayerStatusChangeFromStatus:toStatus:",
            v5,
            v3);
          return;
        }
      }
      else
      {
        -[MLHAMQueuePlayer setState:](self, "setState:", 2LL);
      }
      v6 = sub_F91AA8(v3);
      -[MLHAMQueuePlayer setState:](v4, "setState:", v6);
      -[MLHAMQueuePlayer updateForegroundAudioOnlyPlaybackState](v4, "updateForegroundAudioOnlyPlaybackState");
      goto LABEL_11;
    }
  }
}

其中的：

-[MLHAMQueuePlayer failWithError:](self, "failWithError:”);

-[HAMEventCenter asyncBroadcastPlayerStatusChangeFromStatus:toStatus:](
            v4->_hamEventCenter,
            "asyncBroadcastPlayerStatusChangeFromStatus:toStatus:",
            v5,
            v3);

等代码中ObjC函数调用的写法，已经优化为我们希望的效果了：

[ObjcClass function](para1, para2)

即：

IDA中其实也已支持ObjC函数调用的优化的写法了。

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 11:15:10

附录

附录

下面列出相关参考资料。

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 10:00:15

参考资料

参考资料

【整理】iOS逆向工具：IDA和 Hopper 对比

【已解决】用Hopper去静态分析iOS版抖音

【未解决】Mac中用Hopper分析iOS抖音为二进制：找越狱相关内容

【已解决】Mac中下载和安装Hopper Disassembler

【未解决】Mac中安装和破解Hopper Disassembler v4.app

【未解决】Mac中安装Hopper Disassembler破解版

【已解决】Mac中用Hopper Disassembler打开迅雷Thunder

iOS程序逆向Mac下常用工具——Reveal、HopperDisassemble、IDA - 时间已静止 - 博客园

Hopper Alternatives and Similar Software - AlternativeTo.net

IDA Pro反汇编工具初识及逆向工程解密实战 - 知乎 (zhihu.com)

Hopper vs. IDA (wine) on OS X? : ReverseEngineering (reddit.com)

Ghidra vs Cutter vs Radare2 vs IDA : LiveOverflow (reddit.com)

A (completely unfair) comparison between radare2, IDA Pro and Hopper : ReverseEngineering (reddit.com)

RE without IDA? : securityCTF (reddit.com)

Hopper, an IDA-ish disassembler for OSX (it does Windows binaries!) : ReverseEngineering (reddit.com)

Hopper VS IDA - compare differences & reviews? (saashub.com)

tools - Is there any disassembler to rival IDA Pro? - Reverse Engineering Stack Exchange

ARM binary dissasembly, Hopper works, Ghidra and Radare2 don't for some functions - Reverse Engineering Stack Exchange

Reverse engineering and malware analysis tools - Infosec Resources (infosecinstitute.com)

今天开始学逆向：反汇编的利器 IDA 和 Hopper 的基本使用 - iOS开发 - 开发语言与工具 - 深度开源 (open-open.com)

今天开始学逆向：反汇编的利器 IDA 和 Hopper 的基本使用 (daimajiaoliu.com)

逆向工程 - Reveal、IDA、Hopper、HTTPS抓包 等 - 大河_大河 - 博客园 (cnblogs.com)

Objective-C语言的逆向(Mac OS) - 知乎 (zhihu.com)

利用Hopper Disassembler和IDA Pro修改函数返回值_普通网友的博客-CSDN博客_ida修改函数返回值

IDA Pro - 如何得到比较清楚的逆向伪代码 - 码上快乐 (codeprj.com)

hopper逆向的伪代码令人大跌眼镜 - 码上快乐 (codeprj.com)

iOS逆向之砸壳原理 - 掘金 (juejin.cn)

iOS逆向学习（一）基础 | BenArvin's blog (benarvintec.com)

TikTok(抖音国际版)逆向，全球的小姐姐们，我来啦！ - 尚码园 (shangmayuan.com)

iOS SSL Certificate Pinning: Prevent Bypassing | Guardsquare

iOS底层原理班（上）/APP逆向实战/加壳脱壳/数据安全/编译原理-学习视频教程-腾讯课堂 (qq.com)

iOS 崩溃分析 - 掘金 (juejin.cn)

ios(越狱) 应用脱壳反编译hook教程 (系统ios11.3.1) - 掘金 (juejin.cn)

十 iOS逆向- hopper disassembler - 简书 (jianshu.com)

飘云阁-PYG|软件安全|破解软件|内购破解|移动安全|chinapyg.com - Powered by Discuz!

飘云阁安全论坛的微博_微博

[原创]破解Hopper Disassembler v3.7.8 for mac的艰难历程-『iOS安全』-看雪安全论坛

iOS逆向指南：静态分析 | 黑超熊猫zuik's blog

最简单的Hopper Disassembler玩转Mac逆向 - 简书

逆向破解MacOS App - 简书

Mac OSX 之自己动手初步学习破解软件入门 - 简书

Hopper 系列教程之入门 CrackMe 分析 | ＊tree_fly 's Blog

写给 iOS 开发者的 Hopper + lldb 简介 - OneAPM 博客

发现iOS SDK的Bug - Hopper使用教程向 | 小猪的博客

iOS 13.1.3 Runtime Headers

动态调试及LLDB技巧集合_TuGeLe的博客-CSDN博客_lldb

【求问】Hopper每个方法的blocks和size怎么算的？ - 技能讨论 - 睿论坛 (iosre.com)

ios逆向工具Hopper Disassembler的基本使用功能整理(持续更新)_小手琴师的博客-CSDN博客

iOS逆向之Reveal、Hopper、MachOView等逆向工具的安装使用 - 简书 (jianshu.com)

3.8 Hopper: 另一款反汇编工具 | iOS 安全 Wiki (gitbooks.io)

十 iOS逆向- hopper disassembler - 简书 (jianshu.com)

iOS小技能：逆向工具hopper的使用 - 掘金 (juejin.cn)

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-08 16:03:19