iOS安全攻防之反编译
之前做代码混淆, 首先了解了下反编译,使用入门级的反编译 class-dump.下载地址:最新版Class-dump.
首先需要注意的是,class-dump的作用对象必须是未经加密的可执行文件,而从App Store下载的App都是经过加密签名的,相当于有一层“壳”,class-dump应付不了这样的文件。一般要先用AppCrackr来砸壳,砸壳方式在这里不做介绍。有一个简单的方法,在一些第三方软件下载应用的越狱安装版,这样版本的壳已经被手动砸开了.
在安装过程中,双击.dmg 文件,把里面的 可执行文件 class-dump 拷贝到 /usr/bin 目录下才可以。(PS:若无法拷贝,请自行百度解决方案)
检查是否安装成功需要在 Terminal 中输入指令"class-dump",若安装失败会提示 command not found;成功的会会提示:

使用方法:
Terminal输入 "class-dump -H xxx.app(需要反编译的) -o dir(反编译的文件的生成目录)"
class-dump -H /Users/zhangtibin/Library/Developer/Xcode/DerivedData/TestClassDump-fvzusamyzxinyfeapjhdhynfqawf/Build/Products/Debug-iphonesimulator/TestClassDump.app -o /Users/zhangtibin/Documents/TestC
最终看到结果:

会把方法名反编译出来:
//
// Generated by class-dump 3.5 (64 bit).
//
// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
// #import "UIViewController.h" @interface ViewController : UIViewController
{
} - (void)testAction;
- (void)didReceiveMemoryWarning;
- (void)viewDidLoad; @end
另外其他显示信息如下:
2、显示变量偏移:-a。如:
偏移将会以注释的方式给出,如不加-a选项,则无此注释。
3、显示函数地址:-A。如:
函数地址将以注释的方式给出,如不加-A选项,则无此注释。
此地址到底是FileOffset、VA、RVA?还需验证。
4、方法按字母序排列:-S。
静态方法,成员方法,属性均按字母序排列。
5、查看Mach-O适应的CPU架构:--list-arches。例如输出armv7。
iOS安全攻防之反编译的更多相关文章
- iOS 代码安全加固--反编译和代码混淆
一.class-dump反编译 1.将打包的ipa反编译下,.ipa改成.zip,并解压 6.右击—显示包内容,找到如下有个白框黑底的 7.将其复制到桌面xx文件夹中,在终端中输入相关命令 cd 进 ...
- iOS安全——代码混淆&反编译
本文是初步了解和集成网上的相关反编译博客, 并做公司内部技术人员分享研讨PPT.
- iOS app反编译
对于APP store 上的应用都是加密的了,反编译起来有难度. 对于自己用xcode 编译的ipa 或者是其他渠道下载的ipa包都可以使用反编译工具进行反编译. https://cnbin.gith ...
- 攻防世界-crypto-easychallenge(.pyc反编译)
进入题目后下载附件,发现是一个.pyc文件. pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,运行加载的速度会有所提高:另一反面,把py ...
- IOS抓取与反抓取
目录 IOS抓取基础知识 IOS抓取方式 iOS破解 模拟器 黑雷苹果模拟器 介绍 局限 改机软件 常用改机软件 检测 可更改属性 注入与Hook(越狱下实现作弊) 注入方式 Hook方式 重打包(非 ...
- Android安全攻防战,反编译与混淆技术完全解析(下)
在上一篇文章当中,我们学习了Android程序反编译方面的知识,包括反编译代码.反编译资源.以及重新打包等内容.通过这些内容我们也能看出来,其实我们的程序并没有那么的安全.可能资源被反编译影响还不是很 ...
- DotNet 资源大全中文版,内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、IDE、日志、风格指南等
DotNet 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-dotnet 是由 quozd 发起和维护.内容包括:编译器. ...
- [反编译U3D]Decompile Unity Resources
工具说明 反编译unity project资源文件,包括ios,android,pc等平台资源,仅供学习使用! 以下工具任选其一,未有特殊说明是可以同时提取unity3.x,unity4.x,unit ...
- 手把手教你反编译别人的app
虽然iOS系统相比于其他手机操作系统相对安全,但是这个安全并不是绝对的,我一直相信,道高一尺魔高一丈.此文想以实际例子出发,告诉大家,如何去反编译一个app,并且从某个角度来说,iOS没有传说中的“安 ...
随机推荐
- React组件实现越级传递属性
如果有这样一个结构:三级嵌套,分别是:一级父组件.二级子组件.三级孙子组件,且前者包含后者,结构如图: 如果把一个属性,比如color,从一级传递给三级,一般做法是使用props逐一向下传递,代码如下 ...
- 解决EditText不能撑满全屏的问题及EditText你应该知道的属性
一般我们要实现去下图一的效果很简单: 两个EditText就搞定 效果图一: 但是我们想让第二个EditText撑满剩余空间怎么做?如效果图二 效果图二: 解决: 使用了ScrollView嵌套L ...
- 探讨弹性布局Flexible Box
虽然Flex布局09年就被W3C所提出,但是目前浏览器支持上还不是很好,网上找的一张图片,仅供参考: 我们先从简单讲起.如果仅仅只想实现一个栅格布局,没必要引入一个复杂的框架(如bootstrap), ...
- reids数据类型
今天第一次开通,写的不好,请谅解 redis并不是简单的key-value存储,实际上它是一个数据结构服务器,支持不同类型的值,也就是说,我们不仅仅把字符串当作键所指向的值, 如下这些数据 ...
- 【割点】【割边】tarjan
洛谷割点模板题--传送门 割边:在连通图中,删除了连通图的某条边后,图不再连通.这样的边被称为割边,也叫做桥.割点:在连通图中,删除了连通图的某个点以及与这个点相连的边后,图不再连通.这样的点被称为割 ...
- 浅谈MVC页面之间参数传递
关于MVC页面之间的传值,有多种方式,下面,我们就Html.RenderAction 方式 和 Html.RenderPartial 方式 来给大家分享一下有什么不同. 一.Html.RenderAc ...
- EF 关联数据查询
1 直接使用表对应的实例属性值 ,如本例中的RoleUserInfo的属性UserInfo IEnumerable <RoleUserInfo > roleUserInfos= db.Ro ...
- dispatch_group_t 日常使用注意事项
一.背景简介平时在进行多线程处理任务时,有时候希望多个任务之间存在着一种联系,希望在所有的任务执行完后做一些总结性处理.那么就可以将多个任务放在一个任务组中进行统一管理.dispatch提供了相应的A ...
- java构造代码块,构造函数和普通函数的区别和调用时间
在这里我们谈论一下构造代码块,构造函数和普通函数的区别和调用时间.构造代码块:最早运行,比构造函数运行的时间好要提前,和构造函数一样,只在对象初始化的时候运行.构造函数:运行时间比构造代码块时间晚,也 ...
- 某次模拟考试day2t3 菊菊的数据结构
[题目描述] 菊菊是一个码农,他很喜欢码一些高(e)级(xin)数据结构. 有一天,菊菊在打网赛时遇到了 wfj.wfj 觉得他很有前途,可以做下一代码农大神. 于是乎,wfj 给菊菊出了一道题,来检 ...