多种方式进行 Objective-C 或 C++项目字符串预编译加密防逆向

在 Objectice-C 或 C++ 项目中,使用字符串预编译加密可以有效防止代码被逆向工程。使用 js 加密生成 16 进行数组拷贝到项目中是一种解决方法,还可以使用开源宏定义域编译或者使用开源项目插件来防止逆向。这些方法可以有效防止程序中的敏感代码被逆向工程,并保护代码的可维护性和安全性。obfuscator-llvm、STCObfuscator、Obfuscator-iOS 等。 1.使用 js 加密生成 16 进行数组拷贝到项目 调用解密 AES 加密等加密 JS 生成加密字符串数据可以使用常见的加密算法,例如 AES、DES、RSA 等。以下是使用 AES 算法生成加密字符串数据的示例代码: // 密钥 const key = "0123456789abcdef0123456789abcdef"; // 原始数据 const data = "hello world"; // 加密 const aesEncrypt = (data, key) => { const cipher = crypto.createCipheriv("aes-256-cbc", key, key.slice(0, 16)); let encrypted = cipher.update(data, "utf8", "hex"); encrypted += cipher.final("hex"); return encrypted; }; const encrypted = aesEncrypt(data, key); console.log(encrypted); // 3f6dd8b6a402bda28077c0bf // 将16进制字符串转为16进制数组 const hexToArray = hex => { const array = new Uint8Array(hex.length / 2); for (let i = 0; i < hex.length; i += 2) { array[i / 2] = parseInt(hex.substr(i, 2), 16); } return array; }; const encryptedArray = hexToArray(encrypted); console.log(encryptedArray); // [63, 109, 216, 182, 164, 2, 189, 162, 128, 119, 192, 191] Objective-C++解密函数可以使用相应的解密算法进行解密,例如以下是使用 AES 算法进行解密的示例代码: ...

2024年8月7日 · 7 分钟 · 诚哥博客

使用Objective-C绘制基本图形的两种方式

Objective-C 是一门面向对象的编程语言,广泛应用于 iOS 和 macOS 应用程序的开发。除了常规的编程功能之外,Objective-C 还提供了绘制图形的 API,可以用来绘制线条、矩形、文字等基本图形。在这篇文章中,我们将讨论两种绘图方式:使用 CAShapeLayer 绘制和使用 CGContextRef 绘制。 本文将介绍使用 Objective-C 绘制基本图形的两种方式:使用 CAShapeLayer 和 CGContextRef,分别讨论它们的优缺点、性能等方面。通过示例代码,展示了如何使用这两种方式分别绘制矩形、圆形等基本图形,并指出了适用场景。 两种绘图方式 使用 CAShapeLayer 绘制 CAShapeLayer 是 Core Animation 框架提供的一种绘图方式,可以用来绘制各种形状。它的优点是可以通过设置路径来实现复杂的图形效果,同时还支持填充和描边等样式设置。以下是使用 CAShapeLayer 绘制一个矩形的示例代码: CAShapeLayer *rectangleLayer = [CAShapeLayer layer]; CGRect rect = CGRectMake(50, 50, 100, 100); UIBezierPath *path = [UIBezierPath bezierPathWithRect:rect]; rectangleLayer.path = path.CGPath; rectangleLayer.fillColor = [UIColor clearColor].CGColor; rectangleLayer.strokeColor = [UIColor redColor].CGColor; [self.view.layer addSublayer:rectangleLayer]; 使用 CGContextRef 绘制 CGContextRef 是 Core Graphics 框架提供的一种绘图方式,可以用来绘制各种形状和文字。它的优点是可以直接在 UIView 上绘制图形,适合于一些简单的绘图需求。以下是使用 CGContextRef 绘制一个矩形的示例代码: CGRect rect = CGRectMake(50, 50, 100, 100); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextAddRect(context, rect); CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor); CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); CGContextDrawPath(context, kCGPathFillStroke); 性能、优缺点对比 使用 CAShapeLayer 绘制图形的优点是可以通过设置路径来实现复杂的图形效果,同时还支持填充和描边等样式设置。缺点是相对于 CGContextRef 绘制,CAShapeLayer 的性能会有所下降,适合于需要频繁更新的动态图形。而使用 CGContextRef 绘制图形的优点是绘制速度较快,适合于需要快速绘制一些简单的图形。缺点是不支持复杂的路径设置,同时也无法方便地实现填充和描边等效果。 简单用法 以下是使用 CAShapeLayer 绘制一个圆形和使用 CGContextRef 绘制一个矩形的示例代码: ...

2023年3月8日 · 2 分钟 · 诚哥博客