iOS 初探代码混淆(OC)】的更多相关文章

iOS 初探代码混淆(OC) 前言 自己做iOS开发也有几年的时间了,平时做完项目基本就直接打包上传到Appstore上,然后做上架操作了.但是最近,客户方面提出了代码安全的要求.说是要做代码混淆,这方面的工作之前从来没有接触过.然后就上网查了一下,原来有很多应用程序都做了代码混淆.看来是我固步自封了...... 起因 使用classdump对原程序进行dump,可以dump出所有源程序的函数所有信息:源程序所有函数类型,变量全部泄露.这样的话,让攻击者,也就是黑客们了解了程序结构方便逆向.因为…
之前在越狱手机里找到<永恒战士3>的程序发现是用Unity做的,拷出资源出来看的时候发现里面有游戏程序集,立马抽出来反编译了一下,发现里面的代码只有方法签名,没有方法体,还以为用什么高端混淆工具做的,后来问了Unity技术支持后了解到,发布iOS平台后,dll只会留着方法签名部分,具体实现都已经转成native code,要破解比较困难,太好了,妈妈再也不用担心以后发布iOS平台代码被破解了! 补充:要实现去掉方法体还需要设置一下,在Player Settings里Other Settings…
该方法只能针对有.m.h的类进行混淆,静态库等只有.h文件的没法进行混淆 代码混淆,刚刚看到是不是有点懵逼,反正我是最近才接触到这么个东西,因为之前对于代码和APP,只需要实现功能就好了,根本没有考虑什么安全问题. 而这一次应用交付时,客户进行安全评估提出一个问题: 使用classdump对原程序进行dump,可以dump出所有源程序的函数所有信息:源程序所有函数类型,变量全部泄露.这样的话,让攻击者,也就是黑客们了解了程序结构方便逆向. 因为在工程中,我们这些变量或函数命名都是有一定可读性的,…
本文是初步了解和集成网上的相关反编译博客, 并做公司内部技术人员分享研讨PPT.…
首先请参看一篇文章,作者写的很明白,请参看原地址 http://blog.163.com/m_note/blog/static/208197045201293015844274/. 其实,oc和js的交互涉及的就是UIWebview的2个最主要的方法,stringByEvaluatingJavaScriptFromString: 和- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)req…
iOS安全攻防(二十三):Objective-C代码混淆 class-dump能够非常方便的导出程序头文件,不仅让攻击者了解了程序结构方便逆向,还让着急赶进度时写出的欠完好的程序给同行留下笑柄. 所以,我们迫切的希望混淆自己的代码. 混淆的常规思路 混淆分很多思路,比方: 1)花代码花指令,即任意往程序中加入迷惑人的代码指令 2)易读字符替换 等等 防止class-dump出可读信息的有效办法是易读字符替换. Objective-C的方法名混淆 混淆的时机 我们希望在开发时一直保留清晰可读的程序…
iOS 代码安全之代码混淆实践: 前言: 在8月份的时候写了个关于 class-dump 反编译的文章(使用 Class-dump 反编译),利用 class-dump 工具可以反编译出工程的头文件,这样很方便"坏人"了解工程代码结构,参数传输,严重危及了应用安全.为了应对反编译,需要对工程进行"代码混淆". 正文: 首先在工程目录下新建个存放反编译文件的文件夹,然后拖进工程. 在 Config 文件目录下新建 .sh 和 .list 文件. 拖进工程. 添加 编译…
一般做了防调试的话,被调试进程会退出的,是防动态分析措施. 代码混淆加花这些是防静态分析措施. 反调试是防动态分析措施. 混淆的方法方法名混淆其实就是字符串替换,有2个方法可以,一个是#define,一个是利用tops.利用#define的方法有一个好处,就是可以把混淆结果合并在一个.h中,在工程Prefix.pch的最前面#import这个.h.不导入也可以编译.导入则实现混淆. 单段的selector,如func: ,可以通过#define func 来实现字符串替换.多段的selector…
一.class-dump反编译 1.将打包的ipa反编译下,.ipa改成.zip,并解压 6.右击—显示包内容,找到如下有个白框黑底的  7.将其复制到桌面xx文件夹中,在终端中输入相关命令 cd 进入xx文件夹 class-dump -H  二进制文件名字 然后在tt文件中就可以看到多出的很多.h文件 二.ios代码混淆 1.在项目的Resource文件夹中新建 脚本文件:confuse.sh, 宏定义文件:codeObfuscation.h, 函数列表文件:func.list, 头文件:Pr…
该方法只能针对有.m.h的类进行混淆,静态库等只有.h文件的没法进行混淆 代码混淆,刚刚看到是不是有点懵逼,反正我是最近才接触到这么个东西,因为之前对于代码和APP,只需要实现功能就好了,根本没有考虑什么安全问题. 而这一次应用交付时,客户进行安全评估提出一个问题: 使用classdump对原程序进行dump,可以dump出所有源程序的函数所有信息:源程序所有函数类型,变量全部泄露.这样的话,让攻击者,也就是黑客们了解了程序结构方便逆向. 因为在工程中,我们这些变量或函数命名都是有一定可读性的,…
好久没写博客了,之前还打算把毕业设计中涉及到的两个算法拿出来说说(脸型分析 + 声音分析),博文都写了一半了,后来实在太忙了,那篇随笔也就沉在草稿列表中没动过. 我原先是专职 .net 开发的,在公司负责的项目是内部自用的销售管理系统,由于不需要出去"抛头露脸",所以公司干脆什么也没配置(指产品.设计.前端等等,开发设备还是有的),于是所有工作全包了.原本对自身的计划是,后续会慢慢转产品方面的. 后来,也算是一个契机,公司所有移动端的人基本走光了(iOS 全走了,Android 的好像…
上一篇文章介绍了UIWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用,这一篇来介绍一下WKWebView 又是如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用的.WKWebView 下使用WebViewJavascriptBridge与UIWebView 大同小异.主要是示例化的类不一样,一些与webView 相关的API调用不一样罢了. WKWebView 下使用WebViewJavascriptBri…
WebViewJavascriptBridge是一个有点年代的JS与OC交互的库,使用该库的著名应用还挺多的,目前这个库有7000+star.我去翻看了它的第一版本已经是4年前了,在版本V4.1.4以及之前,该库只有一个类和一个js 的txt文件,所以旧版本的WebViewJavascriptBridge 是非常容易理解的.而最新版的WebViewJavascriptBridge因为也要兼容WKWebView,所以里面也加入了两个新的类,一开始看的时候,会被它里面负责的逻辑吓到,其实仔细越多是非…
前面讲完拦截URL的方式实现JS与OC互相调用,终于到JavaScriptCore了.它是从iOS7开始加入的,用 Objective-C 把 WebKit 的 JavaScript 引擎封装了一下,提供了简单快捷的方式与JavaScript交互. 关于JavaScriptCore的使用有两篇很好的文章: NSHipster中文版的Java​Script​Core iOS7 新JavaScriptCore框架入门介绍 看了上述两篇文章,对JavaScriptCore应该已经基本了解了.我就简要介…
3月17日,网易资深安全工程师钟亚平在安卓巴士全球开发者论坛上做了<安卓APP逆向与保护>的演讲.其中就谈到了关于代码混淆的问题.现摘取部分重点介绍如下:   Java代码是非常容易反编译的,作为一种跨平台的.解释型语言,Java 源代码被编译成中间“字节码”存储于class文件中.由于跨平台的需要,这些字节码带有许多的语义信息,很容易被反编译成Java源代码.为了很好地保护Java源代码,开发者往往会对编译好的class文件进行混淆处理. 混淆就是对发布出去的程序进行重新组织和处理,使得处理…
希望能尽量防止别人 反编译你的代码: 目前苹果审核规则可知,苹果官方是不希望你使用代码混淆的...如果发现了你用代码混淆,甚至会勒令你修改你的代码,否则下一次审核会直接移除你的app…尤其是跑脚本的那种.我猜想 ,目的是防止马甲包泛滥,并且苹果不希望你有所隐瞒...所以代码要请清清白白 参考审核规则 Guideline 2.3.1 - Performance We discovered that your app contains hidden features. Specifically, I…
android2.3的SDK开始在eclipse中支持代码混淆功能(理论上java都支持混淆,但关键在于如何编写proguard的混淆脚本,2.3的SDK使用简单的配置就可以实现混淆).使用SDK2.3后,新建的工程下和之前相比,都会多了一个文件“proguard.cfg”.这个文件就是混淆所需的proguard脚本.在工程的"default.properties"中添加这样一句话“proguard.config=proguard.cfg”即可实现混淆(如下图). android4.0…
在应用开发过程中,我们不仅仅需要完成正常的业务逻辑,考虑应用性能.代码健壮相关的问题,我们有时还需要考虑到应用安全的问题.那么应用安全的问题涉及到很多方面.比如防止静态分析的,代码混淆.逻辑混淆:防止重签名的,应用ID检测.甚至是代码的HASH检测等等.那么这篇文章我想聊聊关于代码的注入检测,因为发现随着iOS系统的更新,我们防护的手段发生了一些变化. 代码注入的方式 代码注入的方式大致分为两种 越狱注入:通过修改DYLD_INSERT_LIBRARIES环境变量的值,来插入动态库并执行 非越狱…
https://www.cnblogs.com/upliver/p/5138160.html 如何在Swift的代码中使用OC的代码, 在OC的代码中使用Swift的代码? 随着苹果公司对Swift的推广力度不断加大,市场上很多的项目都在逐步的转向使用Swift开发,但由于各种原因,公司不可能一时间直接冲OC转向Swift,因此中间就会有一个过渡期,需要我们程序员进行OC和Swift两种语言之间进行混合编程.下面我就给大家介绍一下,混编之前我们应该怎么配置. 一.OC的代码中使用Swift代码.…
iOS团队代码规范 工程之始可能需要的工具: 1.使用CocoaPods类库管理工具.CocoaPods安装和使用教程. 2.下载安装注释插件VVDocumenter-Xcode. 一.项目结构管理 1.建立Resouces文件夹,将所有图片,语音,视频等资源放入其中.图片资源以程序功能模块建立相应的实体文件夹进行管理,若多个功能块共用的,建立Common文件夹,放入其中. 2.所有需手动拖入工程中的第三方库应放入ThirdLibs文件夹中,使用CocoaPods类库管理工具的无须此操作. 
3…
整了一天,感觉坑挺多. 1. 选择如图中的选项Android Studio进行签名打包: 2. 填写APP对应的信息:(最好用个文本记下来放在项目中同步给Team) - Key store path: 如果是新APP则创建,如果已经有了选择就行: - Key store password: ******* - Key alias(别名): 自定义 - 如果是新创建的文件需要选择时间,整个25年足够用了,公司信息填上就OK - 下一步后选择release就开始打包 3. Android Studi…
前言     受<APP研发录>启发,里面讲到一名Android程序员,在工作一段时间后,会感觉到迷茫,想进阶的话接下去是看Android系统源码呢,还是每天继续做应用,毕竟每天都是画UI和利用MobileAPI处理Json还是蛮无聊的,做着重复的事情,没有技术的上提升空间的.所以,根据里面提到的Android应用开发人员所需要精通的20个技术点,写篇文章进行总结,一方面是梳理下基础知识和巩固知识,另一方面也是弥补自我不足之处.     那么,今天就来讲讲ProGuard代码混淆的相关技术知识…
在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加Swift类和相关配置等). 原来我也说过,使用 Cordova 进行跨平台应用开发时,不建议直接对生成的各个平台项目进行编辑(除非目前只要开发单一平台版本).比如:html页面应该是编辑Cordova工程根目录下的 www 文件夹内容,再一次编译发布成多个平台项目. 同样的,如果需要实现与系统原生…
之前给公司的App添加代码混淆,在代码的混淆过程也遇到了不少的问题,再加上最近学习了一下Android Studio插件的开发,所以就开发一个代码混淆插件方便项目的代码混淆. 截图 第三方库列表清单 目前插件的后台已集成了如下图的第三方开源库的代码混淆以及基本的代码混淆,还在努力地添加中,也欢迎大家通过new issue提交列表中没有的第三方开源库混淆代码.(你认为微不足道的事情,也许可以帮到别人的大忙~) 使用 下载AndroidProGuard插件并安装重启.download 在菜单栏的Ed…
转载:http://www.jianshu.com/p/7436a1a32891 简介 作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使被反编译,也难以阅读.混淆概念虽然容易,但很多初学者也只是网上搜一些成型的混淆规则粘贴进自己项目,并没有对混淆有个深入的理解.本篇文章的目的就是让一个初学者在看完后,能在不进行任何帮助的情况下,独立写出适合自己代码的混淆规则. 说在前面 这里我们直接用Android Studio来说明如何进行混淆,…
第一步:代码混淆(注意引入的第三方jar) 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt. 新建一个项目的时候,会自动生成project.properties和proguard-project.txt文件,无需自己新建,如果你的项目无法自动生成,那么你就要检查一下你的ADT版本了 如果需要对项目进行全局混码,只需要进行一步操作: 将project.properties的中 “#progua…
C#的代码辛苦写出来之后,一个反射工具,就可以完全显露出来. 当然,在做项目时,这个功能还不错.因为我就曾在一个项目上使用C#,没有进行任何混淆.结果在项目二年多之后,需要做一些调整,自己保存的源代码丢失了.当时也吓了一跳,可是想到反射工具,赶快拿出来用一下.虽然在反射出来会出现一些错误,但毕竟大部分代码也都弄出来了. 这是在项目上,还有好处的,可是,试想一个产品,被别人给反射了,会是怎么样的一个情况,不说他去照搬功能,就是注册.加密那部分都会被轻易拿到.这可不是什么一个好主意. 于是,必须要使…
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 Web程序员开发App系列 - 开发我的第一个App 待续 目录 前言 调试Android代码 调试iOS代码 准备开发App 前言 在App中代码如果需要调试,就需要借助Chrome调试Android和Safari调试iOS手机,由于编写的都是Html代码,所以等下看到的界面都非常熟悉,对于We…
首先查看一下 “project.properties” 这个文件: # This file is automatically generated by Android Tools.# Do not modify this file -- YOUR CHANGES WILL BE ERASED!## This file must be checked in Version Control Systems.## To customize properties used by the Ant buil…
首先在:project.properties 文件下,启动代码混淆 proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 将这行注释取消. 修改proguard-project.txt 代码混淆文件. //1)注意忽视警告 -ignorewarnings -dontwarn //2)注意的是,使用到反射的类,需要keep -keepattributes Signature-keepa…