• iOS 逆向


    iOS攻防:class-dump 与 Dumpdecrypted 使用

    1 class dump

    class dump 是一个用于检查保存在 Mach-O 文件中的 objective-c 运行时信息的工具,攻防中最常用、实用的命令行工具。

    1.1 class dump 好玩在哪?

    class dump 绝对可以满足你的好奇心。你可以通过 class dump :

    1. 查看闭源的应用、frameworks、bundles。
    2. 对比一个 APP 不同版本之间的接口变化。
    3. 对一些私有 frameworks 做些有趣的试验。

    1.2 Download

    当前版本: 3.5 (64 bit Intel)
    需要 Mac OS X 10.8 或更高版本

    class-dump-3.5.dmg
    class-dump-3.5.tar.gz
    class-dump-3.5.tar.bz2

    1.3 Use

    下载好后,双击dmg文件,将其中的 class-dump 文件放到/usr/local/sbin 目录下,然后就可以在命令行中使用了。

    blog_iOSclassdump01

    官方用法指南:

    简单的举例:

    /Applications/Calculator.app 是 Mac 上计算器应用的路径。
    ~/Desktop/dump/Calculate-dump 是指定的存放 dump 出来头文件的文件夹路径。

    执行完成后可以看到指定的保存目录下已经有 dump 出来的头文件了:

    blog_iOSclassdump02

    打开一个 .h 文件可以看到相应内容:

    blog_iOSclassdump03

    2 Dumpdecrypted

    class dump 虽然能帮你解析出一个 app 的头文件,但是对于 App Store 下载的 App 都是通过苹果的一层签名加密,通常我们成为『加壳』。对于已经加壳的 APP,解析后的效果就和加了代码混淆类似。

    比如直接去 dump 微信,出来的结果大概是这样:

    blog_iOSclass dump04

    2.1 Download

    dumpdecrypted GitHub 地址

    2.2 Install

    Dumpdecrypted 比另一个砸壳工具 Clutch 要难用的多。但由于 Clutch 无法砸开含有兼容 WatchOs
    2 的 App,所以只能使用 Dumpdecrypted。

    下载后打开 Makefile 文件,注意第三行:

    这里填写的 SDK 必须与你越狱的 iPhone 系统等级一致,你可以这样查看你 MAC 的 SDK :

    输出:

    而我的手机是 7.0 的,所以只能去这里下载对应的 SDK。

    Makefile 所有需要填写的填好后:

    在当前目录下生成 dumpdecrypted.dylib 文件。

    如果你觉得很麻烦,可以直接来这里或者这里下载。

    2.3 Use

    将 dumpdecrypted.dylib 放到需要砸壳 app 的 Documents 下。

    查找微信的 Documents:

    得到路径:

    scp 传输:

    砸壳:

    注意 DYLD_INSERT_LIBRARIES= 后填写的是你刚刚传输的 .dylib 文件名,我的是 dumpdecrypted_7.dylib

    砸壳成功:

    ls 查看 Documents 中文件多了一个 WeChat.decrypted,这就是砸壳过后的文件,scp出来:

    3 class dump 砸壳后的文件

    上一步我们得到了 WeChat.decrypted,现在可以对其进行 dump:

    –arch armv7 是指定架构,dumpdecrypted 只会砸你手机处理器对应的那个壳,fat binary 的其它部分仍然是有壳的,而 class-dump 的默认目标又不是被砸壳的那个部分,如果不指定架构只能导出 CDStructures.h 一个文件

    现在就可以看到 dump 后是明文的了:

    blog_iOSclassdump05

    4 Learn More

    当你能看到 .h 文件时候,意味着你知道了这个应用程序的各种接口,除了学习别人的优雅代码之外,显然也也可以做一些更有意思的事情,通过一些猜想和试验,我们可以去尝试做一个微信的插件。

    下一次iOS攻防将会介绍动态库的注入和微信插件的制作~

    如果您感兴趣~请点击下方打赏支持萌妹子的原创哟~


    有什么问题都可以在博文后面留言,或者微博上私信我,或者邮件我coderfish@163.com

    博主主要写 java 和 iOS 的。

    希望大家一起进步。

    CSDN: CSDN博客地址

    我的微博:小鱼周凌宇

    do or nothing
  • 相关阅读:
    python 多进程-03 进程池
    python 多进程-02 进程间数据共享
    python 多进程-01 基本使用
    python 多线程-02 线程池
    开发者入驻
    小程序组件 scroll-view 下拉加载更多,触底触发事件,容器高度设置
    Array.from在360浏览器和IE浏览器兼容问题
    获取cookie
    背景图左右居中
    uniapp使用uni.setStorageAsync刷新页面数据丢失问题
  • 原文地址:https://www.cnblogs.com/LYW1993-1024/p/8258755.html
Copyright © 2020-2023  润新知