动态库注入的问题请教

网上找到的一个注入动态库的方法,试了一下有效果,具体细节如下,不过有三个问题要请教,请见后面:
hook 支付宝app 程序中 ALPLauncherController 的 viewDidLoad 方法,具体方法是利用 Method Swizzling 。
#import <UIKit/UIKit.h>
#import <objc/runtime.h>

@implementation UIViewController(HookPortal)

-(void)myViewDidLoad
{
NSLog(@"-----------------------myViewDidLoad ----------------------");
}

@end

static void attribute((constructor))initialize(void)
{
NSLog(@"=======================initialize ========================");

Class class =objc_getClass("ALPLauncherController");
Method ori_Method =  class_getInstanceMethod(class,@selector(viewDidLoad));
Method my_Method =class_getInstanceMethod(class, @selector(myViewDidLoad));
method_exchangeImplementations(ori_Method,my_Method);

}

相关问题:
1. 注入动态库的 NSLog输出日志在哪里可以看到输出?系统会记录吗?
2. 如上动态库去hook支付宝的ALPLauncherController类下的viewDidLoad方法,这个类名和方法名如何得知,是不是只能通过反汇编的方式查看,有比较简便的办法吗?
3. 目前通过得到某个app下指定类名下的方法名可以成功hook并注入我自己的代码,我现在想要一个效果就是每个app 一启动的时候便自动hook我要的指定方法,有没有统一的实现,不然每个app我要单独去查找指定的启动类和方法名,这样工作量太大了。

请群主针对如上三个问题帮忙回答指导一下,成分感激!

  1. 看书
  2. 看书
  3. CydiaSubstrate的效果不就是你描述的这样?

Class originalClass = NSClassFromString(@“CalculatorController”);
Method originalMeth = class_getInstanceMethod(originalClass, @selector(showAbout:));
sOriginalImp = method_getImplementation(originalMeth);

Method replacementMeth = class_getInstanceMethod(NSClassFromString(@"ACCalculatorOverrides"), @selector(patchedShowAbout:));
method_exchangeImplementations(originalMeth, replacementMeth);

还有:NSString *Str = [NSString stringWithFormat:@“DYLD_INSERT_LIBRARIES=”%@" “%@” &", dyldLib, MyPath]