Objective-C 使用宏定义来做最基本的代码函数混淆

1.首先你得有一个.pch文件。

2:创建一个头部文件。命名为Fuscation.h(注意)

3:在pch文件中引入

#import "Fuscation.h"

 

4:配置PCH的文件路径指向

4:使用
这次在混淆的时候,主要把一些函数都给混淆了
比方我们的函数/方法叫做

- (void)Axc_LodingData:(NSString *)Name {}

.h:.m:

这个时候我们要对这个函数混淆,我们只需要在我们刚刚创建的“Fuscation.h”头文件里只需要写上下面的宏定义

#define Axc_LodingData eqxvXUDIReajGjoF

NOTICE: Axc_LodingData 后面的一些字符,就是我们要给他混淆的结果。这个结果,我们可以对他MD5、或者你乱写都没问题。

如果你搞得没错,这时候看看你的函数名字都已经变色了:

.h:

.m:

发现在h文件通过摁住Command + 点击函数名,想查找相关实现方法已经查找不到了。

有的时候可能函数有多个参数如下

-(void)chengUserName:(NSString *)names withPwd:(NSString *)pwd {}

我们混淆的时候可以在“Fuscation.h”这样写:

#define chengUserName YwJTjEspxeLAPlbq
#define withPwd IyJapptwJNuhKrnO

能达到一样的效果。

 

 

时间: 2024-12-06 09:47:19

Objective-C 使用宏定义来做最基本的代码函数混淆的相关文章

带参宏定义和inline修饰的内联函数

带参宏定义和inline修饰的内联函数都是在编译时,用函数体替换掉宏调用或函数调用.这样用的好处是减少调用函数所花费的时间. 例如: 算法导论在讲到堆排序时说的,好的堆排序实现一般是把Left(i),Right(i),Parent(i)的实现通过宏定义或内联函数来实现,这就是因为当我们对一组数据使用堆排序时,会大量的调用left,right,parent函数定义成宏或内敛函数之后既不影响我们的代码阅读性又能是代码运行速度更快!

c 预处理的宏定义

概念 以“#”号开头的都是预处理命令 例如 #include <stdio.h>宏定义 宏定义无参数的宏名后不带参数# 表示这是一条预处理命令, define 为宏定义命令.“标识符”为所定义的宏名.“字符串”可以是常数,表达式.格式串等 举例: #define PI 3.1415926 作用: 就是用指定标识符PI来代替数3.1415926 对源程序作编译时, 将先由预处理程序进行宏代换, 即用3.1415926表达式去置换所有的宏名PI, 然后编译 #include <stdio.h

高大上的宏定义#define

宏定义在很多语言里面都可以看到它的影子,C# ,C++,C等,尤其是系统API里面很多宏定义,看着很唬人.合理的利用宏定义,可以让自己的代码看着更规范,更方便,尤其在特定的某些地方.使用宏定义还可以让自己的代码看着高大上有木有! 本文改引自http://www.cnblogs.com/ios8/p/ios-hong.html 网上对IOS的宏定义比较多,我总结了一些最常用的宏,后续还会继续补上. 1.首次启动判断: #define First_Launched @"firstLaunch&quo

link script(链接器ld吃的文件)中使用宏定义的解决方案

问题:工作中遇到一个需求:需要在ld script中使用类似C语言的define等宏定义来做一些判断和替换 实验: 1:理论上*.c中都能用,是否gcc/ld也支持在ld script中直接用宏呢,结果: arm-linux-ld:xxx.lds:2: ignoring invalid character `#' in expression arm-linux-ld:xxx.lds:2: syntax error 人说水火无情,看来ld和gcc也不给面子啊.这里用的是交叉编译的ld,x86的也是

C++中的内联函数和C中的宏定义的区别

在C++中内联函数: 内联函数即是在函数的声明和和定义前面加上“inline”关键字,内联函数和常规函数一样,都是按照值来传递参数的,如果参数为表达式,如4.5+7.5,则函数将传递表达式的值(这里为12),而宏定义则不同. 在C中的宏定义: C语言使用的预处理器语句#define来提供宏,例如:#define SQUARE(X)  X*X,这里宏并不是通过值传递来实现的,而是通过文本替换来实现的. 内联函数和宏定义的区别用下面的代码来观察: //内联函数 inline double squar

宏定义与内置函数的比较

/* time:20200415 where:gfdx man:g-7.net */ #include<iostream> using namespace std; #define doub(x)x*2 int main() { for (int i = 1; i <= 4; i++) { cout << i << '\t'<< "doubled is" << '\t'<<double(i) <<

突发奇想-取缔宏定义,用另外一种语言来做C++的部分外层封装

突发奇想:用一种语言 来编写C++外挂,可以替代宏定义,可以这么做,在C++里面加入特定标签,比如<javascript></javascript>中间的代码可以翻译成C++代码,再用C++编译器来编译. 困扰: 1.C++宏必须要反斜杠,再需要大量重复逻辑代码的情况下,需要宏来减少代码量,达到高效工作的目的: 2.如果C++中有大量宏代码,解开宏代码 查看真是代码变得有点费劲,如果可以直接还原代码就好了: 最终目的:减少C++的宏定义造成的困扰,减少大量重复代码,可以实现看起来是

宏定义中的#,##,...,do{}while(0),__VA_ARGS__

宏定义中的#,## 1.在一个预处理器宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组 #define syslog(a) fprintf(stderr,"Warning: " #a"\n"); 2.简单的说,"## "是一种分隔连接方式,它的作用是先分隔,然后进行强制连接 举列 -- 试比较下述几个宏定义的区别 #define A1(name, type)  type name_##type##_type 或 #define A

笔记3:预处理器-(2)宏定义

#define指令称为宏定义指令,通常用#define指令来定义一个宏用来代表其他东西的一个名字(如常量表达式等).通常来说预处理器会通过将宏的名字和它的定义存储在一起来响应#define指令.当这个宏在后面的程序中使用到时,预处理器会"扩展"宏,将宏替换为其定义值. 简单的宏 简单的宏的定义格式: #define 标识符 替换列表 如: #define DTE_LEN 80 #define TRUE 1 #define FALSE 0 #define PI 3.1415926 #de