five

作者: lifeLL | 来源:发表于2017-09-28 11:15 被阅读0次
    1、iOS,tweak特指那些能够增强其他进程功能的dylib。
    2、一个tweak的核心是各种hook,而绝大部分的hook是针对Object-C方法的。
    3、对象、方法、实现是tweak的主战场。
    4、在OC里,方法和实现的关系不是在编译时决定,而是在运行时决定。
    5、我们可以通过改变实现和方法的对应关系,赋予一个方法新的意义,从而达到更改对象功能的目的,
    6、description函数能够把对象的内容表示成一个NSString,object_getClassName函数能够把对象的类名表示成一个char*,两者可分别用%@、%s打印出来,这个就是解析参数提供了足够的参考。
    %hook SBScreenFlash
    - (void)flashColor:(id)arg1 withCompletion:(id)arg2 {
    %orig;
    NSLog(@"iOSRE: flashColor: %s, %@", object_getClassName(arg1), arg1); // [arg1 description]       arg1
    }
    %end
    7、grep LibNotifyWatch: /var/log/syslog
    8、确认 PhoneSettingsController所在的目标文件来自Preferences.app还是来自一个PreferenceBundle:
    ----
    FunMaker-5:~ root# grep -r PhoneSettingsController /Applications/Preferences.app/
    ----
    Yuanlingde-iPhone:~ root# grep -r PhoneSettingsController /System/Library/
    Binary file /System/Library/Caches/com.apple.dyld/dyld_shared_cache_armv7s matches
    grep: /System/Library/Frameworks/CoreGraphics.framework/Resources/libCGCorePDF.dylib: No such file or directory
    grep: /System/Library/Frameworks/CoreGraphics.framework/Resources/libCMSBuiltin.dylib: No such file or directory
    grep: /System/Library/Frameworks/CoreGraphics.framework/Resources/libCMaps.dylib: No such file or directory
    grep: /System/Library/Frameworks/System.framework/System: No such file or directory
    Binary file /System/Library/PreferenceBundles/MobilePhoneSettings.bundle/Info.plist matches
    Yuanlingde-iPhone:~ root# 
    ==》得出在这个MobilePhoneSettings.bundle
    9、
    ----
    [receiver message]
    objc_msgSend(receiver,@selector(message))
    ----
    [receiver message:arg1 foo:arg2 bar:arg3]
    objc_msgSend(receiver,@selector(message),arg1,arg2,arg
    objc_msgSend(R0,R1,R2,R3,*SP,* (SP+sizeOfLastArg),...)
    [R0 R1:R2 foo:R3 bar:*SP baz:* (SP+sizeOfLastArg qux:...]
    10、金句:函数的前4个参数放在R0~R3,其他参数存放在栈中,函数返回值放在R0.
    10、用LLDB看看这个方法到底执行了什么操作。
    (lldb) p (char *)$r2
    (char *) $2 = 0x2c4140f2 "_sendAction:withEvent:"//打印出方法SEL
    ----
    (lldb) x/10 $sp
    0x003735a8: 0x160a6120 0x00000001 0x14d73c90 0x160a6120 0x003735b8: 0x2c3d9be5 0x003735d4 0x2bc6ebd1 0x14d73c90 0x003735c8: 0x160a6120 0x00000040 //打印栈
    ----
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:five

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