But I still need some way to tell them from NSObject/NSProxy decedents from my class walking. Any method calling will cause a crash there.
> On Dec 15, 2014, at 23:48, Clark S. Cox III <clarkc...@gmail.com> wrote: > > That does not mean that they're using "Object" only that they're using a base > class other than "NSObject" or "NSProxy". Why can't you just ignore such > classes? > > Sent from my iPhone > > On Dec 14, 2014, at 23:31, Maxthon Chan <m...@maxchan.info > <mailto:m...@maxchan.info>> wrote: > >> My class scanning returned several OS* classes that does not conform to >> NSObject protocol. >> >>> On Dec 15, 2014, at 00:29, Clark S. Cox III <clarkc...@gmail.com >>> <mailto:clarkc...@gmail.com>> wrote: >>> >>>> >>>> On Dec 13, 2014, at 11:57, Maxthon Chan <m...@maxchan.info >>>> <mailto:m...@maxchan.info>> wrote: >>>> >>>> NSProxy checking actually work, but throwing those classes that derive >>>> from Object class (note I used capitalised O here, the old Object class >>>> from early NeXT times, also used heavily in OS X kernel, GCD and Mach >>>> ports) >>> >>> What makes you think that Object is used in *any* of those places? >>> >>>> into the mix means that no method can be sent before class is determined. >>>> I would suggest Apple add one runtime function class_isSubclassOfClass() >>>> that mirrors the functionality of NSObject and NSProxy method >>>> isSubclassOfClass so that derivatives of the old Object class can be >>>> detected more easily. >>>> >>>>> On Dec 14, 2014, at 03:49, Gary L. Wade <garyw...@desisoftsystems.com >>>>> <mailto:garyw...@desisoftsystems.com>> wrote: >>>>> >>>>> Are you saying that Apple's well-documented approach to see if an object >>>>> is derived from NSProxy does not work? If that's the case, you need to >>>>> submit a bug report to Apple. That's a serious issue that only Apple can >>>>> help you with. >>>>> >>>>> If you are using objects not derived from NSObject nor NSProxy, then >>>>> change your design. >>>>> -- >>>>> Gary L. Wade (Sent from my iPad) >>>>> http://www.garywade.com/ <http://www.garywade.com/> >>>>> >>>>>> On Dec 13, 2014, at 11:40 AM, Maxthon Chan <m...@maxchan.info >>>>>> <mailto:m...@maxchan.info>> wrote: >>>>>> >>>>>> Ain’t work! Will crash if an Object derivative showed up. >>>>>> >>>>>> I am scanning ALL loaded classes and only subclasses of a certain class >>>>>> is interested. But due to the nature of this class scanning before I can >>>>>> make sure that the class derives from NSObject I cannot call any method >>>>>> on it. >>>>>> >>>>>>> On Dec 14, 2014, at 03:34, Gary L. Wade <garyw...@desisoftsystems.com >>>>>>> <mailto:garyw...@desisoftsystems.com>> wrote: >>>>>>> >>>>>>> If all you care about is if an object is a proxy or not, look at >>>>>>> isProxy. >>>>>>> -- >>>>>>> Gary L. Wade (Sent from my iPad) >>>>>>> http://www.garywade.com/ <http://www.garywade.com/> >>>>>>> >>>>>>>> On Dec 13, 2014, at 11:06 AM, Maxthon Chan <m...@maxchan.info >>>>>>>> <mailto:m...@maxchan.info>> wrote: >>>>>>>> >>>>>>>> What I am doing here is scanning all loaded classes for subclasses of >>>>>>>> a certain class. Before any NSObject method can be issued I have to >>>>>>>> check if it is actually NSObject or NSProxy derivative instead of an >>>>>>>> Object derivative that does not support NSObject methods. This calls >>>>>>>> for runtime equivalent for one of the following NSObject methods: >>>>>>>> >>>>>>>> - [NSObject respondsToSelector:(SEL)aSelector] = >>>>>>>> class_respondsToSelector(Class, SEL) // this crashed. >>>>>>>> + [NSObject conformsToProtocol:(Protocol *)aProtocol] = >>>>>>>> class_conformsToProtocol(Class, Protocol *) // check for NSObject >>>>>>>> protocol, this does not work. >>>>>>>> + [NSObject isSubclassOfClass:(Class)aClass] // no equivalent, have to >>>>>>>> implement it myself >>>>>>>> >>>>>>>> I ended up creating this: >>>>>>>> >>>>>>>> BOOL class_isSubclassOfClass(Class cls, Class other) >>>>>>>> { >>>>>>>> for (Class c = cls; c; c = class_getSuperclass(c)) >>>>>>>> if (c == other) >>>>>>>> return YES; >>>>>>>> return NO; >>>>>>>> } >>>>>>>> >>>>>>>> If i remembered it right GNUstep runtime have this function. I will >>>>>>>> file a bug report to Apple and ask them to add this, as it is useful >>>>>>>> in class scanning and i am using this technique heavily in jailbreak >>>>>>>> detection. >>>>>>>> >>>>>>>>> On Dec 14, 2014, at 01:20, Kyle Sluder <k...@ksluder.com >>>>>>>>> <mailto:k...@ksluder.com>> wrote: >>>>>>>>> >>>>>>>>> On Sat, Dec 13, 2014, at 10:19 AM, Phillip Mills wrote: >>>>>>>>>> Why do you think the problem is with “respondsToSelector:”? The >>>>>>>>>> error >>>>>>>>>> says you’re accessing past the end of a string. >>>>>>>>> >>>>>>>>> Because the crash happens in a call stack that originates in >>>>>>>>> class_respondsToSelector, and involves none of Maxthon's code. >>>>>>>>> >>>>>>>>> --Kyle Sluder >>>>>> >>>> >>>> _______________________________________________ >>>> >>>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com >>>> <mailto:Cocoa-dev@lists.apple.com>) >>>> >>>> Please do not post admin requests or moderator comments to the list. >>>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com >>>> <http://lists.apple.com/> >>>> >>>> Help/Unsubscribe/Update your Subscription: >>>> https://lists.apple.com/mailman/options/cocoa-dev/clarkcox3%40gmail.com >>>> <https://lists.apple.com/mailman/options/cocoa-dev/clarkcox3%40gmail.com> >>>> >>>> This email sent to clarkc...@gmail.com <mailto:clarkc...@gmail.com>
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com