gpt4 book ai didi

ios - 如何在 Xamarin.iOS 中设置 PT_DENY_ATTACH?

转载 作者:行者123 更新时间:2023-12-01 21:47:31 27 4
gpt4 key购买 nike

我们最近让一位渗透测试人员审核了我们的应用程序,其中一个发现是拥有越狱设备的人可以连接本地调试器。

他们建议的解决方案是启用 PT_DENY_ATTACH启动应用程序时。这在 native 应用程序中相当容易做到,但我无法使用我们的 Xamarin 应用程序(不是表单)来解决这个问题。

我尝试在 Xcode 中创建一个 objc 框架,将其绑定(bind)并将其拉入。我还尝试创建一个共享的 c++ 库,但这在 VS Mac 中是不可能的。

我知道PT_DENY_ATTACH已被规避,但我仍然想知道如何实现它。

谢谢!

最佳答案

事实证明,我的 objc 框架的行为并不像我预期的那样正常。由于某种原因,我仍然能够附加 Visual Studio 调试器,但是当我移至 Xcode 并尝试附加其调试器时,它在调用框架时失败。

回答我的问题:

在 Xcode 中,我用一个类创建了一个新的静态库:
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

我按照这些说明为我的库创建了一个胖文件,并在绑定(bind)项目中使用它。

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

然后我将生成的 dll 添加到我的 Xamarin.iOS 项目并在上面调用它 UIApplication.Main(args, null, "AppDelegate");Main.cs

关于ios - 如何在 Xamarin.iOS 中设置 PT_DENY_ATTACH?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62068728/

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