class-dump 混淆加固、保护与优化原理

news2024/11/18 13:43:17

进行逆向时,经常需要dump可执行文件的头文件,用以确定类信息和方法信息,为hook相关方法提供更加详细的数据.class-dump的主要用于检查存储在Mach O文件的Objective-C中的运行时信息,为类,类别和协议生成声明信息,与

tool -ov命令产生的信息相同,不同的是class-dump会将这些信息Objective-C声明形式提供,更加紧凑易读.

安装class-dump是一个命令行工具,可以直接在class-dump官网进行下载解压.然后将可执行文件class-dump文件复制到对应的目录下即可在全局使用.由于Mac OS在10.11之后的版本中,对于/usr/bin目录的写入权限进行了限制,所以在Mac OS10.11之前,可以将class-dump文件放在/usr/bin目录下,在Mac OS10.11之后,可以将class-dump文件放在/usr/local/bin目录下.(也可以更改/usr/bin目录的操作权限但是不建议使用)使用基本使用格式

class-dump [options] <mach-o-file>

Usage: class-dump [options] <mach-o-file>
 
  where options are:
        -a             show instance variable offsets
        -A             show implementation addresses
        --arch <arch>  choose a specific architecture from a universal binary (ppc, ppc64, i386, x86_64, armv6, armv7, armv7s, arm64)
        -C <regex>     only display classes matching regular expression
        -f <str>       find string in method name
        -H             generate header files in current directory, or directory specified with -o
        -I             sort classes, categories, and protocols by inheritance (overrides -s)
        -o <dir>       output directory used for -H
        -r             recursively expand frameworks and fixed VM shared libraries
        -s             sort classes and categories by name
        -S             sort methods by name
        -t             suppress header in output, for testing
        --list-arches  list the arches in the file, then exit
        --sdk-ios      specify iOS SDK version (will look in /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS<version>.sdk
        --sdk-mac      specify Mac OS X version (will look in /Developer/SDKs/MacOSX<version>.sdk
        --sdk-root     specify the full SDK root path (or use --sdk-ios/--sdk-mac for a shortcut)

-a:使用该选项显示变量的偏移量(会在变量后边以注释方式标注变量的位置偏移);-A:使用该选项显示方法实现的地址;--arch:可以从通用二进制文件中选择指定的架构进行dump;-C:通过正则表达式匹配需要展示的类;-f:在方法名中查找字符串;-H:在当前路径中生成头文件文件或者通过-o指定生成头文件的路径;-I:通过继承对类 ,分类和协议进行排序(覆盖-s实现);-o:与-H配对使用,指定头文件的存放路径;-r:递归扩展框架和固定的vm共享库;-s:通过类名对类和分类进行排序;-S:通过方法名对方法进行排序-t:抑制输出中的标头,以进行测试;--list-arches:列出可执行文件支持的架构,然后退出;--sdk-ios:指定iOS SDK的版本;--sdk-root:指定完整的SDK全路径.常用命令以下命令中:{excutableFileName}指代.app文件

class-dump最常用的命令就是输出头文件到指定目录:

class-dump -H {excutableFileName} -o {destinationDirectory}

还可以指定通过类名进行排序参数等

class-dump -s -H {excutableFileName} -o {destinationDirectory}

查看可执行文件的架构:

class-dump --list-arches {executableFile}

查看包含特定字符串的方法:

class-dump -f {specifyString}  {ececutableFile}

二、使用

class-dump在dump从appstore上下载下来的app的时候,首先是需要对app进行砸壳处理的,具体的砸壳工具是ipaguard、clutch等等。

以ipaguar为例,

 使用ipaguard来对程序进行加固

代码加固是进一步保护应用的一种方式,通常通过特定平台来对应用进行加固处理。

这边以ipaguard为例,目前还在免费阶段,想薅羊毛的快快试试。

Ipa Guard是一款功能强大的ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密。可对IOS ipa 文件的代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加ipa破解反编译难度。可以对图片,资源,配置等进行修改名称,修改md5。只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app。

所以就要使用到混淆器,混淆器是把里面的代码变量等信息进行重命名,这样可读性会变得非常差,接着,

到这里,我们完成了对代码的混淆,但是还没有进行加固,防止反编译,所以,请往下看

然后导入自己的包就可以了,这里是流水式的走下来,所以只需要导入和导出就可以了,

添加单个文件,选择好刚刚混淆后的包,然后你做的事情就是等,等待上传完--加固完--下载完--已完成,当到已完成的时候,说明这里已经可以导出了,导出需要前面提到的自己创建的签名,这里可是会用到的,如果不用,则包安装包可能会出现问题

选择导出签名包,选择签名文件,输入密码,然后点击开始导出

导出的包是经过混淆,经过加固比较安全的包了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1276309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

熬夜会秃头——beta冲刺Day3

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标记录beta冲刺Day3团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 目录 一、团队成员会议总结 1、成员…

shareMouse 使用中遇到的问题

一、shareMouse 使用中遇到的问题 1、鼠标不能移动到另一个显示器 明明是两个显示器&#xff0c;但是 只显示一个&#xff0c;鼠标也不能移到另一个显示器上 后来&#xff0c; 设置了 wrap mouse pointer around display就好了&#xff0c;虽然还是显示一个显示器&#xff0c…

012 OpenCV sobel边缘检测

目录 一、环境 二、soble原理介绍 三、源码实验 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、soble原理介绍 Sobel边缘检测是一种广泛应用于图像处理领域的边缘检测算法&#xff0c;它通过计算图像灰度函数在水平方向和垂直…

关于加强型葡萄酒的类型有哪些?

加强型葡萄酒指的是在酿造过程中或酿造完后&#xff0c;添加酒精提高葡萄酒酒精度的葡萄酒&#xff0c;一般加强型葡萄酒的酒精度数都能达到15度以上。那么&#xff0c;云仓酒庄的品牌雷盛红酒分享加强型葡萄酒的类型有哪些呢&#xff1f; 云仓酒庄多品牌多代言运营模式&#…

光伏开发过程中如何准确的进行测绘和设计?

光伏开发过程中&#xff0c;测绘和设计是至关重要的环节。准确的测绘和设计能够确保光伏项目的顺利实施&#xff0c;提高能源转换效率&#xff0c;降低 成本&#xff0c;同时也有利于环境保护。那么&#xff0c;如何准确地进行测绘和设计呢&#xff1f; 首先&#xff0c;要进行…

fastmock如何判断头信息headers中的属性值

fastmock可以快速提供后端接口的ajax服务。 那么&#xff0c;如何判断头信息headers中的属性值呢&#xff1f; 可以通过function中的参数_req可以获得headers中的属性值&#xff0c;比如 User-Agent&#xff0c;由于User-Agent属性带有特殊符号&#xff0c;因此使用[]方式而不…

ChatGPT 问世一周年之际,开源大模型能否迎头赶上?

就在11月30日&#xff0c;ChatGPT 迎来了它的问世一周年&#xff0c;这个来自 OpenAI 的强大AI在过去一年里取得了巨大的发展&#xff0c;迅速吸引各个领域的用户群体。 我们首先回忆一下 OpenAI和ChatGPT这一年的大事记&#xff08;表格由ChatGPT辅助生成&#xff09;&#x…

前端下拉框select标签的插件——select2.js

本文采用的是select2 版本:Select2 4.0.6-rc.1。 可以兼容IE8及以上。亲测过。 官网:Getting Started | Select2 - The jQuery replacement for select boxes 一、认识select2.js 1、使用插件,首先要引入别人的插件了,你可以选择离线(无网络)或者在线引用的(如果有网…

跨越鸿沟-颠覆性产品营销指南笔记

跨越鸿沟-颠覆性产品营销指南笔记 一、发现鸿沟 一、技术采用生命周期 技术采用生命周期 如果采用一个新产品&#xff0c;我们就得改变一贯的行为模式&#xff0c;或者改变我们依赖的其他产品或服务&#xff0c;那么&#xff0c;我们对技术采用的态度就变得很重要&#xff0c…

【Cisco Packet Tracer】交换机 学习/更新/泛洪/VLAN实验

交换机的功能是连接计算机、服务器、网络打印机、网络摄像头、IP电话等终端设备&#xff0c;并实现与其它交换机、无线接入点、路由器、网络防火墙等网络设备的互联&#xff0c;从而构建局域网络&#xff0c;实现所有设备之间的通信。 本文使用Cisco Packet Tracer仿真软件&…

数据结构与算法之美学习笔记:29 | 堆的应用:如何快速获取到Top 10最热门的搜索关键词?

目录 前言堆的应用一&#xff1a;优先级队列堆的应用二&#xff1a;利用堆求 Top K堆的应用三&#xff1a;利用堆求中位数解答开篇内容小结 前言 本节课程思维导图&#xff1a; 搜索引擎的热门搜索排行榜功能你用过吗&#xff1f;搜索引擎每天会接收大量的用户搜索请求&#x…

STM32内部温度传感器使用方法详解

STM32内部温度传感器使用方法详解 前言 STM32内部集成了一个片上温度传感器&#xff0c;可以用来测量MCU及周围的温度。测量范围&#xff1a;-40~125&#xff0c;精度1.5℃。虽然精度不高&#xff0c;但在某些应用场景下是够了的&#xff0c;相比于外部接入传感器&#xff0c…

HarmonyOS ArkTS与c++交互通信

一、创建Native C Module 1、右键项目->new->module 如图&#xff1a; 2、修改build-profile.json5配置 "externalNativeOptions": {"path": "./src/main/cpp/CMakeLists.txt","arguments": "-v -DOHOS_STLc_shared&quo…

集成开发环境 PyCharm 的安装【侯小啾python领航班系列(二)】

集成开发环境PyCharm的安装【侯小啾python领航计划系列(二)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

【EMFace】《EMface: Detecting Hard Faces by Exploring Receptive Field Pyramids》

arXiv-2021 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method5 Experiments5.1 Datasets and Metrics5.2 Ablation Study5.3 Comparison with State-of-the-Arts 6 Conclusion&#xff08;own&#xff09; 1 Background and Motivatio…

flutter-一个可以输入的数字增减器

效果 参考文章 代码 在参考文章上边&#xff0c;主要是改了一下样式&#xff0c;逻辑也比较清楚&#xff0c;对左右两边添加增减方法。 我在此基础上加了_numcontroller 输入框的监听。 加了数字输入框的控制 keyboardType: TextInputType.number, //设置键盘为数字 inputF…

MySQL 基础、进阶、运维的学习笔记

1. MySQL 基础篇 1.1 MySQL 概述 1.1.1 数据库相关概念 数据库(Database, 简称 DB): 存储数据的仓库&#xff0c;数据是有组织的进行存储。 数据库管理系统(Database Management System, 简称 DBMS): 操作和管理数据库的大型软件。 SQL(Structured Query Language, 简称 S…

高并发下缓存失效问题-缓存穿透、缓存击穿、缓存雪崩、Redis分布式锁简单实现、Redisson实现分布式锁

文章目录 缓存基本使用范式暴露的几个问题缓存失效问题---缓存穿透缓存失效问题---缓存击穿一、单机锁正确的锁粒度不正确的锁粒度无法保证查询数据库次数是唯一 二、分布式锁getCatalogJsonData()分布式锁演进---基本原理分布式锁(加锁)演进一&#xff1a;删锁失败导致死锁分布…

『IDEA』代码热部署和热加载

前言 在日常开发中&#xff0c;我们需要经常修改 Java 代码&#xff0c;手动重启项目&#xff0c;查看修改后的效果。如果在项目小时&#xff0c;重启速度比较快&#xff0c;等待的时间是较短的。但是随着项目逐渐变大&#xff0c;重启的速度变慢&#xff0c;等待时间 1-2 min…

第一届云南大学CTF校赛YNUCTF-PWN提示(hint)

文章目录 easy-ikun四种方法 black_ikunsyscall-ikunikun-runner_记第一次校赛出题如何运行服务器?保存镜像 easy-ikun s[i:j] 表示获取a[i]到a[j-1] s[:-1]去掉最后一个字符 s[:-n]去掉最后n个字符 s[-2:]取最后两个字符 s[i:j:k]这种格式呢&#xff0c;i,j与上面的一样&…