代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。执行代码混淆的程序被称作代码混淆器。目前已经存在许多种功能各异的代码混淆器。

将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,甚至改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途。重写代码中的部分逻辑,将其变成功能上等价,但是更难理解的形式。比如将for循环改写成while循环,将循环改写成递归,精简中间变量,等等。打乱代码的格式。比如删除空格,将多行代码挤到一行中,或者将一行代码断成多行等等。

STCObfuscator 是用来进行object-c代码混淆的工具,在模拟器DEBUG环境下运行生成混淆宏,混淆的宏可以在其他环境下进行编译,支持Cocoapod代码混淆。

一、使用:

pod 'STCObfuscator'

把下面的代码加入到Appdelegate didFinishLaunchingWithOptions方法里,

#import "STCObfuscator.h"

#if (DEBUG == 1)

[[STCObfuscator obfuscatorManager] confuseWithRootPath:[NSString stringWithFormat:@"%s", STRING(ROOT_PATH)] resultFilePath:[NSString stringWithFormat:@"%@/STCDefination.h", [NSString stringWithFormat:@"%s", STRING(ROOT_PATH)]] linkmapPath:[NSString stringWithFormat:@"%s", STRING(LINKMAP_FILE)]];

#endif

完成下面配置:

1.在 Build Settings->Preprocessor Macros->DEBUG 中添加环境变量。

LINKMAP_FILE=$(TARGET_TEMP_DIR)/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt  和ROOT_PATH="${SRCROOT}"

2.在 Build Settings 开启Write Link Map File, 设置成 YES。

3.将下面的脚本添加到 Build Phases。

dir=${SRCROOT}

file_count=0

file_list=`ls -R $dir 2> /dev/null | grep -v '^$'`

for file_name in $file_list

do

temp=`echo $file_name | sed 's/:.*$//g'`

if [ "$file_name" != "$temp" ]; then

cur_dir=$temp

else

if [ ${file_name##*.} = a ]; then

find -P $dir -name $file_name > tmp.txt

var=$(cat tmp.txt)

nm $var > ${file_name}.txt

rm tmp.txt

fi

if [ ${file_name##*.} = framework ]; then

find -P $dir -name ${file_name%%.*} > tmp.txt

var=$(cat tmp.txt)

nm $var > ${file_name}.txt

rm tmp.txt

fi

fi

done

4.在pch文件中添加以下代码:

#if (DEBUG != 1)

#import "STCDefination.h"

#endif

5.在DEBUG环境下用模拟器运行工程,在STCDefination.h头文件中生成混淆的宏。所有的混淆符号会保留在工程目录下的confuse.json。

6.把工程目录下STCDefination.h头文件加入工程。

混淆后,如果工程增加代码,需要再次混淆,先清空STCDefination.h里面的内容,不能留任何空格和换行,然后pod update,再次在模拟器DEBUG环境下运行。

7.在 RELEASE 环境下运行工程,实现代码混淆。

混淆前逆向。

混淆后逆向。

二、iOS逆向工程之class-dump

1.安装:

将dmg文件中的class-dump文件复制到 /usr/local/bin , 终端输入 sudo chmod 777 /usr/local/bin/class-dump 更改权限

显示class-dump的用法和版本:class-dump --help

2.使用方法:

用终端输入命令 class-dump -H [.app文件的路径] -o [输出文件夹路径]

3.问题:Error: Cannot find offset for address 0x200000000100d256 in stringAtAddress:

原因:class-dump是利用Object-C语言的runtime特性,提取头文件,class-dump目前没法作用于Swift,如果项目中用到了OC和Swift混编,class-dump会失败。

c语言代码混淆器,代码混淆相关推荐

  1. 【Android 逆向】代码调试器开发 ( 使用 NDK 中的 ndk-build + Android.mk 编译 Android 平台的代码调试器可执行应用 )

    文章目录 一.Android 平台代码调试器代码 二.Android.mk 构建脚本内容 三.Application.mk 构建脚本内容 四.正式编译 五.博客资源 一.Android 平台代码调试器 ...

  2. 免杀Bypass!可过WDF/360/火绒的C#混淆器

    0x01 工具简介 这次分享的是一个可用于免杀过WDF/360/火绒的C#混淆器,但只能混淆.Net Framework应用程序.作者写这个工具主要是为了了解更多关于 C# 和混淆器的工作原理. 关注 ...

  3. C/C++代码混淆器

    原文地址:https://foxzzz.com/c-cpp-disorder 试图通过混淆 C/C++源代码以达到保护知识产权的目的的做法其实就是自欺欺人,因为不论如何混淆代码,到了编译阶段代码终究是 ...

  4. 5个常用Java代码混淆器 助你保护你的代码

    [IT168 技术文档] 从事Java编程的人都知道,可以通过逆向工程反编译得到Java程序的源代码,这种反编译工具之一就是JAD.因此,为保护我们的劳动成果,尽可能给反编译人员制造障碍,我们可以使用 ...

  5. 分享:几款代码混淆器(DotFuscator, .NET Reactor, xenocode)

    在介绍工具之前,我需要说明几点: 1.如果你编写的软件不涉及商业用途的话,本着开源的思想,本人不推荐使用代码混淆器 2.使用代码混淆器存在一定的风险,在使用前最好做好相关代码备份 3.凡是需要序列化成 ...

  6. Java培训分享5个常用Java代码混淆器

    对于Java程序员来说,如果辛辛苦苦写的代码被人摽窃走,将是一件非常恼火的事情.如何保护自己的代码呢,可以通过逆向工程反编译得到Java程序的源代码,这种反编译工具之一就是JAD,尽可能给反编译人员制 ...

  7. JAVA代码混淆器大全

      JAVA代码混淆器大全 Author/Company Program Shrink. Optim. Obfusc. Preverif. License Eric Lafortune ProGuar ...

  8. VBA 工程代码加密混淆器,保护你的宏作品

    个人制作的 VBA 代码加密混淆器,帮你加密你的宏代码,让它不再那么易读.因 VBA 的方便一直以来都喜欢用它写一些小工具,了解多了也就知道这种代码编写的工具完全没有安全性可言,工程密码形同虚设,很容 ...

  9. 常见的5种方式看保护java代码(java混淆器)

    在java代码中往往包含着一些非常敏感的信息,有些关系到开发者的利益,有些可能因为使用环境不同而关系到软件用户的利益,于是,java程序是赤膊上阵还是全副武装这个现实问题就摆在了java开发人员的面前 ...

  10. 使用 ASM 编写 Java 字节码混淆器以实现对代码的保护

    文章目录 前言 > 展示 原理 源码获取 前言 通常而言, Java程序很容易被烂大街的反编译器 (如JD-GUI, Luyten等) 反编译出源代码并且进行未授权的修改. 所以很多开发者会用 ...

最新文章

  1. 物联网可应用于十大行业嘛?
  2. 如何在Mac OS下用ISO包制作启动U盘
  3. discuz!x2.5登录管理面板
  4. 计算机视觉界CV牛人牛事
  5. 十二、“最是真心藏不住,一言一语总关情。”(2021.2.11)
  6. 如何用JS获取页面上的所有标签
  7. 数据结构与算法--解决问题的方法- 二叉树的的镜像
  8. 深度技术win11旗舰稳定版v2021.07
  9. 记录hadoop3.2.2出现Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster问题
  10. RabbitAdmin 实战
  11. Web-Attak系列教程第二季0x12讲——HTTP的请求与响应格式
  12. 华为VRRP+VLAN+DHCP配置实例
  13. 简繁体在线切换JS插件
  14. c语言在头文件后int a,C语言头文件 实现文件 工程文件组织
  15. 【路径规划】基于matlab遗传算法求解多物流中心开放式车辆路径规划【含Matlab源码 017期】
  16. 机器学习与数学基础知识(二)
  17. CSS 模拟电影卡片
  18. 你在家看电视,家里的电视也在看你?
  19. mysql统计类似SQL语句查询次数
  20. PS光影神话完整版下载安装

热门文章

  1. 树莓派小车简单的迷宫算法-基于Python设计
  2. C# RSA2048 公钥加密,私钥解密
  3. AB工业计算机编程软件,罗克韦尔/AB VersaView 5100 工业监视器
  4. 我用Vue3+TS实现了一个新年倒计时组件,适用于各种场景
  5. 基于单片机at89s52的频率计设计c语言程序,基于AT89S52单片机的数字频率计的设计...
  6. 【gitee】fatal: unable to access ‘https://username:password@gitee.com: Port number ended with ‘l‘
  7. EasyCamera Android安卓移动视频监控单兵设备接入EasyDarwin开源流媒体云平台
  8. ShadowGun: Optimizing for Mobile Sample Level
  9. PDF转Word教程
  10. 软媒魔方 6.0.5 正式绿色版