1.工具下载  http://stevenygard.com/projects/class-dump/  选择dmg安装包

2.打开终端输入:open/usr/local/bin

3.

4.修改权限在终端键入: sudo chmod 777 /usr/local/bin/class-dump

5.使用Python3自动发包工具解压包后缀为zip

Python脚本如下(上传蒲公英脚本可以忽略)

#!/usr/bin/env python

#coding=utf-8

import os

import requests

import webbrowser

import subprocess

import shutil

'''

使用注意事项:该脚本基于python3.6

1、将工程的编译设备选成 Gemeric iOS Device

2、command + B编译

3、执行脚本文件

//3.7/Users/zrq/Library/Developer/Xcode/DerivedData/GSTProject-fqtpprwvigsfvugxwfsdvxdvywcu/Build/Products/Debug-iphoneos/GSTProject.app

//3.6 /Users/zrq/Library/Developer/Xcode/DerivedData/GSTProject-cuyhzrkrfbncceatynnajegnbsyu/Build/Products/Debug-iphoneos/GSTProject.app

//线上 /Users/zrq/Library/Developer/Xcode/DerivedData/GSTProject-azzauvtqxgmxnrggnafpvhisblsq/Build/Products/Debug-iphoneos/GSTProject.app

//3.9 /Users/zrq/Library/Developer/Xcode/DerivedData/GSTProject-aghhbgcjerclpeaxxbjwxsyjielw/Build/Products/Debug-iphoneos/GSTProject.app

'''

appFileFullPath = '/Users/zrq/Library/Developer/Xcode/DerivedData/GSTProject-azzauvtqxgmxnrggnafpvhisblsq/Build/Products/Debug-iphoneos/GSTProject.app'

PayLoadPath = '/Users/zrq/Desktop/Payload'

packBagPath = '/Users/zrq/Desktop/ProgramBag'

openUrlPath = 'https://www.pgyer.com/d33d'

#上传蒲公英

USER_KEY = "cc33dd4d7e9ef30b1be9d8022648e0e2"

API_KEY = "e989280adbf6890b4072970f07d9aaf8"

#上传蒲公英

def uploadIPA(IPAPath):

if(IPAPath==''):

print("\n*************** 没有找到对应上传的IPA包 *********************\n")

return

else:

print("\n***************开始上传到蒲公英*********************\n")

url='http://www.pgyer.com/apiv1/app/upload'

data={

'uKey':USER_KEY,

'_api_key':API_KEY,

'installType':'2',

'password':'',

'updateDescription':""

}

files={'file':open(IPAPath,'rb')}

r=requests.post(url,data=data,files=files)

def openDownloadUrl():

webbrowser.open(openUrlPath,new=1,autoraise=True)

print ("\n*************** 更新成功 *********************\n")

#编译打包流程

def bulidIPA():

#删除之前打包的ProgramBag文件夹

subprocess.call(["rm","-rf",packBagPath])

#创建PayLoad文件夹

mkdir(PayLoadPath)

#将app拷贝到PayLoadPath路径下

subprocess.call(["cp","-r",appFileFullPath,PayLoadPath])

#在桌面上创建packBagPath的文件夹

subprocess.call(["mkdir","-p",packBagPath])

#将PayLoadPath文件夹拷贝到packBagPath文件夹下

subprocess.call(["cp","-r",PayLoadPath,packBagPath])

#删除桌面的PayLoadPath文件夹

subprocess.call(["rm","-rf",PayLoadPath])

#切换到当前目录

os.chdir(packBagPath)

#压缩packBagPath文件夹下的PayLoadPath文件夹夹

subprocess.call(["zip","-r","./Payload.zip","."])

print ("\n*************** 打包成功 *********************\n")

#将zip文件改名为ipa

subprocess.call(["mv","payload.zip","Payload.ipa"])

#删除payLoad文件夹

subprocess.call(["rm","-rf","./Payload"])

#创建PayLoad文件夹

def mkdir(PayLoadPath):

isExists = os.path.exists(PayLoadPath)

if not isExists:

os.makedirs(PayLoadPath)

print(PayLoadPath + '创建成功')

return True

else:

print (PayLoadPath + '目录已经存在')

return False

if __name__ == '__main__':

des = input("请输入更新的日志描述:")

bulidIPA()

uploadIPA('%s/Payload.ipa'%packBagPath)

openDownloadUrl()

6.解压出Payload文件夹,.app就是我们的目标文件

7.在终端使用命令class-dump -H[.app文件路径] -o[输出文件夹路径],就会生成我们需要解析成.h文件有相对应的方法及属性

8.混淆代码的方法通过shell脚本来实现,同时需要一个文档写入我们需要混淆的方法名与变量名

9.打开终端,cd到文件所在目录,使用touch命令 创建confuse.sh(混淆脚本) func.list(混淆方法,函数列表)

10.添加run script命令Targrt--build phases---new run script phase(把shell脚本运行)

11.生成混淆文件 就是说明混淆成功了

有些地方不能混淆:storyboard,init,系统方法等

iOS 代码混淆的简单使用的更多相关文章

  1. iOS 代码混淆

    一般做了防调试的话,被调试进程会退出的,是防动态分析措施. 代码混淆加花这些是防静态分析措施. 反调试是防动态分析措施. 混淆的方法方法名混淆其实就是字符串替换,有2个方法可以,一个是#define, ...

  2. iOS 代码混淆--pch实现

    之前实现代码的混淆一般是使用sh脚本,不过也是需要把一写需要混淆的方法写到一个文件中(除非是使用特定的命名规范统一混淆), 现在发现,实现代码的混淆pch 文件就可以轻松完成! 1,在新建的工程中 创 ...

  3. iOS代码混淆

    混淆原理 代码编译阶段将符号(方法名.属性名等)替换成随机生成的字符串 长话短说,直接上步骤. 混淆集成步骤 步骤一.创建shell文件(confuse.sh)并配置相应的运行环境. 在项目根目录下新 ...

  4. iOS 代码安全加固--反编译和代码混淆

    一.class-dump反编译 1.将打包的ipa反编译下,.ipa改成.zip,并解压 6.右击—显示包内容,找到如下有个白框黑底的  7.将其复制到桌面xx文件夹中,在终端中输入相关命令 cd 进 ...

  5. android开发之代码混淆

    在${user.home}/project.properties文件中设置proguard.config属性 # To enable ProGuard to shrink and obfuscate ...

  6. Android Studio(十一):代码混淆及打包apk

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  7. ios -逆向-代码混淆

    该方法只能针对有.m.h的类进行混淆,静态库等只有.h文件的没法进行混淆 代码混淆,刚刚看到是不是有点懵逼,反正我是最近才接触到这么个东西,因为之前对于代码和APP,只需要实现功能就好了,根本没有考虑 ...

  8. iOS安全攻防(二十三):Objective-C代码混淆

    iOS安全攻防(二十三):Objective-C代码混淆 class-dump能够非常方便的导出程序头文件,不仅让攻击者了解了程序结构方便逆向,还让着急赶进度时写出的欠完好的程序给同行留下笑柄. 所以 ...

  9. iOS安全攻防之代码混淆

    iOS 代码安全之代码混淆实践: 前言: 在8月份的时候写了个关于 class-dump 反编译的文章(使用 Class-dump 反编译),利用 class-dump 工具可以反编译出工程的头文件, ...

随机推荐

  1. Nginx中间件使用心得(二)

    一.基础知识补充 1. 历史由来补充: Nginx是俄罗斯第二大网站的开源项目. 淘宝团队发行了 tengine 增加了很多第三方的包. 2.下载相关的主键 (1)nginx下载地址          ...

  2. [笔记]python

    配置python apt install python2.7 python3 apt install python-bs4 python3-bs4 apt install virtualenv apt ...

  3. 20155216 2016-2017-2 《Java程序设计》第六周学习总结

    20155216 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 流与IO 将数据从来源中取出,可以使用输入串流:将数据写入目的地,可以使用输出串流,串流是有 ...

  4. (二)spring-mvc-showcase 和 swagger-springmvc 的恩恩怨怨

    1. 搜索 spring showcase 就可以找到这篇 http://spring.io/blog/2010/07/22/spring-mvc-3-showcase 就是教你如何使用spring ...

  5. idea 优化

    http://www.iyunv.com/thread-348537-1-1.html

  6. uploadify的碎碎念 upload

    uploadify是一个jquery插件,用来实现文件上传的功能. 20160724 看起来感觉挺麻烦的 一般会买一个html5版的. html <input id="custom_f ...

  7. Java内存模型解惑--观深入理解Java内存模型系列文章有感(二)

    1.volatile关键字修饰的域的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别.理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用 ...

  8. 使用Linq对Hashtable和Dictionary<T,T>查询的效率比较

    近期做版本迭代任务,有一个在店铺头部展示店主所在的城市名称和省份名称的需求,店主信息表中保存了店主所在的城市Id和省份Id,由于原有业务复杂,要尽量减少Sql执行时间,所以不考虑join城市地区详细表 ...

  9. window2012如何查看进程中PID所对应的IIS应用程序池

    1.打开任务管理器,找到任意IIS进程,右击选择打开文件位置,获取到文件路径,例如:C:\Windows\System32\inetsrv 2.使用管理员打开cmd命令行工具,然后切换到刚才获取到文件 ...

  10. BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块

    NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...