一、安装和简介
a) download url
b) Reveal 使用的方法有两种: Static Library Intefration, Dynamic Library Intefration。(我们使用 Dynamic Library Intefration)
二、Dynamic Library Intefration
a) 打开 Reveal -> Help -> Show Reveal Library In Finder, copy libReveal.dylib 到目标 app 的 Documents 目录。(我使用的是新浪的天气通)
b) 创建 RevealUtil.h 和 RevealUtil.m,来自《iOS应用逆向工程》。
RevealUtil.h
#import <Foundation/Foundation.h> @interface RevealUtil : NSObject {
@private
void* revealLib;
} - (void)startReveal;
- (void)stopReveal; @end
RevealUtil.m
#import "RevealUtil.h"
#import <dlfcn.h> @implementation RevealUtil - (void)startReveal {
NSString* revealLibName = @"libReveal.dylib";
NSString* documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString* dyLibPath = [documentDirectory stringByAppendingPathComponent:revealLibName]; revealLib = dlopen([dyLibPath cStringUsingEncoding:NSUTF8StringEncoding], RTLD_NOW); if (revealLib == nil) {
char *error = dlerror();
NSLog(@"dlopen error: %s", error); } else {
[[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:self];
}
} - (void)stopReveal {
if (revealLib != nil) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStop" object:self]; if (dlclose(revealLib) == 0) {
revealLib = nil; } else {
char *error = dlerror();
NSLog(@"Reveal Library could not be unloaded: %s", error);
}
}
} @end
c) 创建一个 Theos Tweak 项目(ref)
d) 修改 xxxtweak.plist,如下
e) 修改 Tweak.xm 如下, (注意:这里 hook 的 class name 一定要对应,我这里是凭感觉猜的)
f) 修改 makefile 文件,如下
g) 打包安装到 ios 设备上,先关闭之前代开的目标应用,然后重新打开,并打开 mac 端的 Reveal,会有如下效果:(注意:保持 ios 设备和 mac 处于同一网段)