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

进行逆向时,经常需要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.hqwc.cn/news/236727.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做外贸价格差也有等级

最近无意中看到一句话&#xff0c;挺有感触的&#xff0c;分享给大家&#xff0c;或许我们在谈客户的时候可以用到或者是作为评判的标准来对客户进行一定的定位。 差价2%&#xff0c;可能因为服务 差价5%&#xff0c;应该因为工艺 差价10%&#xff0c;肯定是因为材料 差价2…

设计模式---第二篇

系列文章目录 文章目录 系列文章目录前言一、抽象工厂模式二、装饰器模式是什么三、代理模式和装饰器模式有什么区别前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。…

电子学会C/C++编程等级考试2021年03月(四级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:酒鬼 Santo刚刚与房东打赌赢得了一间在New Clondike 的大客厅。今天,他来到这个大客厅欣赏他的奖品。房东摆出了一行瓶子在酒吧上。瓶子里都装有不同体积的酒。令Santo高兴的是,瓶子中的酒都有不同的味道。房东说道:“你可以…

1572. 矩阵对角线元素的和 23.11.25

给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&#xff1a; 输入&#xff1a;mat [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;25 解释&#xff1a;对角线的和为&#xff…

晨曦记账本:轻松批量记录收支明细,智能统计当天开销!

你是否曾经因为繁琐的记账过程而感到烦恼&#xff1f;每次消费后都要手动记录&#xff0c;不仅费时费力&#xff0c;还容易出错。现在&#xff0c;一款名为晨曦记账本的工具&#xff0c;将为你解决这一难题。 第一步&#xff0c;首先&#xff0c;我们要先进入【晨曦记账本】主页…

Python自动查重:原理、方法与实践

Python自动查重&#xff1a;原理、方法与实践 什么是自动查重&#xff1f; 自动查重是指使用计算机程序来比较两个或多个文件的内容&#xff0c;判断它们之间是否存在相似或相同的部分&#xff0c;从而检测出抄袭或重复的情况。自动查重可以用于学术论文、代码、文本等各种类…

最佳软件配置管理工具(16款SCM工具)

配置管理&#xff08;CM&#xff09;是一种系统工程方法&#xff0c;用于在产品的整个生命周期内建立和维持产品的性能&#xff0c;功能和物理属性与其设计&#xff0c;要求和操作信息的一致性。 它们为您的组织带来了成本效益和更好的时间管理。 当今市场充斥着各种配置管理工…

jmeter做接口自动化测试,你可能只是个新手!

jmeter 这个工具既可以做接口的功能测试&#xff0c;也可以做自动化测试&#xff0c;还可以做性能测试&#xff0c;其主要用途就是用于性能测试。但是&#xff0c;有些公司和个人&#xff0c;就想用 jmeter 来做接口自动化测试。你有没有想过呢&#xff1f;下面我就给大家讲讲&…

简化版Transformer :Simplifying Transformer Block论文详解

在这篇文章中我将深入探讨来自苏黎世联邦理工学院计算机科学系的Bobby He和Thomas Hofmann在他们的论文“Simplifying Transformer Blocks”中介绍的Transformer技术的进化步骤。这是自Transformer 开始以来&#xff0c;我看到的最好的改进。 大型语言模型(llm)可以通过各种扩展…

单片机学习12——电容

电容的作用&#xff1a; 1&#xff09;降压作用&#xff1a; 容抗&#xff1a; Xc 1/2fc 串联分压原理。2100Ω的容量&#xff0c;50Hz的频率&#xff0c;可以得到1.5uF。断电之后&#xff0c;需要串联一个1MΩ的电阻放电。 那是不是可以使用2100欧姆的电阻来代替电容呢&am…

GAN:WGAN前作

WGAN前作&#xff1a;有原则的方法来训练GANs 论文&#xff1a;https://arxiv.org/abs/1701.04862 发表&#xff1a;ICLR 2017 本文是wgan三部曲的第一部。文中并没有引入新的算法&#xff0c;而是标是朝着完全理解生成对抗网络的训练动态过程迈进理论性的一步。 文中基本是…

这篇文章绝了!!现在都在“卷”统计学方法了吗?

欢迎参加郑老师2023年孟德尔随机化课程 发表文章后退款&#xff01;孟德尔随机化方法快速撰写SCI论文” 这些年&#xff0c;公共数据库的文章越发越多&#xff0c;也越来越难发。 现在获取公共数据库的门槛也越来越低&#xff0c;现在想发好文章&#xff0c;除了idea要好&…