iOS取得実行中のプロセス
転載先:http://www.jianshu.com/p/ec27662c1557
コードは以下の通りです
著作権は作者の所有に属する
文/IamOnelong(簡潔書の著者)原文のリンク:http://www.jianshu.com/p/ec27662c1557 著作権は著者の所有になります.転載は著者に連絡して授権し、「略書の作者」と表示してください.
コードは以下の通りです
// .h
@interfaceUIDevice (ProcessesAdditions)
- (NSArray*)runningProcesses;
@end
// .m
#import"UIDevice+ProcessesAdditions.h"
@implementationUIDevice (ProcessesAdditions)
- (NSArray*)runningProcesses {
intmib[4] = {CTL_KERN,KERN_PROC,KERN_PROC_ALL, 0};
intmiblen = 4;
size_tsize;
intst =sysctl(mib, miblen,NULL, &size,NULL, 0);
structkinfo_proc* process =NULL;
structkinfo_proc* newprocess =NULL;
do{
size += size / 10;
newprocess =realloc(process, size);
if(!newprocess){
if(process){
free(process);
}
return nil;
}
process = newprocess;
st =sysctl(mib, miblen, process, &size,NULL, 0);
}while(st == -1 &&errno==ENOMEM);
if(st == 0){
if(size %sizeof(structkinfo_proc) == 0){
longnprocess = size/sizeof(structkinfo_proc);
if(nprocess){
NSMutableArray* array = [[NSMutableArrayalloc]init];
for(longi = nprocess - 1; i >= 0; i--){
NSString* processID = [[NSStringalloc]initWithFormat:@"%d", process[i].kp_proc.p_pid];
NSString* processName = [[NSStringalloc]initWithFormat:@"%s", process[i].kp_proc.p_comm];
NSDictionary* dict = [[NSDictionaryalloc]initWithObjects:[NSArrayarrayWithObjects:processID, processName,nil] forKeys:[NSArrayarrayWithObjects:@"ProcessID",@"ProcessName",nil]];
[processIDrelease];
[processNamerelease];
[arrayaddObject:dict];
[dictrelease];
}
free(process);
return [arrayautorelease];
}
}
}
return nil;
}
@end
どう使いますかNSArray* processes = [[UIDevice currentDevice] runningProcesses];
for(NSDictionary* dictinprocesses){
NSLog(@"%@ - %@", [dictobjectForKey:@"ProcessID"], [dictobjectForKey:@"ProcessName"]);
}
以上のコードはiOS 8ですぐに使えます.iOS 9でセキュリティを強化しました.syssctlを呼び出してプロセスを取得することはできません.でも大丈夫だと思います.同時にあなたの仕事を邪魔します. 脱獄していないiPhone 6(iOS 8.1.3)で釣り攻撃(App Storeパスワードを盗む)を行い、システムバージョンを確認することで釣りが完了します.著作権は作者の所有に属する
文/IamOnelong(簡潔書の著者)原文のリンク:http://www.jianshu.com/p/ec27662c1557 著作権は著者の所有になります.転載は著者に連絡して授権し、「略書の作者」と表示してください.