回复
黑皇帝安全网
管理员
管理员
  • 金钱95848枚
  • 威望90274点
  • 贡献值89936点
  • 注册日期2009-09-12
  • 最后登录2019-01-02
  • 荣誉会员
  • VIP会员
  • 社区版主
阅读:1291723回复:821

获取监听苹果手机的通话记录,短信内容

楼主#
更多 发布于:2009-09-20 12:00

 

首先导入库框架#import <sqlite3.h>

 

越狱后的手机的数据库文件可以自由访问,通话记录通常保存在call_History.db这个文件中.只要读取这个文件,我们就能知道目前手机的通话记录了

下面这段代码检测手机是否能读取到Call_History.db

//检测手机能否读取到Call_History.db
- (void)initData{
NSFileManager *fileManager=[NSFileManager defaultManager];
NSDirectoryEnumerator *dirum=[[NSFileManager defaultManager]enumeratorAtPath:@"/private/"];
NSString *nextItem=[NSString string];
while ((nextItem=[dirum nextObject])) {
if ([[nextItem pathExtension] isEqualToString:@"db"]||
[[nextItem pathExtension]isEqualToString:@"sqlitedb"]) {
if ([fileManager isReadableFileAtPath:nextItem]) {
NSLog(@"%@",nextItem);
}
}
}
}

//读取数据库中的内容 具体怎样显示自己定制
- (void)readCallLogs{
if (self.dataArray==nil) {
self.dataArray=[[NSMutableArray alloc]init];
}
[self.dataArray removeAllObjects];
NSFileManager *fileManager=[NSFileManager defaultManager];
NSString *callHistory[email protected]"var/wireless/Library/CallHistory/call_history.db";
BOOL callHistoryFileExist=FALSE;
callHistoryFileExist=[fileManager fileExistsAtPath:callHistoryDatabasePath];

if (callHistoryFileExist) {
if ([fileManager isReadableFileAtPath:callHistoryDatabasePath]) {
sqlite3 *database;
if (sqlite3_open([callHistoryDatabasePath UTF8String], &database)==SQLITE_OK) {
sqlite3_stmt *compiledStatement;
NSString *[email protected]"SELECT * FROM call";
//////////////
int errorCode=sqlite3_prepare_v2(database, [sqlStatement UTF8String], -1, &compiledStatement, NULL);
if (errorCode==SQLITE_OK) {
int count=1;
while (sqlite3_step(compiledStatement)==SQLITE_ROW) {
//Read the data from the result row
NSMutableDictionary *callHistoryItem=[[NSMutableDictionary alloc]init];
int numOfColumns=sqlite3_column_count(compiledStatement);
NSString *data;
NSString *columnName;
for (int i= 0; i<numOfColumns; i++) {
columnName=[[NSString alloc]initWithUTF8String:(char *)sqlite3_column_name(compiledStatement, i)];
data=[[NSString alloc]initWithUTF8String:(char *)sqlite3_column_text(compiledStatement, i)];
}
//放入字典
[callHistoryItem setObject:data forKey:columnName];
[self.dataArray addObject:callHistoryItem];
count++;
}

}else{

NSLog(@"Failed to retrieve table");
NSLog(@"Error Code :%d",errorCode);
}
sqlite3_finalize(compiledStatement);

}
}
}
NSLog(@"%@",self.dataArray);
}