首页 文章 精选 留言 我的

精选列表

搜索[安全],共10000篇文章
优秀的个人博客,低调大师

iOS安全使用私有framework

获取私有framework中某subview对象 博客:using private iOS APIs safely 深度递归查找子view,修改其属性: You are not prevented from modifying a view that is part of a UIKit object, you just need to do it publicly. The [UIView subviews]method is public, and you can use this to dig through the view hierarchy looking for a private view to change, no private method calls required 1. [UIView subviews] NS_INLINE UIView *UIFindSubview(UIView *view, Class viewClass) { for (UIView *subview in view.subviews) { if ([subview isKindOfClass:viewClass]) { return subview; } else { UIView *rect = UIFindSubview(subview, viewClass); if (rect) { return rect; } } } return nil; } 调用此方法获取一个subView UIView *view = findSubview(picker.view, [NSClassFromString(@"CMKVideoPreviewView") class]); 2.[[subview class] description] 博客:Removing reorder cell shadows from a UITableView 我们无法直接使用私有类的声明,但是我们可以用[[subview class] description]来获取class的信息。[[[subview class] description] isEqualToString:@”UIShadowView”] You don’t have a class declaration for the private classes, but that’s fine, instead you can evaluate that it is correct based on class string description, [[[subview class] description] isEqualToString:@”UIShadowView”] // iOS7 for(UIView* subview in wrapperView.subviews) { if([[[subview class] description] isEqualToString:@"UIShadowView"]) [subview setHidden:YES]; } 私有头文件 You can use a tool like class-dump or a private class reference to see every Objective-C method each class in iOS has – the truth is nothing in Objective-C is truly ‘private’, you can see any method compiled into the binary. 我们可以用class-dump o 或者 private class reference这些工具看到iOS中所有class的方法.但是私有头API会随时下掉,所以建议用respondsToSelector: 和 performSelector:来检查一下该方法是否可以用 访问实例变量 如何访问类中私有变量? 比如下面,[xxxx valueForKey:@”_internal”] 可以返回 private变量 _internal 。 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIWebView : UIView { @private UIWebViewInternal *_internal; } 但是如果,我们 请求的变量不存在(根据我们输入的key值没有找到相应的value),程序会 crash。为了防止这种情况,我们可以在 NSObject的categorise中或者 写一个子类继承该类,并重写valueForUndefinedKey方法。 - (id) valueForUndefinedKey:(NSString *)key { // No crashes please... return nil; } 我们有时候改变只读属性的实例变量的值,就可以这样用。我之前试过强制设置orientation属性值 。 Method Swizzling Method SwizzlingMethod Swizzling Method Swizzling lets you inject code in the middle of two existing classes, which can be a lot more beneficial compared to a subclass that will only add your code on top of one class that must be subclassed.example 访问私有枚举变量 私有枚举变量,本质上就是一些数字。比如下面的例子,返回的按钮UIButtonType的值是101, 私有不公开。我们可以直接设置: UIButton* back = [UIButton buttonWithType:101]; [back sizeToFit]; [back setTitle:@"Back" forState:UIControlStateNormal]; image C方法 One half of Objective-C is pure C, and with that all the tricks to incorporate private C APIs into your app, such as defining external functions。 例子:截屏并保存图片 CGImageRef screenshot = UIGetScreenImage(); UIImage* image = [UIImage imageWithCGImage:screenshot]; [UIImagePNGRepresentation(image) writeToFile:@"/maybe-change-this.png" atomically:NO]; 重写私有方法和类 重写私有方法和类,并不会让app被App store拒绝,但是你的app会变的不稳定。每次版本更新,都需要去检查,你的方法或者类是否正常工作。我们可以重写public或者private 类的私有方法。如果是私有类,直接重写会导致编译错误,但是你可以为它添加一个fake interface,categorise. 例子:重写UIStatusBar类 @interface UIStatusBar : UIView @end @interface UIStatusBar (Override) @end @implementation UIStatusBar (Override) - (void) drawRect:(CGRect)rect { NSArray* subviews = self.subviews; if(subviews.count < 2) return; UIView* background = [subviews objectAtIndex:0]; UIView* foreground = [subviews objectAtIndex:1]; [UIView animateWithDuration:2 animations:^{ [self setTransform:CGAffineTransformMakeTranslation(0, 100)]; [background setTransform:CGAffineTransformMakeTranslation(-160, 0)]; [foreground setTransform:CGAffineTransformMakeTranslation(160, 0)]; }]; } @end private framework使用dylib注射获取私有apiios逆向工程

优秀的个人博客,低调大师

LINUX用户安全管理1

在linux中,每个普通用户都有一个帐户,包括用户名、密码和主目录等信息。除此之外,还有一些系统本身创建的特殊用户,它们具有特殊的意义。其中最重要的是超级用户,在linux中,它默认用户名是root。 ◆基本操作 ● 增加一个用户newuser : useradd newuser passwd newuser (然后根据提示两次输入新用户的密码。) 注意点 用useradd增加一个用户后应该立刻用passwd给新用户修改密码,没有密码的新帐号将不能使用。在/etc/passwd文件中,没有密码的新用户的记录是如下一行: newuser:!!:506:506::/home/newuser:/bin/bash 在这一行里,用户的密码域被设置成了“!!”,这就意味着用户口令还没有设置,用户不能登陆。(passwd文件的格式是 用户名:密码:用户ID(UID):组ID(GID):全名:用户目录:外壳脚本)。 当然你可以用-d开关设置新用户的主目录(例如:useradd newuser –d /www),也可以用-g开关为用户指定新组名(例如:useradd newuser –g linuxusers),你还可以用-G开关把新用户设成系统其它一些组的成员(例如:useradd newuser –G users,shutdown)。所有这些,你都可以在本站的命令查询中得到详细信息。 附注:相应的,仅仅增加一个新组可以用命令groupadd。 ●修改现有用户的帐号: 1、 修改密码 普通用户可以用passwd修改自己的密码,只有管理员才能用passwd username为其它用户修改密码。 2、 修改用户shell设置 使用chsh命令可以修改自己的shell,只有管理员才能用chsh username为其它用户修改shell设置。注意,指定的shell必须是列入/etc/shells文件中的shell,否则该用户将不能登陆。 你也可以使用usermod命令修改shell信息,如下所示: usermod –s(new shell path)(username) 其中new shell path和username应取相应的值。 3、 修改主目录设置 usermod –d(new home directory)(username) 如果想将现有主目录的主要内容转移到新的目录,应该使用-m开关,如下所示: usermod –d –m/www/newuser newuser 4、 修改UID usermod –u UID username 主目录中所有该用户所拥有的文件和目录都将自动修改UID设置。但是,对于主目录外该用户所拥有的文件,只能手工用chown命令修改所有权设置。 5、 修改默认组设置 username –g(group name) or GID username 6、 修改帐号的有效期 如果使用了影子口令,则可以使用如下命令来修改一个帐号的有效期: usermod –e MM/DD/YY username 例如把用户newuser的有效期定为12/31/01: usermod –e 12/31/01 newuser 7、 删除或禁止用户帐号 使用userdel命令删除现有用户。例如,下面的命令将删除bluewind用户: usedel bluewind 如果想同时删除该用户的主目录以及其中所有内容,要使用-r开关来递归删除。值得注意的是你无法删除已经进入系统的用户,如果想强行完成,需要先killall有关它的进程,然后再运行userdel命令。 如果只是想暂时禁止某个帐号,可以使用下列方法: a、 使用无效的shell。例如使用usermod –s newshell username将用户的 shell改为/bin/false(最好把它列入/etc/shells文件里)。 b、 使该帐号过期。如果使用影子口令,可使用usermod –e MM/DD/YY username命令使该帐号过期。 如果想禁止所有帐号(root帐号当然除外)的访问,可以创建一个名为/etc/nologin的文件,说明系统暂时不允许访问。注意,确认你还能用root直接登陆才使用这个办法,否则你惨了。 本文中的所有命令都可以在linuxaid获得中文详细的帮助。下一个部分我们讲述用户管理的高级内容。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册