Как установить PT_DENY_ATTACH в Xamarin. iOS? - PullRequest
1 голос
/ 28 мая 2020

Недавно мы провели проверку нашего приложения с помощью пентестера, и одним из выводов было то, что человек с взломанным устройством может подключить локальный отладчик.

Они предложили решение включить PT_DENY_ATTACH при запуске приложение. Это довольно легко сделать в собственном приложении, но я не смог понять это с помощью нашего приложения Xamarin (не форм).

Я пробовал создать платформу obj c в Xcode, связать это и потянуть. Я также пытался создать общую библиотеку C ++, но это невозможно в VS Ma c.

Я знаю, что PT_DENY_ATTACH был обойден, но я бы еще хотелось бы знать, как это реализовать.

Спасибо!

1 Ответ

1 голос
/ 30 мая 2020

Оказывается, моя структура obj c вела себя должным образом, но не так, как я ожидал. По какой-то причине я все еще смог подключить отладчик Visual Studio, но когда я перехожу на Xcode и пытаюсь подключить его отладчик, он терпит неудачу при вызове фреймворка.

Чтобы ответить на мой вопрос:

В Xcode я создал новую библиотеку stati c с одним классом:

GDBManager.h

#import <Foundation/Foundation.h>

@interface GDBManager : NSObject
+(void)DisableGDB;
@end

GDBManager.m

#import "GDBManager.h"
#import <dlfcn.h>
#import <sys/types.h>

@implementation GDBManager
typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);
#define PT_DENY_ATTACH 31

+(void)DisableGDB {
    void* handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);
    ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");
    ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);
    dlclose(handle);
}
@end

Я выполнил эти инструкции, чтобы создать толстый файл для моей библиотеки и использовать его в проекте привязки.

https://docs.microsoft.com/en-us/xamarin/ios/platform/binding-objective-c/walkthrough

Затем я добавляю сгенерированную dll в свой проект Xamarin. iOS и называю его выше UIApplication.Main(args, null, "AppDelegate"); в Main.cs

...