使用iosopendev来hook唱吧的一个函数。
ipod5,xcode6.1
使用Clutch把唱吧(ktv)破解成ipa,并移到mac上解压,再使用class-dump-z把类信息获取出来。
目标是ktv在搜索时执行的函数。
看应用的界面,对应dump出来的类,可以推测搜索界面的controller应该是SearchMusicViewController。
所以先hook这个类的一些函数来确认一下:
#import <UIKit/UIKit.h>
%hook SearchMusicViewController
-(void)goBack:(id)back
{
NSLog(@"-----------ktv SearchMusicViewController goBack------------");
%orig;
}
-(void)doSearch
{
NSLog(@"-----------ktv SearchMusicViewController doSearch------------");
%orig;
}
-(void)searchBarTextDidEndEditing:(id)searchBarText
{
NSLog(@"-----------searchText:%@------------", (NSString*)searchBarText);
%orig;
}
%end
创建一个Logos Tweak的项目。
在xm中加入上面的代码。
编译,profiling到手机。
注意:
1. 注意cpu指令集,我一开始只使用armv7s,结果编译到手机执行后总是hook不到信息(连springboard都hook不到),最后查看syslog,看到warning说加载hookKTV.dylib时cpu类型不对。把armv7/armv64/armv7s都加上好了。
2. 添加libsubstrate.dylib到项目,要加入/opt/iOSOpenDev/lib里面的libsubstrate.dylib。
3. hookKTV.plist的Root/Filter/Bundles里面增加一项,填上com.changba.ktv,让ktv启动时加载hookKTV.dylib。
socat到syslog,watch信息,可以看到操作搜索界面时的输出。
可以看到,搜索的请求链接在doSearch函数内部完成,问题是这个函数还有没有调用其它函数呢?
查看dump到的类,看到一个这样的类:ChangbaSecret。
hook这个类里面的函数,比如:
+(id)AppendSecretString:(id)string Device:(BOOL)device
{
id ret = %orig(string, device);
NSLog(@"-----------ChangbaSecret AppendSecretString %@ %d %@------------", string, device, ret);
return ret;
}
运行后,可以看到,这个函数在做检验的工作,输入的是http://www....&keyword=.. 输出的是http://www....&keyword=..&secret=...
而输出的链接(加上了secret检验),可以直接使用来请求数据了。
ipod5,xcode6.1
使用Clutch把唱吧(ktv)破解成ipa,并移到mac上解压,再使用class-dump-z把类信息获取出来。
目标是ktv在搜索时执行的函数。
看应用的界面,对应dump出来的类,可以推测搜索界面的controller应该是SearchMusicViewController。
所以先hook这个类的一些函数来确认一下:
#import <UIKit/UIKit.h>
%hook SearchMusicViewController
-(void)goBack:(id)back
{
NSLog(@"-----------ktv SearchMusicViewController goBack------------");
%orig;
}
-(void)doSearch
{
NSLog(@"-----------ktv SearchMusicViewController doSearch------------");
%orig;
}
-(void)searchBarTextDidEndEditing:(id)searchBarText
{
NSLog(@"-----------searchText:%@------------", (NSString*)searchBarText);
%orig;
}
%end
创建一个Logos Tweak的项目。
在xm中加入上面的代码。
编译,profiling到手机。
注意:
1. 注意cpu指令集,我一开始只使用armv7s,结果编译到手机执行后总是hook不到信息(连springboard都hook不到),最后查看syslog,看到warning说加载hookKTV.dylib时cpu类型不对。把armv7/armv64/armv7s都加上好了。
2. 添加libsubstrate.dylib到项目,要加入/opt/iOSOpenDev/lib里面的libsubstrate.dylib。
3. hookKTV.plist的Root/Filter/Bundles里面增加一项,填上com.changba.ktv,让ktv启动时加载hookKTV.dylib。
socat到syslog,watch信息,可以看到操作搜索界面时的输出。
可以看到,搜索的请求链接在doSearch函数内部完成,问题是这个函数还有没有调用其它函数呢?
查看dump到的类,看到一个这样的类:ChangbaSecret。
hook这个类里面的函数,比如:
+(id)AppendSecretString:(id)string Device:(BOOL)device
{
id ret = %orig(string, device);
NSLog(@"-----------ChangbaSecret AppendSecretString %@ %d %@------------", string, device, ret);
return ret;
}
运行后,可以看到,这个函数在做检验的工作,输入的是http://www....&keyword=.. 输出的是http://www....&keyword=..&secret=...
而输出的链接(加上了secret检验),可以直接使用来请求数据了。