gpt4 book ai didi

ios - 如何在我的代码中实现反调试?

转载 作者:行者123 更新时间:2023-12-01 18:04:25 35 4
gpt4 key购买 nike

我正在尝试从最简单的方法PT_DENY_ATTACH开始,并尝试使用lldb对其进行调试,以了解如何实现防调试。但是我不知道我需要在我的 objective-c 的哪一部分中实现它。

我为登录页面编写了一个简单的Objective-C代码。

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic, strong) NSString *username;
@property (nonatomic, strong) NSString *password;

@property (weak, nonatomic) IBOutlet UITextField *usernameTextField;
@property (weak, nonatomic) IBOutlet UITextField *passwordTextField;
@property (weak, nonatomic) IBOutlet UILabel *notificationLabel;

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

self.username = @"Sally";
self.password = @"password123";

self.passwordTextField.secureTextEntry = YES;

}
- (IBAction)loginWasPressed:(id)sender {

BOOL isUsersEqual = [self.username isEqualToString:[self.usernameTextField text]];
BOOL isPasswordEqual = [self.password isEqualToString:[self.passwordTextField text]];

if (isUsersEqual && isPasswordEqual) {

NSLog(@"SUCCESS!");
[self.notificationLabel setText:@"Logged In!"];

}
else {

NSLog(@"FAILURE!");
[self.notificationLabel setText:@"Incorrect!"];

}
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

[self.view endEditing:YES];

}

@end

如何实施反调试?

最佳答案

首先,ptrace()不是iOS上 public API的一部分。根据AppStore发布政策,禁止使用非 public API,使用非 public API可能会导致AppStore拒绝该应用程序,因此我们需要使用dlsym通过函数指针进行调用。

完整代码:

#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import <dlfcn.h>
#import <sys/types.h>

typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);
void anti_debug() {
ptrace_ptr_t ptrace_ptr = (ptrace_ptr_t)dlsym(RTLD_SELF, "ptrace");
ptrace_ptr(31, 0, 0, 0); // PTRACE_DENY_ATTACH = 31
}

int main(int argc, char * argv[]) {

#ifndef DEBUG
anti_debug();
#endif
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

然后,您可以将目标Build配置更改为Release,然后检查Xcode是否断开连接。
希望对您有所帮助!

关于ios - 如何在我的代码中实现反调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54576289/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com