如何解决转换 Objective-C 代码片段以检测对 Xamarin (C#) 的越狱绕过调整
我的基于 Xamarin 的 iOS 应用程序不应在越狱设备中运行。这是由于 IS 审计。出于审计目的,我必须实现一种方法来检测越狱状态。我已经实现了越狱检测机制。但是我找不到一种方法来检测是否有人使用越狱绕过方法,例如 A-bypass、阴影调整。然后我从审计团队那里得到了一些 Objective-C 代码片段。我尝试使用绑定库(Sharpie)。但是在我的 Xamarin 项目中出现了 3000 多个错误。我在 Objective-C 方面的经验为零。有没有办法把它转换成 C#?
NSInteger kernel_value = test();
if(kernel_value != 2147483650){
exit(1);
}else{
[super viewDidLoad];
NSLog(@"display Int Value kernel_value : %li",kernel_value);
}
uint32_t test() {
char* filename = "/var/lib/dpkg/status"; // Checking this file to find jailbreak detection
volatile uint32_t result = -1;
volatile uint64_t nzcv = 0;
#if __arm64__ //inline assembly code
__asm volatile (
"mov x0,%[file] \n"
"mov x1,0 \n"
"mov x16,#5 \n"
"svc #42 \n"
"mov %w[res],w0 \n"
"mrs %[c],nzcv"
: [res] "=r"(result),[c] "=r"(nzcv)
: [file] "r"(filename)
: "x0","x1","x16","memory","cc"
);
#endif
uint32_t cc = (nzcv >> 29) & 1;
return result | (cc << 31);
}
王凯尔回答后的更新
// TweakCheck.h
// TweakCheck
#import <Foundation/Foundation.h>
@interface TweakCheck : NSObject
-(uint32_t)checkMethod;
@end
// TweakCheck.m
// TweakCheck
#import "TweakCheck.h"
@implementation TweakCheck
-(uint32_t)checkMethod {
char* filename = "/var/lib/dpkg/status"; // Checking this file to find jailbreak
volatile uint32_t result = -1;
volatile uint64_t nzcv = 0;
#if __arm64__ //inline assembly code
__asm volatile (
"mov x0,%[file] \n"
"mov x1,0 \n"
"mov x16,#5 \n"
"svc #42 \n"
"mov %w[res],w0 \n"
"mrs %[c],nzcv"
: [res] "=r"(result),[c] "=r"(nzcv)
: [file] "r"(filename)
: "x0","cc"
);
#endif
uint32_t cc = (nzcv >> 29) & 1;
return result | (cc << 31);
}
@end
*如果我不限制绑定的范围,使用 -scope 那么 ApiDeFinition.cs 文件和 Structs.cs 文件会变得太大,并且在 Xamarin 方面也会给我 3000 多个错误。如果我使用 -scope 那么 Structs.cs 不会创建。
使用sharpie后,ApiDefinision.cs文件
using System;
using CoreFoundation;
using Foundation;
using ObjCRuntime;
using Security;
namespace NativeLibrary
{
// @interface TweakCheck : NSObject
[BaseType(typeof(NSObject))]
interface TweakCheck
{
// -(uint32_t)checkMethod;
[Export("checkMethod")]
uint CheckMethod { get; }
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。