美文网首页
Swift逆向之一

Swift逆向之一

作者: 超哥__ | 来源:发表于2021-08-04 17:27 被阅读0次

    本篇开始本人将第一次研究Swift逆向

    $s10testswift111AppDelegateCMa
    等价:AppDelegate.class
    解析:type metadata accessor for AppDelegate

    $s10testswift113SceneDelegateC18sceneDidDisconnectyySo7UISceneCF
    等价:-[SceneDelegate sceneDidDisconnect:(UIScene*)scene]
    解析:SceneDelegate.sceneDidDisconnect(__C.UIScene)

    $s10testswift113SceneDelegateC5scene_13willConnectTo7optionsySo7UISceneC_So0I7SessionCSo0I17ConnectionOptionsCtF
    等价:-[SceneDelegate scene:(UIScene)scene willConnectTo:(UISceneSession)session options:(UISceneConnectionOptions)options]
    解析:SceneDelegate.scene(_: __C.UIScene, willConnectTo: __C.UISceneSession, options: __C.UISceneConnectionOptions) -> ()

    $ss27_allocateUninitializedArrayySayxG_BptBwlF
    等价:_allocateUninitializedArray()
    解析:Swift._allocateUninitializedArray<A>(Builtin.Word) -> ([A], Builtin.RawPointer)

    $sypN
    等价:Any.class
    解析:type metadata for Any

    $sSSN
    等价:String.class
    解析:type metadata for Swift.String

    $sSS21_builtinStringLiteral17utf8CodeUnitCount7isASCIISSBp_BwBi1_tcfC
    等价:-[String init_builtinStringLiteral:(char*) utf8CodeUnitCount:(int) isASCII:(bool)]
    解析:Swift.String.init(_builtinStringLiteral: Builtin.RawPointer, utf8CodeUnitCount: Builtin.Word, isASCII: Builtin.Int1) -> Swift.String

    $ss5print_9separator10terminatoryypd_S2StFfA0_
    解析:default argument 1 of Swift.print(_: Any..., separator: Swift.String, terminator: Swift.String) -> ()

    $ss5print_9separator10terminatoryypd_S2StFfA1_
    解析:default argument 2 of Swift.print(_: Any..., separator: Swift.String, terminator: Swift.String) -> ()

    $ss5print_9separator10terminatoryypd_S2StF
    等价:print(...) 等价于ObjC中的NSLog
    解析:Swift.print(_: Any..., separator: Swift.String, terminator: Swift.String) -> ()

    注:String类型作为参数占2个寄存器,作为返回值也占2个寄存器(X0/X1)

    $s10testswift113SceneDelegateCACycfC
    等价:-[SceneDelegate __allocating_init]
    解析:SceneDelegate.__allocating_init() -> SceneDelegate

    $s10testswift113SceneDelegateCACycfc
    等价:-[SceneDelegate init]
    解析:SceneDelegate.init() -> SceneDelegate

    $s10testswift113SceneDelegateCfD
    等价:-[SceneDelegate __deallocating_deinit]
    解析:SceneDelegate.__deallocating_deinit

    $sSSSgWOe
    等价:-[String consume]
    解析:outlined consume of Swift.String?

    $sSSSgWOy
    等价:-[String copy]
    解析:outlined copy of Swift.String?

    $sSSSgWOc
    等价:-[String init]
    解析:outlined init with copy of Swift.String?

    $sSSSgWOh
    等价:-[String destroy]
    解析:outlined destroy of Swift.String?

    写一个简单函数测试:

    func runoob(site: String) -> String {
        return (site)
    }
    runoob(site: "www.runoob.com")
    

    可以发现runoob函数传参很特殊,字符串www.runoob.com的直接拆成2个8字节存到X0/X1.

          x0 = 0x6f6e75722e777777  www.runo
          x1 = 0xee006d6f632e626f   oob.com   长度0xe
    

    若将字符串长度>=16则会出现.

        x0 = 0xd000000000000010 长度0x10
        x1 = 0x800000010096e780  地址0x10096e780+0x20处指向C字符串
    

    因此Swift.String在内存和寄存器中永远占2个坑位,其内存结构类似于std::string,下面以结构体表示.

    struct Swift.StaticString {
        int64_t _addr;
        int64_t _len;
    };
    
    union Swift.String {
        struct {
            char _buf[15];
            int _type : 4;        // short的type=0xe
            int _len : 4;          // 字符串长度
        } short,
        struct {
            int64_t _len : 60;  // 字符串长度
            int64_t _type : 4;  // long的type=0xd
            int64_t _addr;      // _addr&0x7ffffffffffffffff为真实地址
        } long
    }
    

    找到的Swift<-->ObjC转换:

    String <-> NSString
    $sSS10FoundationE19_bridgeToObjectiveCSo8NSStringCyF
        Swift.String._bridgeToObjectiveC(String) -> NSString
    $sSs10FoundationE19_bridgeToObjectiveCSo8NSStringCyF
        Swift.String._bridgeToObjectiveC(Substring) -> NSString
    $sSs10FoundationE36_unconditionallyBridgeFromObjectiveCySsSo8NSStringCSgFZ
        Swift.Substring._unconditionallyBridgeFromObjectiveC(NSString) -> Substring
    $sSS23_bridgeToObjectiveCImplyXlyF
        Swift.String._bridgeToObjectiveCImpl() -> Swift.AnyObject
    $sSS10FoundationE36_unconditionallyBridgeFromObjectiveCySSSo8NSStringCSgFZ
        Swift.String._unconditionallyBridgeFromObjectiveC(NSString) -> Swift.String
    
    ALL <-> NSNumber
    $sSi10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.Int._bridgeToObjectiveC(Int) -> NSNumber
    $sSi10FoundationE36_unconditionallyBridgeFromObjectiveCySiSo8NSNumberCSgFZ
        Swift.Int._unconditionallyBridgeFromObjectiveC(NSNumber) -> Int
    $sSu10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.UInt._bridgeToObjectiveC(UInt) -> NSNumber
    $sSu10FoundationE36_unconditionallyBridgeFromObjectiveCySuSo8NSNumberCSgFZ
        Swift.UInt._unconditionallyBridgeFromObjectiveC(NSNumber?) -> UInt
    $ss4Int8V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.Int8._bridgeToObjectiveC(Int8) -> NSNumber
    $ss4Int8V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
        Swift.Int8._unconditionallyBridgeFromObjectiveC(NSNumber) -> Int8
    $ss5UInt8V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.UInt8._bridgeToObjectiveC(UInt8) -> NSNumber
    $ss5UInt8V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
        Swift.UInt8._unconditionallyBridgeFromObjectiveC(NSNumber?) -> UInt8
    $ss5Int16V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.Int16._bridgeToObjectiveC(Int16) -> NSNumber
    $ss5Int16V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
        Swift.Int16._unconditionallyBridgeFromObjectiveC(NSNumber?) -> Int16
    $ss6UInt16V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.UInt16._bridgeToObjectiveC(UInt16) -> NSNumber
    $ss6UInt16V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
        Swift.UInt16._unconditionallyBridgeFromObjectiveC(NSNumber) -> UInt16
    $ss5Int32V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.Int32._bridgeToObjectiveC(Int32) -> NSNumber
    $ss5Int32V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
        Swift.Int32._unconditionallyBridgeFromObjectiveC(NSNumber?) -> Int32
    $ss6UInt32V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.UInt32._bridgeToObjectiveC(UInt32) -> NSNumber
    $ss6UInt32V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
        Swift.UInt32._unconditionallyBridgeFromObjectiveC(NSNumber?) -> UInt32
    $ss5Int64V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.Int64._bridgeToObjectiveC(Int64) -> NSNumber
    $ss5Int64V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
        Swift.Int64._unconditionallyBridgeFromObjectiveC(NSNumber) -> Int64
    $ss6UInt64V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.UInt64._bridgeToObjectiveC(UInt64) -> NSNumber
    $ss6UInt64V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
        Swift.UInt64._unconditionallyBridgeFromObjectiveC(NSNumber) -> UInt64
    $sSd10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.Double._bridgeToObjectiveC(Double) -> NSNumber
    $sSd10FoundationE36_unconditionallyBridgeFromObjectiveCySdSo8NSNumberCSgFZ
        Swift.Double._unconditionallyBridgeFromObjectiveC(NSNumber) -> Double
    $sSf10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.Float._bridgeToObjectiveC(Float) -> NSNumber
    $sSf10FoundationE36_unconditionallyBridgeFromObjectiveCySfSo8NSNumberCSgFZ
        Swift.Float._unconditionallyBridgeFromObjectiveC(NSNumber) -> Float
    $sSb10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        Swift.Bool._bridgeToObjectiveC(Bool) -> NSNumber
    $sSb10FoundationE36_unconditionallyBridgeFromObjectiveCySbSo8NSNumberCSgFZ
        Swift.Bool._unconditionallyBridgeFromObjectiveC(NSNumber) -> Bool
    $s12CoreGraphics7CGFloatV10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
        CoreGraphics.CGFloat._bridgeToObjectiveC() -> NSNumber
    $s12CoreGraphics7CGFloatV10FoundationE36_unconditionallyBridgeFromObjectiveCyACSo8NSNumberCSgFZ
        CoreGraphics.CGFloat._unconditionallyBridgeFromObjectiveC(NSNumber) -> CGFloat
    
    Array <-> NSArray
    $sSa10FoundationE19_bridgeToObjectiveCSo7NSArrayCyF
        Swift.Array._bridgeToObjectiveC(Array) -> NSArray
    $sSa10FoundationE36_unconditionallyBridgeFromObjectiveCySayxGSo7NSArrayCSgFZ
        Swift.Array._unconditionallyBridgeFromObjectiveC(NSArray?) -> Array
    
    $sSa23_bridgeToObjectiveCImplyXlyF
        Swift.Array._bridgeToObjectiveCImpl() -> Swift.AnyObject
    
    Dictionary <-> NSDictionary
    $sSD10FoundationE19_bridgeToObjectiveCSo12NSDictionaryCyF
        Swift.Dictionary._bridgeToObjectiveC(Dictionary) -> NSDictionary
    $sSD10FoundationE36_unconditionallyBridgeFromObjectiveCySDyxq_GSo12NSDictionaryCSgFZ
        Swift.Dictionary._unconditionallyBridgeFromObjectiveC(NSDictionary) -> Dictionary
    $sSD23_bridgeToObjectiveCImplyXlyF
        Swift.Dictionary._bridgeToObjectiveCImpl() -> Swift.AnyObject
    
    AnyHashable <-> NSObject
    ss11AnyHashableV10FoundationE19_bridgeToObjectiveCSo8NSObjectCyF
        Swift.AnyHashable._bridgeToObjectiveC(AnyHashable) -> NSObject
    $ss11AnyHashableV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSObjectCSgFZ
        Swift.AnyHashable._unconditionallyBridgeFromObjectiveC(NSObject) -> AnyHashable
    
    Set <-> NSSet
    $sSh10FoundationE19_bridgeToObjectiveCSo5NSSetCyF
        Swift.Set._bridgeToObjectiveC(Set) -> NSSet
    $sSh23_bridgeToObjectiveCImplyXlyF
        Swift.Set._bridgeToObjectiveCImpl() -> Swift.AnyObject
    $sSh10FoundationE36_unconditionallyBridgeFromObjectiveCyShyxGSo5NSSetCSgFZ
        Swift.Set._unconditionallyBridgeFromObjectiveC(NSSet) -> Set
    
    Data <-> NSData
    $s10Foundation4DataV19_bridgeToObjectiveCSo6NSDataCyF
        Foundation.Data._bridgeToObjectiveC(Data) -> NSData
    $s10Foundation4DataV36_unconditionallyBridgeFromObjectiveCyACSo6NSDataCSgFZ
        Foundation.Data._unconditionallyBridgeFromObjectiveC(NSData) -> Data
    
    URL <-> NSURL
    $s10Foundation3URLV19_bridgeToObjectiveCSo5NSURLCyF
        Foundation.URL._bridgeToObjectiveC(URL) -> NSURL
    $s10Foundation3URLV36_unconditionallyBridgeFromObjectiveCyACSo5NSURLCSgFZ
        Foundation.URL._unconditionallyBridgeFromObjectiveC(NSURL) -> URL
    $s10Foundation10URLRequestV19_bridgeToObjectiveCSo12NSURLRequestCyF
        Foundation.URLRequest._bridgeToObjectiveC() -> __C.NSURLRequest
    $s10Foundation10URLRequestV36_unconditionallyBridgeFromObjectiveCyACSo12NSURLRequestCSgFZ
        Foundation.URLRequest._unconditionallyBridgeFromObjectiveC(NSURLRequest) -> URLRequest
    $s10Foundation13URLComponentsV19_bridgeToObjectiveCSo15NSURLComponentsCyF
        Foundation.URLComponents._bridgeToObjectiveC(URLComponents) -> NSURLComponents
    $s10Foundation13URLComponentsV36_unconditionallyBridgeFromObjectiveCyACSo15NSURLComponentsCSgFZ
        Foundation.URLComponents._unconditionallyBridgeFromObjectiveC(NSURLComponents) -> URLComponents
    $s10Foundation12URLQueryItemV19_bridgeToObjectiveCSo010NSURLQueryC0CyF
        Foundation.URLQueryItem._bridgeToObjectiveC(URLQueryItem) -> NSURLQueryItem
    $s10Foundation12URLQueryItemV36_unconditionallyBridgeFromObjectiveCyACSo010NSURLQueryC0CSgFZ
        Foundation.URLQueryItem._unconditionallyBridgeFromObjectiveC(NSURLQueryItem?) -> URLQueryItem
    
    Calendar <-> NSCalendar
    $s10Foundation8CalendarV19_bridgeToObjectiveCSo10NSCalendarCyF
        Foundation.Calendar._bridgeToObjectiveC(Calendar) -> NSCalendar
    $s10Foundation8CalendarV36_unconditionallyBridgeFromObjectiveCyACSo10NSCalendarCSgFZ
        Foundation.Calendar._unconditionallyBridgeFromObjectiveC(NSCalendar) -> Calendar
    
    TimeZone <-> NSTime
    $s10Foundation8TimeZoneV19_bridgeToObjectiveCSo06NSTimeC0CyF
        Foundation.TimeZone._bridgeToObjectiveC() -> NSTimeZone
    $s10Foundation8TimeZoneV36_unconditionallyBridgeFromObjectiveCyACSo06NSTimeC0CSgFZ
        Foundation.TimeZone._unconditionallyBridgeFromObjectiveC(NSTimeZone) -> TimeZone
    
    Swift.Error <-> NSError
    $ss20_SwiftNewtypeWrapperP10Foundations5Error_p8RawValueRtzrlE19_bridgeToObjectiveCSo7NSErrorCyF
        Swift._SwiftNewtypeWrapper< where A.RawValue == Swift.Error>._bridgeToObjectiveC() -> NSError
    $ss20_SwiftNewtypeWrapperP10Foundations5Error_p8RawValueRtzrlE36_unconditionallyBridgeFromObjectiveCyxSo7NSErrorCSgFZ
        Swift._SwiftNewtypeWrapper<Swift.Error>._unconditionallyBridgeFromObjectiveC(NSError?) -> Swift.Error
    
    Date <-> NSDate
    $s10Foundation4DateV19_bridgeToObjectiveCSo6NSDateCyF
        Foundation.Date._bridgeToObjectiveC() -> NSDate
    $s10Foundation4DateV36_unconditionallyBridgeFromObjectiveCyACSo6NSDateCSgFZ 
        Date._unconditionallyBridgeFromObjectiveC(NSDate) -> Date
    $s10Foundation12DateIntervalV19_bridgeToObjectiveCSo06NSDateC0CyF
        Foundation.DateInterval._bridgeToObjectiveC() -> NSDateInterval
    $s10Foundation12DateIntervalV36_unconditionallyBridgeFromObjectiveCyACSo06NSDateC0CSgFZ
        Foundation.DateInterval._unconditionallyBridgeFromObjectiveC(NSDateInterval?) -> DateInterval
    $s10Foundation14DateComponentsV19_bridgeToObjectiveCSo06NSDateC0CyF
        Foundation.DateComponents._bridgeToObjectiveC() -> NSDateComponents
    $s10Foundation14DateComponentsV36_unconditionallyBridgeFromObjectiveCyACSo06NSDateC0CSgFZ
        Foundation.DateComponents._unconditionallyBridgeFromObjectiveC(NSDateComponents) -> DateComponents
    
    UUID <-> NSUUID
    $s10Foundation4UUIDV19_bridgeToObjectiveCSo6NSUUIDCyF
        Foundation.UUID._bridgeToObjectiveC() -> NSUUID
    $s10Foundation4UUIDV36_unconditionallyBridgeFromObjectiveCyACSo6NSUUIDCSgFZ
        Foundation.UUID._unconditionallyBridgeFromObjectiveC(NSUUID) -> Foundation.UUID
    
    Other
    $s10Foundation8IndexSetV19_bridgeToObjectiveCSo07NSIndexC0CyF
        Foundation.IndexSet._bridgeToObjectiveC(IndexSet) -> NSIndexSet
    $s10Foundation8IndexSetV36_unconditionallyBridgeFromObjectiveCyACSo07NSIndexC0CSgFZ
        Foundation.IndexSet._unconditionallyBridgeFromObjectiveC(NSIndexSet) -> IndexSet
    $sSo8CGVectorV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
        CGVector._bridgeToObjectiveC() -> NSValue
    $sSo8CGVectorV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
        CGVector._unconditionallyBridgeFromObjectiveC(NSValue) -> CGVector
    $sSo7CGPointV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
        CGPoint._bridgeToObjectiveC() -> NSValue
    $sSo7CGPointV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
        CGPoint._unconditionallyBridgeFromObjectiveC(NSValue) -> CGPoint
    $sSo9NSDecimala10FoundationE19_bridgeToObjectiveCSo0A6NumberCyF
        NSDecimal._bridgeToObjectiveC() -> NSDecimalNumber
    $sSo9NSDecimala10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo0A6NumberCSgFZ
        NSDecimal._unconditionallyBridgeFromObjectiveC(NSDecimalNumber) -> NSDecimal
    $sSo17CGAffineTransformV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
        CGAffineTransform._bridgeToObjectiveC() -> NSValue
    $sSo17CGAffineTransformV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
        CGAffineTransform._unconditionallyBridgeFromObjectiveC(NSValue) -> CGAffineTransform
    $s10Foundation12CharacterSetV19_bridgeToObjectiveCSo011NSCharacterC0CyF
        Foundation.CharacterSet._bridgeToObjectiveC() -> NSCharacterSet
    $s10Foundation12CharacterSetV36_unconditionallyBridgeFromObjectiveCyACSo011NSCharacterC0CSgFZ
        Foundation.CharacterSet._unconditionallyBridgeFromObjectiveC(NSCharacterSet) -> CharacterSet
    $s10Foundation6LocaleV19_bridgeToObjectiveCSo8NSLocaleCyF
        Foundation.Locale._bridgeToObjectiveC() -> NSLocale
    $s10Foundation6LocaleV36_unconditionallyBridgeFromObjectiveCyACSo8NSLocaleCSgFZ
        Foundation.Locale._unconditionallyBridgeFromObjectiveC(NSLocale) -> Locale
    $sSo8_NSRangeV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
        NSRange._bridgeToObjectiveC() -> NSValue
    $sSo8_NSRangeV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
        NSRange._unconditionallyBridgeFromObjectiveC(NSValue) -> NSRange
    $sSo6CGRectV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
        CGRect._bridgeToObjectiveC() -> NSValue
    $sSo6CGRectV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
        CGRect._unconditionallyBridgeFromObjectiveC(NSValue) -> CGRect
    $sSo6CGSizeV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
        CGSize._bridgeToObjectiveC() -> NSValue
    $sSo6CGSizeV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
        CGSize._unconditionallyBridgeFromObjectiveC(NSValue) -> CGSize
    $s10Foundation12NotificationV19_bridgeToObjectiveCSo14NSNotificationCyF 
        Foundation.Notification._bridgeToObjectiveC() -> NSNotification
    $s10Foundation12NotificationV36_unconditionallyBridgeFromObjectiveCyACSo14NSNotificationCSgFZ       
        Foundation.Notification._unconditionallyBridgeFromObjectiveC(NSNotification?) -> Notification
    $ss20_SwiftNewtypeWrapperPs8RawValueRmzCrlE19_bridgeToObjectiveCADyF
        Swift._SwiftNewtypeWrapper<AnyObject>._bridgeToObjectiveC(AnyObject) -> RawValue
    $ss20_SwiftNewtypeWrapperPs8RawValueRmzCrlE36_unconditionallyBridgeFromObjectiveCyxADSgFZ
        Swift._SwiftNewtypeWrapper<AnyObject>._unconditionallyBridgeFromObjectiveC(RawValue) -> AnyObject
    $sSq19_bridgeToObjectiveCyXlyF
        Swift.Optional._bridgeToObjectiveC() -> Swift.AnyObject
    $sSq36_unconditionallyBridgeFromObjectiveCyxSgyXlSgFZ
        Swift.Optional._unconditionallyBridgeFromObjectiveC(Swift.AnyObject) -> AnyObject
    $ss19_BridgeableMetatypeV19_bridgeToObjectiveCyXlyF
        Swift._BridgeableMetatype._bridgeToObjectiveC() -> Swift.AnyObject
    $ss19_BridgeableMetatypeV36_unconditionallyBridgeFromObjectiveCyAByXlSgFZ
        Swift._BridgeableMetatype._unconditionallyBridgeFromObjectiveC(AnyObject) -> _BridgeableMetatype
    $s8Dispatch0A4DataV19_bridgeToObjectiveCSo16OS_dispatch_dataCyF
        Dispatch.DispatchData._bridgeToObjectiveC() -> OS_dispatch_data
    $s8Dispatch0A4DataV36_unconditionallyBridgeFromObjectiveCyACSo16OS_dispatch_dataCSgFZ
        Dispatch.DispatchData._unconditionallyBridgeFromObjectiveC(OS_dispatch_data) -> DispatchData
    $s10Foundation11MeasurementV19_bridgeToObjectiveCSo13NSMeasurementCyF
        Foundation.Measurement._bridgeToObjectiveC(Measurement) -> NSMeasurement
    $s10Foundation11MeasurementV36_unconditionallyBridgeFromObjectiveCyACyxGSo13NSMeasurementCSgFZ
        Foundation.Measurement._unconditionallyBridgeFromObjectiveC(NSMeasurement) -> Measurement
    $s10Foundation9IndexPathV19_bridgeToObjectiveCSo07NSIndexC0CyF
        Foundation.IndexPath._bridgeToObjectiveC(IndexPath) -> NSIndexPath
    $s10Foundation9IndexPathV36_unconditionallyBridgeFromObjectiveCyACSo07NSIndexC0CSgFZ
        Foundation.IndexPath._unconditionallyBridgeFromObjectiveC(NSIndexPath) -> IndexPath
    $s10Foundation20PersonNameComponentsV19_bridgeToObjectiveCSo08NSPersoncD0CyF
        Foundation.PersonNameComponents._bridgeToObjectiveC(PersonNameComponents) -> NSPersonNameComponents
    $s10Foundation20PersonNameComponentsV36_unconditionallyBridgeFromObjectiveCyACSo08NSPersoncD0CSgFZ  
        PersonNameComponents._unconditionallyBridgeFromObjectiveC(NSPersonNameComponents) -> PersonNameComponents
    

    相关文章

      网友评论

          本文标题:Swift逆向之一

          本文链接:https://www.haomeiwen.com/subject/hhpuvltx.html