-
-
[分享]直观监控任意APP的UI界面
-
发表于:
2013-8-13 15:30
11156
-
小弟潜水良久,之前在此学习了不少知识。。。希望有机会也能回馈大家一些。
今天介绍一个动态监控任意APP的UI的工具,
Reveal
具体下载大家看上面的链接,这个工具主要可以帮助测试人员调试与人员原因调整UI控件使用,但是我们可以通过hook的方法加载给任意APP达到监控UI界面的目的,方便我们获取界面参数与hook程序。
环境:Mac OSX 10.8 and iOS 6
普通的使用方法我们这里就不介绍了,我直接说hook的使用方法
下载下压缩后,解压,里面有多种格式供使用,这里我们选择libReveal.dylib
我们只要在需要监控的app启动时挂载这个dylib就可以成功监控它了,
接下来上代码
-(BOOL)application:(id)application didFinishLaunchingWithOptions:(id)options
将下面的代码hook在这个函数中就可以了。
NSString *revealLibName = @"libReveal";
NSString *revealLibExtension = @"dylib";
NSString *dyLibPath = klibPath;
NSLog(@"Loading dynamic library: %@", dyLibPath);
void *revealLib = NULL;
revealLib = dlopen([dyLibPath cStringUsingEncoding:NSUTF8StringEncoding], RTLD_NOW);
if (revealLib == NULL)
{
char *error = dlerror();
NSLog(@"dlopen error: %s", error);
NSString *message = [NSString stringWithFormat:@"%@.%@ failed to load with error: %s", revealLibName, revealLibExtension, error];
[[[UIAlertView alloc] initWithTitle:@"Reveal library could not be loaded" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
}
else
{
[[[UIAlertView alloc] initWithTitle:@"Reveal library could be loaded" message:@"ok" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
[[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:self];
}
如果正常的话刚才下载的reveal应该会显示界面了~
PS:app要和电脑在一个wifi环境下哦。
顺便打一下广告~~:咱的微博
@月之舞狼
***********~
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课