mirror of
https://github.com/objective-see/TaskExplorer.git
synced 2026-03-22 07:02:39 +00:00
support for displaying & filtering packed files
support for displaying & filtering encrypted files support for enumerating dylibs in 32bit processes UI improvements (main text in cells is single, albeit attributed string)
This commit is contained in:
+3
-1
@@ -18,7 +18,9 @@
|
||||
|
||||
//TODO: filter out dup'd networks (airportd 0:0..) -not sure want to do this
|
||||
//TODO: autolayout vertically
|
||||
//TODO: show 'from where' via quarantine attrz
|
||||
//TODO: show 'from where' via quarantine attrz or database!! (simon email)
|
||||
//TODO: detect as procs die via GCD (simon blog post)
|
||||
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
|
||||
@@ -57,6 +57,9 @@
|
||||
//path to LSOF
|
||||
#define LSOF @"/usr/sbin/lsof"
|
||||
|
||||
//path to vmmap32
|
||||
#define VMMAP_32 @"/usr/bin/vmmap32"
|
||||
|
||||
//path to vmmap
|
||||
#define VMMAP @"/usr/bin/vmmap"
|
||||
|
||||
@@ -131,8 +134,6 @@
|
||||
//id (tag) for path
|
||||
#define TABLE_ROW_PATH_LABEL 101
|
||||
|
||||
//id (tag) for plist
|
||||
#define TABLE_ROW_PID_LABEL 102
|
||||
|
||||
//id (tag) for 'virus total' button
|
||||
#define TABLE_ROW_VT_BUTTON 103
|
||||
|
||||
@@ -35,6 +35,14 @@
|
||||
// ->determine if binary is flagged by VT
|
||||
-(BOOL)isFlagged:(Binary*)item;
|
||||
|
||||
//keyword filter '#encrypted'
|
||||
// ->determine if binary is encrypted
|
||||
-(BOOL)isEncrypted:(Binary*)item;
|
||||
|
||||
//keyword filter '#packed'
|
||||
// ->determine if binary is packed
|
||||
-(BOOL)isPacked:(Binary*)item;
|
||||
|
||||
//filter tasks
|
||||
-(void)filterTasks:(NSString*)filterText items:(NSMutableDictionary*)items results:(NSMutableArray*)results;
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#import "Connection.h"
|
||||
|
||||
//binary filter keywords
|
||||
NSString * const BINARY_KEYWORDS[] = {@"#apple", @"#nonapple", @"#signed", @"#unsigned", @"#flagged"};
|
||||
NSString * const BINARY_KEYWORDS[] = {@"#apple", @"#nonapple", @"#signed", @"#unsigned", @"#flagged", @"#encrypted", @"#packed"};
|
||||
|
||||
@implementation Filter
|
||||
|
||||
@@ -384,6 +384,29 @@ NSString * const BINARY_KEYWORDS[] = {@"#apple", @"#nonapple", @"#signed", @"#un
|
||||
goto bail;
|
||||
}
|
||||
|
||||
//handle '#encrypted'
|
||||
else if( (YES == [keyword isEqualToString:@"#encrypted"]) &&
|
||||
(YES == [self isEncrypted:binary]) )
|
||||
{
|
||||
//happy
|
||||
fulfills = YES;
|
||||
|
||||
//bail
|
||||
goto bail;
|
||||
}
|
||||
|
||||
//handle '#packed'
|
||||
else if( (YES == [keyword isEqualToString:@"#packed"]) &&
|
||||
(YES == [self isPacked:binary]) )
|
||||
{
|
||||
//happy
|
||||
fulfills = YES;
|
||||
|
||||
//bail
|
||||
goto bail;
|
||||
}
|
||||
|
||||
|
||||
//bail
|
||||
bail:
|
||||
|
||||
@@ -463,4 +486,40 @@ bail:
|
||||
}
|
||||
|
||||
|
||||
//keyword filter '#encrypted'
|
||||
// ->determine if binary is encrypted
|
||||
-(BOOL)isEncrypted:(Binary *)item
|
||||
{
|
||||
//make sure item was parsed
|
||||
if(nil == item.parser)
|
||||
{
|
||||
//parse
|
||||
[item parse];
|
||||
|
||||
//save encrypted flag
|
||||
item.isEncrypted = [item.parser.binaryInfo[KEY_IS_ENCRYPTED] boolValue];
|
||||
}
|
||||
|
||||
//set flag
|
||||
return item.isEncrypted;
|
||||
}
|
||||
|
||||
//keyword filter '#packed'
|
||||
// ->determine if binary is packed
|
||||
-(BOOL)isPacked:(Binary *)item
|
||||
{
|
||||
//make sure item was parsed
|
||||
if(nil == item.parser)
|
||||
{
|
||||
//parse
|
||||
[item parse];
|
||||
|
||||
//save packed flag
|
||||
item.isPacked = [item.parser.binaryInfo[KEY_IS_PACKED] boolValue];
|
||||
}
|
||||
|
||||
//set flag
|
||||
return item.isPacked;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -25,6 +25,7 @@ NSTableCellView* createFlaggedItemView(NSTableView* tableView, id owner, id item
|
||||
//create & customize global dylib/file view
|
||||
NSTableCellView* createLoadedItemView(NSTableView* tableView, id owner, id item);
|
||||
|
||||
|
||||
//create & customize task view
|
||||
NSTableCellView* createTaskView(NSTableView* tableView, id owner, id item);
|
||||
|
||||
@@ -40,6 +41,9 @@ NSTableCellView* createNetworkView(NSTableView* tableView, id owner, Connection*
|
||||
//add a tracking area to a view within the item view
|
||||
void addTrackingArea(NSTableCellView* itemView, NSUInteger subviewTag, id owner);
|
||||
|
||||
//build item + 'loaded in' string for dylibs, files, etc in search window
|
||||
NSAttributedString* initLoadedInString(id item);
|
||||
|
||||
//set code signing image
|
||||
// ->either signed, unsigned, or unknown
|
||||
NSImage* getCodeSigningIcon(Binary* binary);
|
||||
|
||||
+220
-127
@@ -153,58 +153,6 @@ NSTableCellView* createLoadedItemView(NSTableView* tableView, id owner, id item)
|
||||
//item cell
|
||||
NSTableCellView* loadedItemCell = nil;
|
||||
|
||||
//matching or host tasks
|
||||
NSMutableArray* tasks = nil;
|
||||
|
||||
//pid or 'loaded in' string
|
||||
NSMutableString* loadedIn = nil;
|
||||
|
||||
//task's name frame
|
||||
CGRect nameFrame = {0};
|
||||
|
||||
//get host tasks
|
||||
// ->works with dylibs or files
|
||||
tasks = [((AppDelegate*)[[NSApplication sharedApplication] delegate]).taskEnumerator loadedIn:item];
|
||||
|
||||
//add dylib indicator
|
||||
//-> '(dylib, loaded in: ... '
|
||||
if(YES == [item isKindOfClass:[Binary class]])
|
||||
{
|
||||
//init
|
||||
loadedIn = [NSMutableString stringWithFormat:@"(dylib, loaded in:"];
|
||||
}
|
||||
//add file indicator
|
||||
//-> '(file, loaded in: ... '
|
||||
else if(YES == [item isKindOfClass:[File class]])
|
||||
{
|
||||
//init
|
||||
loadedIn = [NSMutableString stringWithFormat:@"(file, loaded in:"];
|
||||
}
|
||||
//add connection indicator
|
||||
//-> '(connection, in: ... '
|
||||
else if(YES == [item isKindOfClass:[Connection class]])
|
||||
{
|
||||
//init
|
||||
loadedIn = [NSMutableString stringWithFormat:@"(connection, in:"];
|
||||
}
|
||||
|
||||
//add all tasks
|
||||
for(Task* task in tasks)
|
||||
{
|
||||
//append name
|
||||
[loadedIn appendFormat:@" %@,", task.binary.name];
|
||||
}
|
||||
|
||||
//remove last ','
|
||||
if(YES == [loadedIn hasSuffix:@","])
|
||||
{
|
||||
//remove
|
||||
[loadedIn deleteCharactersInRange:NSMakeRange([loadedIn length]-1, 1)];
|
||||
}
|
||||
|
||||
//terminate list/output
|
||||
[loadedIn appendString:@")"];
|
||||
|
||||
//dylibs
|
||||
// ->create cell
|
||||
if(YES == [item isKindOfClass:[Binary class]])
|
||||
@@ -268,39 +216,9 @@ NSTableCellView* createLoadedItemView(NSTableView* tableView, id owner, id item)
|
||||
//default
|
||||
// ->(re)set main textfield's color to black
|
||||
loadedItemCell.textField.textColor = [NSColor blackColor];
|
||||
|
||||
//dylibs/files
|
||||
// ->main text is name
|
||||
if( (YES == [item isKindOfClass:[Binary class]]) ||
|
||||
(YES == [item isKindOfClass:[File class]]) )
|
||||
{
|
||||
//set name
|
||||
[loadedItemCell.textField setStringValue:[item name]];
|
||||
}
|
||||
//connections
|
||||
// ->main text is endpoints string
|
||||
else
|
||||
{
|
||||
//set endpoints string
|
||||
[loadedItemCell.textField setStringValue:[item endpoints]];
|
||||
}
|
||||
|
||||
//get name frame
|
||||
nameFrame = loadedItemCell.textField.frame;
|
||||
|
||||
//adjust width to fit text
|
||||
nameFrame.size.width = [loadedItemCell.textField.stringValue sizeWithAttributes: @{NSFontAttributeName: loadedItemCell.textField.font}].width + 5;
|
||||
|
||||
//disable autolayout for name
|
||||
loadedItemCell.textField.translatesAutoresizingMaskIntoConstraints = YES;
|
||||
|
||||
//update name frame
|
||||
// ->should now be exact size of text
|
||||
loadedItemCell.textField.frame = nameFrame;
|
||||
|
||||
//set host task(s) string
|
||||
// ->immediately follows name
|
||||
[((NSTextField*)[loadedItemCell viewWithTag:TABLE_ROW_PID_LABEL]) setStringValue:loadedIn];
|
||||
|
||||
//set main text
|
||||
loadedItemCell.textField.attributedStringValue = initLoadedInString(item);
|
||||
|
||||
//dylibs/files
|
||||
// ->subtext is path
|
||||
@@ -346,18 +264,226 @@ bail:
|
||||
return loadedItemCell;
|
||||
}
|
||||
|
||||
//build binary string for main window
|
||||
// ->format: binary name (pid: <xxx> [encrypted|packed])
|
||||
NSAttributedString* initBinaryString(id item, BOOL isSearchWindow)
|
||||
{
|
||||
//string for pid
|
||||
NSMutableAttributedString* taskString = nil;
|
||||
|
||||
//string attributes
|
||||
NSDictionary* attributes = nil;
|
||||
|
||||
//binary
|
||||
Binary* binary = nil;
|
||||
|
||||
//init task string
|
||||
taskString = [[NSMutableAttributedString alloc] initWithString:@""];
|
||||
|
||||
//grab binary from task
|
||||
if(YES == [item isKindOfClass:[Task class]])
|
||||
{
|
||||
//grab
|
||||
binary = ((Task*)item).binary;
|
||||
}
|
||||
//dylib
|
||||
// ->just assign
|
||||
else
|
||||
{
|
||||
//assign
|
||||
binary = (Binary*)item;
|
||||
}
|
||||
|
||||
//add name
|
||||
[taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:binary.name]];
|
||||
|
||||
//init color for pid
|
||||
// ->light gray
|
||||
attributes = [NSDictionary dictionaryWithObject:[NSColor lightGrayColor] forKey:NSForegroundColorAttributeName];
|
||||
|
||||
//search window
|
||||
// ->only for tasks, since dylibs in search window are handled elsewhere ('loaded in')
|
||||
if( (YES == isSearchWindow) &&
|
||||
(YES == [item isKindOfClass:[Task class]]) )
|
||||
{
|
||||
//add pid
|
||||
[taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@" (task: %@", ((Task*)item).pid] attributes:attributes]];
|
||||
}
|
||||
//normal window
|
||||
// ->add encrypted/packed info...
|
||||
else
|
||||
{
|
||||
//task
|
||||
// ->add task's pid
|
||||
if(YES == [item isKindOfClass:[Task class]])
|
||||
{
|
||||
//add pid
|
||||
[taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@" (pid: %@", ((Task*)item).pid] attributes:attributes]];
|
||||
}
|
||||
|
||||
//added encrypted or packed
|
||||
if( (YES == binary.isEncrypted) ||
|
||||
(YES == binary.isPacked) )
|
||||
{
|
||||
//init color for comma, etc
|
||||
// ->light gray
|
||||
attributes = [NSDictionary dictionaryWithObject:[NSColor lightGrayColor] forKey:NSForegroundColorAttributeName];
|
||||
|
||||
//tasks
|
||||
//add comma string
|
||||
if(YES == [item isKindOfClass:[Task class]])
|
||||
{
|
||||
//close
|
||||
[taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@", " attributes:attributes]];
|
||||
}
|
||||
//dylibs
|
||||
// ->open parents
|
||||
else
|
||||
{
|
||||
//open
|
||||
[taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@" (" attributes:attributes]];
|
||||
}
|
||||
|
||||
//init color
|
||||
// ->red
|
||||
attributes = [NSDictionary dictionaryWithObject:[NSColor redColor] forKey:NSForegroundColorAttributeName];
|
||||
|
||||
//add 'encrypted'
|
||||
if(YES == binary.isEncrypted)
|
||||
{
|
||||
//add
|
||||
[taskString appendAttributedString:[[NSAttributedString alloc] initWithString:@"encrypted" attributes:attributes]];
|
||||
}
|
||||
//add 'packed'
|
||||
// ->can't be both...and encryption takes precedence
|
||||
else
|
||||
{
|
||||
//add
|
||||
[taskString appendAttributedString:[[NSAttributedString alloc] initWithString:@"packed" attributes:attributes]];
|
||||
}
|
||||
|
||||
//dylib, need to close string here
|
||||
// ->normally it doesn't have anything after...
|
||||
if(YES != [item isKindOfClass:[Task class]])
|
||||
{
|
||||
//init color for closing
|
||||
attributes = [NSDictionary dictionaryWithObject:[NSColor lightGrayColor] forKey:NSForegroundColorAttributeName];
|
||||
|
||||
//close string
|
||||
[taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@")" attributes:attributes]];
|
||||
}
|
||||
|
||||
}//encrypted or packed
|
||||
}
|
||||
|
||||
//task
|
||||
// ->close string
|
||||
if(YES == [item isKindOfClass:[Task class]])
|
||||
{
|
||||
//init color for closing
|
||||
// ->light gray
|
||||
attributes = [NSDictionary dictionaryWithObject:[NSColor lightGrayColor] forKey:NSForegroundColorAttributeName];
|
||||
|
||||
//close string
|
||||
[taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@")" attributes:attributes]];
|
||||
}
|
||||
|
||||
return taskString;
|
||||
}
|
||||
|
||||
//build item + 'loaded in...' string for dylibs, files, etc in search window
|
||||
NSAttributedString* initLoadedInString(id item)
|
||||
{
|
||||
//string for pid
|
||||
NSMutableAttributedString* taskString = nil;
|
||||
|
||||
//string attributes
|
||||
NSDictionary* attributes = nil;
|
||||
|
||||
//pid or 'loaded in' string
|
||||
NSMutableString* loadedIn = nil;
|
||||
|
||||
//matching or host tasks
|
||||
NSMutableArray* tasks = nil;
|
||||
|
||||
//init task string
|
||||
taskString = [[NSMutableAttributedString alloc] initWithString:@""];
|
||||
|
||||
//get host tasks
|
||||
// ->works with dylibs or files
|
||||
tasks = [((AppDelegate*)[[NSApplication sharedApplication] delegate]).taskEnumerator loadedIn:item];
|
||||
|
||||
//dylibs/files
|
||||
// ->add name
|
||||
if( (YES == [item isKindOfClass:[Binary class]]) ||
|
||||
(YES == [item isKindOfClass:[File class]]) )
|
||||
{
|
||||
//add name
|
||||
[taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:[item name]]];
|
||||
}
|
||||
//connections
|
||||
// ->add endpoints
|
||||
else
|
||||
{
|
||||
//set endpoints string
|
||||
[taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:[item endpoints]]];
|
||||
}
|
||||
|
||||
//init color for 'loaded in...'
|
||||
// ->light gray
|
||||
attributes = [NSDictionary dictionaryWithObject:[NSColor lightGrayColor] forKey:NSForegroundColorAttributeName];
|
||||
|
||||
//add dylib indicator
|
||||
//-> '(dylib, loaded in: ... '
|
||||
if(YES == [item isKindOfClass:[Binary class]])
|
||||
{
|
||||
//init
|
||||
loadedIn = [NSMutableString stringWithFormat:@" (dylib, loaded in:"];
|
||||
}
|
||||
//add file indicator
|
||||
//-> '(file, loaded in: ... '
|
||||
else if(YES == [item isKindOfClass:[File class]])
|
||||
{
|
||||
//init
|
||||
loadedIn = [NSMutableString stringWithFormat:@" (file, loaded in:"];
|
||||
}
|
||||
//add connection indicator
|
||||
//-> '(connection, in: ... '
|
||||
else if(YES == [item isKindOfClass:[Connection class]])
|
||||
{
|
||||
//init
|
||||
loadedIn = [NSMutableString stringWithFormat:@" (connection, in:"];
|
||||
}
|
||||
|
||||
//add all tasks
|
||||
for(Task* task in tasks)
|
||||
{
|
||||
//append name
|
||||
[loadedIn appendFormat:@" %@,", task.binary.name];
|
||||
}
|
||||
|
||||
//remove last ','
|
||||
if(YES == [loadedIn hasSuffix:@","])
|
||||
{
|
||||
//remove
|
||||
[loadedIn deleteCharactersInRange:NSMakeRange([loadedIn length]-1, 1)];
|
||||
}
|
||||
|
||||
//terminate list/output
|
||||
[loadedIn appendString:@")"];
|
||||
|
||||
//add 'loaded in...'
|
||||
[taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:loadedIn attributes:attributes]];
|
||||
|
||||
return taskString;
|
||||
}
|
||||
|
||||
//create & customize Task view
|
||||
NSTableCellView* createTaskView(NSTableView* tableView, id owner, Task* task)
|
||||
{
|
||||
//item cell
|
||||
NSTableCellView* taskCell = nil;
|
||||
|
||||
//task's name frame
|
||||
CGRect nameFrame = {0};
|
||||
|
||||
//string for pid
|
||||
NSString* pidString = nil;
|
||||
|
||||
//sanity check
|
||||
if(nil == task.binary)
|
||||
{
|
||||
@@ -402,40 +528,7 @@ NSTableCellView* createTaskView(NSTableView* tableView, id owner, Task* task)
|
||||
taskCell.textField.textColor = [NSColor blackColor];
|
||||
|
||||
//set main text
|
||||
// ->name
|
||||
[taskCell.textField setStringValue:task.binary.name];
|
||||
|
||||
//get name frame
|
||||
nameFrame = taskCell.textField.frame;
|
||||
|
||||
//adjust width to fit text
|
||||
nameFrame.size.width = [taskCell.textField.stringValue sizeWithAttributes: @{NSFontAttributeName: taskCell.textField.font}].width + 5;
|
||||
|
||||
//disable autolayout for name
|
||||
taskCell.textField.translatesAutoresizingMaskIntoConstraints = YES;
|
||||
|
||||
//update name frame
|
||||
// ->should now be exact size of text
|
||||
taskCell.textField.frame = nameFrame;
|
||||
|
||||
//init pid string
|
||||
// ->search mode, show 'task,' to differential between files, etc
|
||||
if(YES ==[owner isKindOfClass:[SearchWindowController class]])
|
||||
{
|
||||
//init
|
||||
pidString = [NSString stringWithFormat:@"(task: %@)", task.pid];
|
||||
}
|
||||
//otherwise
|
||||
// ->just set pid
|
||||
else
|
||||
{
|
||||
//init
|
||||
pidString = [NSString stringWithFormat:@"(%@)", task.pid];
|
||||
}
|
||||
|
||||
//set pid
|
||||
// ->immediately follows name
|
||||
[((NSTextField*)[taskCell viewWithTag:TABLE_ROW_PID_LABEL]) setStringValue:pidString];
|
||||
taskCell.textField.attributedStringValue = initBinaryString(task, [owner isKindOfClass:[SearchWindowController class]]);
|
||||
|
||||
//set path
|
||||
[[taskCell viewWithTag:TABLE_ROW_SUB_TEXT_TAG] setStringValue:task.binary.path];
|
||||
@@ -488,8 +581,8 @@ NSTableCellView* createDylibView(NSTableView* tableView, id owner, Binary* dylib
|
||||
dylibCell.textField.textColor = [NSColor blackColor];
|
||||
|
||||
//set main text
|
||||
// ->name
|
||||
[dylibCell.textField setStringValue:dylib.name];
|
||||
// ->final arg is flag indicating normal or search window
|
||||
dylibCell.textField.attributedStringValue = initBinaryString(dylib, [owner isKindOfClass:[SearchWindowController class]]);
|
||||
|
||||
//set path
|
||||
[[dylibCell viewWithTag:TABLE_ROW_SUB_TEXT_TAG] setStringValue:dylib.path];
|
||||
|
||||
+13
-1
@@ -6,9 +6,9 @@
|
||||
// Copyright (c) 2015 Objective-See. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MachO.h"
|
||||
#import "ItemBase.h"
|
||||
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CommonCrypto/CommonDigest.h>
|
||||
|
||||
@@ -37,6 +37,15 @@
|
||||
//signing info
|
||||
@property(nonatomic, retain)NSDictionary* signingInfo;
|
||||
|
||||
//macho parser
|
||||
@property(nonatomic, retain)MachO* parser;
|
||||
|
||||
//encrypted flag
|
||||
@property BOOL isEncrypted;
|
||||
|
||||
//packed flag
|
||||
@property BOOL isPacked;
|
||||
|
||||
/* VIRUS TOTAL INFO */
|
||||
|
||||
//dictionary returned by VT
|
||||
@@ -48,6 +57,9 @@
|
||||
//init method
|
||||
-(id)initWithParams:(NSDictionary*)params;
|
||||
|
||||
//machO parse
|
||||
-(BOOL)parse;
|
||||
|
||||
//get task's name
|
||||
// ->either from bundle or path's last component
|
||||
-(NSString*)getName;
|
||||
|
||||
+49
-2
@@ -6,7 +6,6 @@
|
||||
// Copyright (c) 2015 Objective-See. All rights reserved.
|
||||
//
|
||||
|
||||
|
||||
#import "Binary.h"
|
||||
#import "Consts.h"
|
||||
#import "Utilities.h"
|
||||
@@ -19,7 +18,10 @@
|
||||
@synthesize icon;
|
||||
@synthesize bundle;
|
||||
@synthesize hashes;
|
||||
@synthesize parser;
|
||||
@synthesize vtInfo;
|
||||
@synthesize isPacked;
|
||||
@synthesize isEncrypted;
|
||||
@synthesize signingInfo;
|
||||
@synthesize isTaskBinary;
|
||||
|
||||
@@ -55,6 +57,52 @@ bail:
|
||||
return self;
|
||||
}
|
||||
|
||||
//machO parse
|
||||
-(BOOL)parse
|
||||
{
|
||||
//flag
|
||||
BOOL wasParsed = NO;
|
||||
|
||||
//sync
|
||||
@synchronized(self)
|
||||
{
|
||||
//alloc parser
|
||||
if(nil == parser)
|
||||
{
|
||||
//alloc macho parser iVar
|
||||
parser = [[MachO alloc] init];
|
||||
|
||||
//parse
|
||||
if(YES != [self.parser parse:self.path])
|
||||
{
|
||||
//unset parser
|
||||
self.parser = nil;
|
||||
|
||||
//bail
|
||||
goto bail;
|
||||
}
|
||||
}
|
||||
|
||||
//unset 'packed' flag for apple signed binaries
|
||||
// ->as apple doesn't pack binaries, but packer algo has some false positives
|
||||
if( (nil != [self.signingInfo objectForKey:KEY_SIGNING_IS_APPLE]) &&
|
||||
(YES == [self.signingInfo[KEY_SIGNING_IS_APPLE] boolValue]) )
|
||||
{
|
||||
//unset
|
||||
self.parser.binaryInfo[KEY_IS_PACKED] = NO;
|
||||
}
|
||||
|
||||
}//sync
|
||||
|
||||
//happy
|
||||
wasParsed = YES;
|
||||
|
||||
//bail
|
||||
bail:
|
||||
|
||||
return wasParsed;
|
||||
}
|
||||
|
||||
//get task's name
|
||||
// ->either from bundle or path's last component
|
||||
-(NSString*)getName
|
||||
@@ -175,7 +223,6 @@ bail:
|
||||
|
||||
}
|
||||
|
||||
|
||||
//format the signing info dictionary
|
||||
-(NSString*)formatSigningInfo
|
||||
{
|
||||
|
||||
@@ -155,8 +155,8 @@
|
||||
//2nd arg: permissions
|
||||
// ->4 at front is setuid
|
||||
//TODO: change b4 release
|
||||
// ->make 4755 before deploy (for testing, 777 makes XCOde be able to del it during build!)
|
||||
installArgs[1] = "4755";
|
||||
// ->make 4755 before deploy (for testing, 777 makes Xcode be able to del it during build!)
|
||||
installArgs[1] = "4777";
|
||||
|
||||
//3rd arg: XPC service
|
||||
installArgs[2] = [xpcService UTF8String];
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
// Copyright (c) 2015 Objective-See, LLC. All rights reserved.
|
||||
//
|
||||
|
||||
#import "File.h"
|
||||
#import "Task.h"
|
||||
#import "Consts.h"
|
||||
#import "Utilities.h"
|
||||
#import "File.h"
|
||||
#import "Connection.h"
|
||||
#import "remoteTaskService.h"
|
||||
#import "AppDelegate.h"
|
||||
#import "remoteTaskService.h"
|
||||
|
||||
#import <mach-o/dyld_images.h>
|
||||
#import <mach/mach_init.h>
|
||||
@@ -434,8 +434,19 @@ bail:
|
||||
for(Binary* newDylib in newDylibs)
|
||||
{
|
||||
//generate signing info
|
||||
// ->do this before macho parsing!
|
||||
[newDylib generatedSigningInfo];
|
||||
|
||||
//parse
|
||||
if(YES == [newDylib parse])
|
||||
{
|
||||
//save encrypted flag
|
||||
newDylib.isEncrypted = [newDylib.parser.binaryInfo[KEY_IS_ENCRYPTED] boolValue];
|
||||
|
||||
//save packed flag
|
||||
newDylib.isPacked = [newDylib.parser.binaryInfo[KEY_IS_PACKED] boolValue];
|
||||
}
|
||||
|
||||
//no need to reload if task is now longer current/selected
|
||||
if(((AppDelegate*)[[NSApplication sharedApplication] delegate]).currentTask != self)
|
||||
{
|
||||
|
||||
+12
-2
@@ -97,7 +97,6 @@
|
||||
// ->ensures existing task and their info are reused
|
||||
for(NSNumber* key in newTasks.allKeys)
|
||||
{
|
||||
|
||||
//get task
|
||||
newTask = newTasks[key];
|
||||
|
||||
@@ -142,7 +141,7 @@
|
||||
|
||||
});
|
||||
|
||||
//now generate signing info
|
||||
//now generate signing info/encryption check/packer check
|
||||
// ->for (new) tasks
|
||||
for(NSNumber* key in newTasks)
|
||||
{
|
||||
@@ -158,8 +157,19 @@
|
||||
}
|
||||
|
||||
//generate signing info
|
||||
// ->do this before macho parsing!
|
||||
[newTask.binary generatedSigningInfo];
|
||||
|
||||
//parse
|
||||
if(YES == [newTask.binary parse])
|
||||
{
|
||||
//save encrypted flag
|
||||
newTask.binary.isEncrypted = [newTask.binary.parser.binaryInfo[KEY_IS_ENCRYPTED] boolValue];
|
||||
|
||||
//save packed flag
|
||||
newTask.binary.isPacked = [newTask.binary.parser.binaryInfo[KEY_IS_PACKED] boolValue];
|
||||
}
|
||||
|
||||
//reload task (row) in table
|
||||
[((AppDelegate*)[[NSApplication sharedApplication] delegate]) reloadRow:newTask];
|
||||
|
||||
|
||||
@@ -8,8 +8,13 @@
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1D21BC4F172AF43D009D1CFD /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D21BC4E172AF43D009D1CFD /* Cocoa.framework */; };
|
||||
7D2A4C6C1BC789070029A284 /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CDA81D4E1A95B492009790E2 /* Utilities.m */; };
|
||||
7D2F567C1B81BEAB00C7D85E /* SearchWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D2F567B1B81BEAB00C7D85E /* SearchWindow.xib */; };
|
||||
7D2F567F1B81BEB400C7D85E /* SearchWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D2F567E1B81BEB400C7D85E /* SearchWindowController.m */; };
|
||||
7D73480F1BCB82C900CD7235 /* flaggedRed.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D73480C1BCB82C900CD7235 /* flaggedRed.png */; };
|
||||
7D7348101BCB82C900CD7235 /* flaggedRedBG.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D73480D1BCB82C900CD7235 /* flaggedRedBG.png */; };
|
||||
7D7348111BCB82C900CD7235 /* flaggedRedOver.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D73480E1BCB82C900CD7235 /* flaggedRedOver.png */; };
|
||||
7DA5CA0F1C7AA8CB00627DD7 /* MachO.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DA5CA0E1C7AA8CB00627DD7 /* MachO.m */; };
|
||||
7DAA78091B903BF1004840B9 /* CustomTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DAA78081B903BF1004840B9 /* CustomTextField.m */; };
|
||||
CD001B381AB903040089014A /* logo.png in Resources */ = {isa = PBXBuildFile; fileRef = CD001B351AB903040089014A /* logo.png */; };
|
||||
CD001B391AB903040089014A /* logoApple.png in Resources */ = {isa = PBXBuildFile; fileRef = CD001B361AB903040089014A /* logoApple.png */; };
|
||||
@@ -156,6 +161,11 @@
|
||||
7D2F567B1B81BEAB00C7D85E /* SearchWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = SearchWindow.xib; path = UI/SearchWindow.xib; sourceTree = "<group>"; };
|
||||
7D2F567D1B81BEB300C7D85E /* SearchWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchWindowController.h; sourceTree = "<group>"; };
|
||||
7D2F567E1B81BEB400C7D85E /* SearchWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchWindowController.m; sourceTree = "<group>"; };
|
||||
7D73480C1BCB82C900CD7235 /* flaggedRed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = flaggedRed.png; path = images/flaggedRed.png; sourceTree = SOURCE_ROOT; };
|
||||
7D73480D1BCB82C900CD7235 /* flaggedRedBG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = flaggedRedBG.png; path = images/flaggedRedBG.png; sourceTree = SOURCE_ROOT; };
|
||||
7D73480E1BCB82C900CD7235 /* flaggedRedOver.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = flaggedRedOver.png; path = images/flaggedRedOver.png; sourceTree = SOURCE_ROOT; };
|
||||
7DA5CA0D1C7AA8CB00627DD7 /* MachO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MachO.h; path = ../MachO/MachOParser/MachO.h; sourceTree = "<group>"; };
|
||||
7DA5CA0E1C7AA8CB00627DD7 /* MachO.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MachO.m; path = ../MachO/MachOParser/MachO.m; sourceTree = "<group>"; };
|
||||
7DAA78071B903BF1004840B9 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = "<group>"; };
|
||||
7DAA78081B903BF1004840B9 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = "<group>"; };
|
||||
CD001B351AB903040089014A /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = logo.png; path = images/logo.png; sourceTree = SOURCE_ROOT; };
|
||||
@@ -331,6 +341,7 @@
|
||||
1D21BC42172AF43D009D1CFD = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7DA5CA0C1C7AA8B900627DD7 /* MachO */,
|
||||
7DAA78071B903BF1004840B9 /* CustomTextField.h */,
|
||||
7DAA78081B903BF1004840B9 /* CustomTextField.m */,
|
||||
7D2F567D1B81BEB300C7D85E /* SearchWindowController.h */,
|
||||
@@ -432,9 +443,21 @@
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7DA5CA0C1C7AA8B900627DD7 /* MachO */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7DA5CA0D1C7AA8CB00627DD7 /* MachO.h */,
|
||||
7DA5CA0E1C7AA8CB00627DD7 /* MachO.m */,
|
||||
);
|
||||
name = MachO;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
CD6095501A8329FA00E091CD /* images */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7D73480C1BCB82C900CD7235 /* flaggedRed.png */,
|
||||
7D73480D1BCB82C900CD7235 /* flaggedRedBG.png */,
|
||||
7D73480E1BCB82C900CD7235 /* flaggedRedOver.png */,
|
||||
CD74A06B1B7DA71200A8AAD3 /* flaggedBG.png */,
|
||||
CD74A06C1B7DA71200A8AAD3 /* flaggedOver.png */,
|
||||
CDFCA3551B7940970075492D /* flagged.png */,
|
||||
@@ -640,7 +663,7 @@
|
||||
1D21BC43172AF43D009D1CFD /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0620;
|
||||
LastUpgradeCheck = 0700;
|
||||
ORGANIZATIONNAME = "Lucas Derraugh";
|
||||
TargetAttributes = {
|
||||
1D21BC4A172AF43D009D1CFD = {
|
||||
@@ -683,6 +706,7 @@
|
||||
CD6AFB861B4BABB200D42C34 /* refreshIconBG.png in Resources */,
|
||||
CDEE76FF1B3FD4B000763826 /* saveIconBG.png in Resources */,
|
||||
CDA81D5B1A95B4B4009790E2 /* InfoPlist.strings in Resources */,
|
||||
7D7348111BCB82C900CD7235 /* flaggedRedOver.png in Resources */,
|
||||
CD4D53CA1B20296E00008030 /* unknown.png in Resources */,
|
||||
CDEE77081B41220300763826 /* searchOver.png in Resources */,
|
||||
CD74A07E1B81B5D400A8AAD3 /* FlaggedItems.xib in Resources */,
|
||||
@@ -728,6 +752,7 @@
|
||||
CD3F4D161AF89066002A2647 /* TreeView.xib in Resources */,
|
||||
CD0219501AD34D8B005148A2 /* PrefsWindow.xib in Resources */,
|
||||
CDFCA3561B7940970075492D /* flagged.png in Resources */,
|
||||
7D7348101BCB82C900CD7235 /* flaggedRedBG.png in Resources */,
|
||||
CDA81D6C1A95B4E9009790E2 /* showBG.png in Resources */,
|
||||
CD3F4CFF1AF72BC4002A2647 /* TaskInfoWindow.xib in Resources */,
|
||||
CDEE77001B3FD4B000763826 /* saveIconOver.png in Resources */,
|
||||
@@ -747,6 +772,7 @@
|
||||
CDA81DCA1A9960A3009790E2 /* infoBG.png in Resources */,
|
||||
CDF08CD11AC4C6E8009B3423 /* settings.png in Resources */,
|
||||
CDA81DD31A9970A0009790E2 /* signed.png in Resources */,
|
||||
7D73480F1BCB82C900CD7235 /* flaggedRed.png in Resources */,
|
||||
CDEE77071B41220300763826 /* searchBG.png in Resources */,
|
||||
CDA81E661AA020FD009790E2 /* FileInfoWindow.xib in Resources */,
|
||||
);
|
||||
@@ -768,6 +794,7 @@
|
||||
files = (
|
||||
CD3F4CE81AF5CF68002A2647 /* TaskEnumerator.m in Sources */,
|
||||
CD4D54221B2CE6F200008030 /* NSMutableArray+QueueAdditions.m in Sources */,
|
||||
7DA5CA0F1C7AA8CB00627DD7 /* MachO.m in Sources */,
|
||||
CD74A07B1B7F170B00A8AAD3 /* FlaggedItems.m in Sources */,
|
||||
CDA5F6C41B16E20E003CE340 /* RequestRootWindowController.m in Sources */,
|
||||
CDD2483B1AF5CC4D00232422 /* Task.m in Sources */,
|
||||
@@ -808,6 +835,7 @@
|
||||
files = (
|
||||
CDA5F6B61B16D805003CE340 /* main.m in Sources */,
|
||||
CDA5F6B41B16D805003CE340 /* remoteTaskService.m in Sources */,
|
||||
7D2A4C6C1BC789070029A284 /* Utilities.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -853,7 +881,9 @@
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
@@ -886,6 +916,7 @@
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
@@ -904,12 +935,13 @@
|
||||
1D21BC69172AF43D009D1CFD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "Developer ID Application";
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer";
|
||||
CODE_SIGN_IDENTITY = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)";
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "TaskExplorer-Prefix.pch";
|
||||
INFOPLIST_FILE = "TaskExplorer-Info.plist";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.objective-see.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = TaskExplorer;
|
||||
PROVISIONING_PROFILE = "";
|
||||
WRAPPER_EXTENSION = app;
|
||||
@@ -919,12 +951,13 @@
|
||||
1D21BC6A172AF43D009D1CFD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "Developer ID Application";
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer";
|
||||
CODE_SIGN_IDENTITY = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)";
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "TaskExplorer-Prefix.pch";
|
||||
INFOPLIST_FILE = "TaskExplorer-Info.plist";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.objective-see.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = TaskExplorer;
|
||||
PROVISIONING_PROFILE = "";
|
||||
WRAPPER_EXTENSION = app;
|
||||
@@ -939,7 +972,7 @@
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CODE_SIGN_IDENTITY = "Developer ID Application";
|
||||
CODE_SIGN_IDENTITY = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
@@ -955,6 +988,7 @@
|
||||
INFOPLIST_FILE = remoteTaskService/Info.plist;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.10;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.objective-see.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
@@ -968,7 +1002,7 @@
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CODE_SIGN_IDENTITY = "Developer ID Application";
|
||||
CODE_SIGN_IDENTITY = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
@@ -981,6 +1015,7 @@
|
||||
INFOPLIST_FILE = remoteTaskService/Info.plist;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.10;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.objective-see.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
|
||||
BIN
Binary file not shown.
+49
-113
@@ -3,22 +3,6 @@
|
||||
type = "1"
|
||||
version = "2.0">
|
||||
<Breakpoints>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "ItemView.m"
|
||||
timestampString = "462956417.143953"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "292"
|
||||
endingLineNumber = "292"
|
||||
landmarkName = "createLoadedItemView()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
@@ -35,22 +19,6 @@
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "SearchWindowController.m"
|
||||
timestampString = "462871859.211461"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "192"
|
||||
endingLineNumber = "192"
|
||||
landmarkName = "-waitTillPau"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
@@ -58,31 +26,15 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "VirusTotal.m"
|
||||
timestampString = "462084588.682321"
|
||||
timestampString = "466326232.812128"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "385"
|
||||
endingLineNumber = "385"
|
||||
startingLineNumber = "238"
|
||||
endingLineNumber = "238"
|
||||
landmarkName = "-getInfoForItem:scanID:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "462958083.434603"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "1545"
|
||||
endingLineNumber = "1545"
|
||||
landmarkName = "-selectBottomPaneContent:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
@@ -90,47 +42,15 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Task.m"
|
||||
timestampString = "462090370.850888"
|
||||
timestampString = "466317911.852232"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "400"
|
||||
endingLineNumber = "400"
|
||||
landmarkName = "-enumerateDylibs:allDylibs:"
|
||||
startingLineNumber = "433"
|
||||
endingLineNumber = "433"
|
||||
landmarkName = "-enumerateDylibs:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Task.m"
|
||||
timestampString = "462089496.268699"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "332"
|
||||
endingLineNumber = "332"
|
||||
landmarkName = "-enumerateDylibs:allDylibs:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Exception.m"
|
||||
timestampString = "462091293.990081"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "118"
|
||||
endingLineNumber = "118"
|
||||
landmarkName = "signalHandler()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
@@ -138,12 +58,12 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "462958083.434603"
|
||||
timestampString = "466327590.310649"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "218"
|
||||
endingLineNumber = "218"
|
||||
landmarkName = "-registerKeypressHandler"
|
||||
startingLineNumber = "192"
|
||||
endingLineNumber = "192"
|
||||
landmarkName = "-applicationDidFinishLaunching:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
@@ -154,11 +74,11 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Items/File.m"
|
||||
timestampString = "462700393.667462"
|
||||
timestampString = "466317911.852232"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "166"
|
||||
endingLineNumber = "166"
|
||||
startingLineNumber = "167"
|
||||
endingLineNumber = "167"
|
||||
landmarkName = "-toJSON"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
@@ -170,11 +90,11 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Items/Connection.m"
|
||||
timestampString = "462786540.058618"
|
||||
timestampString = "466048200.98878"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "115"
|
||||
endingLineNumber = "115"
|
||||
startingLineNumber = "117"
|
||||
endingLineNumber = "117"
|
||||
landmarkName = "-toJSON"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
@@ -185,13 +105,13 @@
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "RequestRootWindowController.m"
|
||||
timestampString = "462783965.798309"
|
||||
filePath = "Items/File.m"
|
||||
timestampString = "466319352.039055"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "134"
|
||||
endingLineNumber = "134"
|
||||
landmarkName = "-authenticate:"
|
||||
startingLineNumber = "76"
|
||||
endingLineNumber = "76"
|
||||
landmarkName = "-setFileType"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
@@ -201,13 +121,13 @@
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Filter.m"
|
||||
timestampString = "462957835.231287"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "466327590.310649"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "213"
|
||||
endingLineNumber = "213"
|
||||
landmarkName = "-filterConnections:items:results:"
|
||||
startingLineNumber = "653"
|
||||
endingLineNumber = "653"
|
||||
landmarkName = "-reloadBottomPane:itemView:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
@@ -217,14 +137,30 @@
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "462958621.25846"
|
||||
filePath = "Exception.m"
|
||||
timestampString = "477800890.177901"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "1507"
|
||||
endingLineNumber = "1507"
|
||||
landmarkName = "-selectBottomPaneContent:"
|
||||
landmarkType = "5">
|
||||
startingLineNumber = "66"
|
||||
endingLineNumber = "66"
|
||||
landmarkName = "exceptionHandler()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Exception.m"
|
||||
timestampString = "477800907.874623"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "109"
|
||||
endingLineNumber = "109"
|
||||
landmarkName = "signalHandler()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
</Breakpoints>
|
||||
|
||||
@@ -681,7 +681,7 @@ bail:
|
||||
//only no for leafs
|
||||
// ->items w/o kids
|
||||
if( (nil != item) &&
|
||||
(0 == [[item children] count]) )
|
||||
(0 == [[item children] count]) )
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
@@ -693,7 +693,6 @@ bail:
|
||||
}
|
||||
|
||||
|
||||
|
||||
//return child
|
||||
-(id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item
|
||||
{
|
||||
|
||||
+5
-16
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9532" systemVersion="15D21" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<development version="5000" identifier="xcode"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9532"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="TaskTableController">
|
||||
@@ -65,7 +65,7 @@
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="unknown" id="2ru-B9-6b1"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ryD-lC-8IR">
|
||||
<rect key="frame" x="46" y="20" width="225" height="19"/>
|
||||
<rect key="frame" x="46" y="20" width="1103" height="19"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Task Name" id="fEY-SM-ufc">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -155,22 +155,9 @@
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" tag="102" translatesAutoresizingMaskIntoConstraints="NO" id="Nky-Qb-S7Z">
|
||||
<rect key="frame" x="295" y="20" width="79" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="18" id="ecq-WO-Xtq"/>
|
||||
<constraint firstAttribute="width" constant="75" id="qxm-8e-ma2"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="pid" id="BVj-TR-eR2">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" white="0.49295236009999999" alpha="0.84999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="cG6-PF-La2" firstAttribute="top" secondItem="sdY-t5-tbW" secondAttribute="top" constant="7" id="5Ro-94-5jo"/>
|
||||
<constraint firstItem="Nky-Qb-S7Z" firstAttribute="leading" secondItem="ryD-lC-8IR" secondAttribute="trailing" constant="8" id="7Og-f1-rQH"/>
|
||||
<constraint firstItem="cG6-PF-La2" firstAttribute="leading" secondItem="sdY-t5-tbW" secondAttribute="leading" constant="4" id="7ms-dD-as0"/>
|
||||
<constraint firstItem="MqO-G8-w9L" firstAttribute="leading" secondItem="aPz-9H-xyy" secondAttribute="trailing" constant="11" id="AYq-NQ-9ty"/>
|
||||
<constraint firstItem="Y4J-KD-8iy" firstAttribute="leading" secondItem="eBe-7K-OiH" secondAttribute="trailing" constant="22" id="AeK-oE-FOW"/>
|
||||
@@ -179,7 +166,9 @@
|
||||
<constraint firstItem="gpF-bM-EQR" firstAttribute="leading" secondItem="MqO-G8-w9L" secondAttribute="trailing" constant="17" id="YUh-1b-zZn"/>
|
||||
<constraint firstAttribute="trailing" secondItem="gpF-bM-EQR" secondAttribute="trailing" constant="20" id="ZwL-8K-oUV"/>
|
||||
<constraint firstItem="eBe-7K-OiH" firstAttribute="leading" secondItem="Dtg-ac-EVZ" secondAttribute="trailing" constant="22" id="llC-i6-MPv"/>
|
||||
<constraint firstItem="ryD-lC-8IR" firstAttribute="leading" secondItem="M2y-fe-Zb7" secondAttribute="trailing" constant="4" id="pFh-5j-5D1"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Y4J-KD-8iy" secondAttribute="trailing" constant="20" id="qVu-zJ-0T1"/>
|
||||
<constraint firstItem="Dtg-ac-EVZ" firstAttribute="leading" secondItem="ryD-lC-8IR" secondAttribute="trailing" constant="8" id="sdA-ud-S6g"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="imageView" destination="cG6-PF-La2" id="v1M-Zn-U5X"/>
|
||||
|
||||
+15
-48
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14F27" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9532" systemVersion="15D21" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9532"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="SearchWindowController">
|
||||
@@ -21,7 +21,7 @@
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="95" y="481" width="1304" height="425"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1080"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1057"/>
|
||||
<value key="minSize" type="size" width="800" height="250"/>
|
||||
<view key="contentView" id="se5-gp-TjO">
|
||||
<rect key="frame" x="0.0" y="3" width="1304" height="425"/>
|
||||
@@ -29,12 +29,12 @@
|
||||
<subviews>
|
||||
<scrollView misplaced="YES" autohidesScrollers="YES" horizontalLineScroll="42" horizontalPageScroll="10" verticalLineScroll="42" verticalPageScroll="10" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" verticalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="8GA-gp-lIa">
|
||||
<rect key="frame" x="-1" y="31" width="1306" height="324"/>
|
||||
<clipView key="contentView" misplaced="YES" drawsBackground="NO" id="4oI-qg-e78">
|
||||
<rect key="frame" x="1" y="1" width="1204" height="437"/>
|
||||
<clipView key="contentView" drawsBackground="NO" id="4oI-qg-e78">
|
||||
<rect key="frame" x="1" y="1" width="1304" height="322"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="40" rowSizeStyle="automatic" viewBased="YES" id="w0h-ih-Ej7">
|
||||
<rect key="frame" x="0.0" y="0.0" width="1304" height="0.0"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="1304" height="322"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -74,7 +74,7 @@
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="unknown" id="IhW-G7-O7C"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="n1s-T9-NPU">
|
||||
<rect key="frame" x="46" y="20" width="225" height="19"/>
|
||||
<rect key="frame" x="46" y="20" width="1103" height="19"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Name" id="5KE-Dr-geL">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -164,31 +164,20 @@
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" tag="102" translatesAutoresizingMaskIntoConstraints="NO" id="SQO-cM-V2f">
|
||||
<rect key="frame" x="264" y="20" width="868" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="18" id="gMv-w4-pQh"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="pid/loaded in" id="Lm4-16-Zlv">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" white="0.49295236009999999" alpha="0.84999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="SQO-cM-V2f" firstAttribute="leading" secondItem="n1s-T9-NPU" secondAttribute="trailing" constant="8" id="GvF-LW-0UJ"/>
|
||||
<constraint firstItem="oNi-kw-tm3" firstAttribute="leading" secondItem="n1s-T9-NPU" secondAttribute="trailing" constant="8" id="Ia9-Xe-3UR"/>
|
||||
<constraint firstAttribute="trailing" secondItem="gCS-2D-Ds7" secondAttribute="trailing" constant="20" id="KJ7-EP-HUM"/>
|
||||
<constraint firstItem="p6d-mB-jY7" firstAttribute="leading" secondItem="oNi-kw-tm3" secondAttribute="trailing" constant="22" id="MOG-Th-2rD"/>
|
||||
<constraint firstAttribute="trailing" secondItem="bfy-Vt-ur5" secondAttribute="trailing" constant="20" id="OFd-VX-lUs"/>
|
||||
<constraint firstItem="KGc-fT-NHo" firstAttribute="leading" secondItem="sUk-Ix-Ica" secondAttribute="leading" constant="4" id="OG0-6W-uXp"/>
|
||||
<constraint firstItem="n1s-T9-NPU" firstAttribute="leading" secondItem="lke-4V-7Zy" secondAttribute="trailing" constant="4" id="Q4u-Nb-LqF"/>
|
||||
<constraint firstItem="pYR-xm-B9a" firstAttribute="leading" secondItem="Gb3-Kp-uki" secondAttribute="trailing" constant="11" id="Vou-zx-GCc"/>
|
||||
<constraint firstItem="NrX-dv-Ndg" firstAttribute="leading" secondItem="KGc-fT-NHo" secondAttribute="trailing" constant="2" id="b3y-V0-Dqs"/>
|
||||
<constraint firstItem="gCS-2D-Ds7" firstAttribute="leading" secondItem="p6d-mB-jY7" secondAttribute="trailing" constant="22" id="ccN-Sf-2o3"/>
|
||||
<constraint firstItem="bfy-Vt-ur5" firstAttribute="leading" secondItem="pYR-xm-B9a" secondAttribute="trailing" constant="17" id="gWw-co-H34"/>
|
||||
<constraint firstItem="KGc-fT-NHo" firstAttribute="top" secondItem="sUk-Ix-Ica" secondAttribute="top" constant="7" id="ixB-HB-XNH"/>
|
||||
<constraint firstItem="Gb3-Kp-uki" firstAttribute="leading" secondItem="NrX-dv-Ndg" secondAttribute="trailing" constant="8" id="jOh-lG-rMG"/>
|
||||
<constraint firstAttribute="trailing" secondItem="SQO-cM-V2f" secondAttribute="trailing" constant="171" id="yB9-Yn-my4"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="imageView" destination="KGc-fT-NHo" id="fjH-oS-Ttv"/>
|
||||
@@ -208,7 +197,7 @@
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="6gv-k4-mdi"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ugh-bk-muU">
|
||||
<rect key="frame" x="31" y="20" width="225" height="19"/>
|
||||
<rect key="frame" x="31" y="20" width="1185" height="19"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Name" id="fgN-p7-FWL">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -275,28 +264,17 @@
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" tag="102" translatesAutoresizingMaskIntoConstraints="NO" id="fnp-rh-Inz">
|
||||
<rect key="frame" x="264" y="20" width="868" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="18" id="uzP-Cn-LZW"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="loaded in" id="JT7-PU-YPp">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" white="0.49295236009999999" alpha="0.84999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="IIS-fl-0Bl" firstAttribute="top" secondItem="62p-Yk-Jl3" secondAttribute="top" constant="7" id="8c5-Z7-Olg"/>
|
||||
<constraint firstItem="fnp-rh-Inz" firstAttribute="leading" secondItem="ugh-bk-muU" secondAttribute="trailing" constant="8" id="Bp4-Tu-NaQ"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Xsx-qZ-Zpb" secondAttribute="trailing" constant="20" id="Nyw-Bs-k6x"/>
|
||||
<constraint firstItem="vr7-eK-3Bt" firstAttribute="leading" secondItem="UgY-KO-I4K" secondAttribute="trailing" constant="22" id="PkR-9T-0we"/>
|
||||
<constraint firstAttribute="trailing" secondItem="fnp-rh-Inz" secondAttribute="trailing" constant="171" id="V3B-Vz-Pzp"/>
|
||||
<constraint firstItem="5kn-qs-yNV" firstAttribute="leading" secondItem="4c4-WA-4rL" secondAttribute="trailing" constant="8" id="VCf-sQ-iGi"/>
|
||||
<constraint firstItem="4c4-WA-4rL" firstAttribute="leading" secondItem="IIS-fl-0Bl" secondAttribute="trailing" constant="2" id="bEr-bp-efR"/>
|
||||
<constraint firstItem="IIS-fl-0Bl" firstAttribute="leading" secondItem="62p-Yk-Jl3" secondAttribute="leading" constant="4" id="dM0-v7-57a"/>
|
||||
<constraint firstItem="Xsx-qZ-Zpb" firstAttribute="leading" secondItem="5kn-qs-yNV" secondAttribute="trailing" constant="17" id="icg-9v-1Px"/>
|
||||
<constraint firstItem="UgY-KO-I4K" firstAttribute="leading" secondItem="ugh-bk-muU" secondAttribute="trailing" constant="12" id="jwQ-Na-aA8"/>
|
||||
<constraint firstItem="ugh-bk-muU" firstAttribute="leading" secondItem="IIS-fl-0Bl" secondAttribute="trailing" constant="7" id="l10-rm-THw"/>
|
||||
<constraint firstAttribute="trailing" secondItem="vr7-eK-3Bt" secondAttribute="trailing" constant="20" id="sgF-8e-pVL"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
@@ -325,7 +303,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="UR5-ag-OPP">
|
||||
<rect key="frame" x="31" y="20" width="229" height="19"/>
|
||||
<rect key="frame" x="32" y="20" width="1227" height="19"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Network Info" id="WqN-YF-KzO">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -358,23 +336,12 @@
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" tag="102" translatesAutoresizingMaskIntoConstraints="NO" id="3Oy-bR-CEo">
|
||||
<rect key="frame" x="264" y="20" width="868" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="18" id="E10-59-IUU"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="loaded in" id="Ip4-Xq-eKJ">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" white="0.49295236009999999" alpha="0.84999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="kT3-0V-Fwt" firstAttribute="leading" secondItem="71C-gs-Mno" secondAttribute="trailing" constant="8" id="5IU-du-URu"/>
|
||||
<constraint firstItem="3Oy-bR-CEo" firstAttribute="leading" secondItem="UR5-ag-OPP" secondAttribute="trailing" constant="8" id="F12-0T-6Lr"/>
|
||||
<constraint firstItem="UR5-ag-OPP" firstAttribute="leading" secondItem="71C-gs-Mno" secondAttribute="trailing" constant="7" id="BOH-0q-aGo"/>
|
||||
<constraint firstAttribute="trailing" secondItem="k5T-Yc-we2" secondAttribute="trailing" constant="19" id="JJb-oy-J0e"/>
|
||||
<constraint firstAttribute="trailing" secondItem="3Oy-bR-CEo" secondAttribute="trailing" constant="171" id="S5V-cL-cnq"/>
|
||||
<constraint firstItem="b9d-lc-cIV" firstAttribute="leading" secondItem="UR5-ag-OPP" secondAttribute="trailing" constant="8" id="MXO-Dc-Jfc"/>
|
||||
<constraint firstItem="k5T-Yc-we2" firstAttribute="leading" secondItem="kT3-0V-Fwt" secondAttribute="trailing" constant="8" id="dOy-kF-uEl"/>
|
||||
<constraint firstAttribute="trailing" secondItem="b9d-lc-cIV" secondAttribute="trailing" constant="20" id="gmk-OW-20W"/>
|
||||
<constraint firstItem="71C-gs-Mno" firstAttribute="leading" secondItem="waX-25-DeA" secondAttribute="leading" constant="5" id="h2R-BV-oKU"/>
|
||||
|
||||
+6
-17
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9532" systemVersion="15D21" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<development version="5000" identifier="xcode"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9532"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="TaskTableController">
|
||||
@@ -65,7 +65,7 @@
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="unknown" id="me9-Mx-iYQ"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1Zt-oA-mKx">
|
||||
<rect key="frame" x="46" y="20" width="225" height="19"/>
|
||||
<rect key="frame" x="46" y="20" width="1103" height="19"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Task Name" id="TN7-i0-YKD">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -155,29 +155,18 @@
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" tag="102" translatesAutoresizingMaskIntoConstraints="NO" id="Gwh-Pi-Cr8">
|
||||
<rect key="frame" x="295" y="20" width="79" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="75" id="MYG-IH-nwD"/>
|
||||
<constraint firstAttribute="height" constant="18" id="TNF-eC-2mT"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="pid" id="vq2-uQ-UKY">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" white="0.49295236009999999" alpha="0.84999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="TmP-0K-QL5" secondAttribute="trailing" constant="20" id="0bt-Nx-vbM"/>
|
||||
<constraint firstItem="nqZ-Aq-OkZ" firstAttribute="leading" secondItem="GDK-Bv-5jW" secondAttribute="trailing" constant="8" id="5yT-0e-n5j"/>
|
||||
<constraint firstItem="Bla-ft-Ebs" firstAttribute="leading" secondItem="1Zt-oA-mKx" secondAttribute="trailing" constant="8" id="7FQ-NJ-md1"/>
|
||||
<constraint firstItem="2ct-ht-5c2" firstAttribute="leading" secondItem="mDy-ep-li0" secondAttribute="trailing" constant="22" id="9gD-bt-2Vv"/>
|
||||
<constraint firstItem="GDK-Bv-5jW" firstAttribute="leading" secondItem="0MH-nf-7QQ" secondAttribute="trailing" constant="2" id="HOi-bL-Int"/>
|
||||
<constraint firstItem="mDy-ep-li0" firstAttribute="leading" secondItem="Bla-ft-Ebs" secondAttribute="trailing" constant="22" id="ROe-3J-TzR"/>
|
||||
<constraint firstItem="Gwh-Pi-Cr8" firstAttribute="leading" secondItem="1Zt-oA-mKx" secondAttribute="trailing" constant="8" id="g0l-EE-VzB"/>
|
||||
<constraint firstItem="VXc-BM-7cb" firstAttribute="leading" secondItem="nqZ-Aq-OkZ" secondAttribute="trailing" constant="11" id="jvP-fF-CXE"/>
|
||||
<constraint firstAttribute="trailing" secondItem="2ct-ht-5c2" secondAttribute="trailing" constant="20" id="mnd-fE-dNh"/>
|
||||
<constraint firstItem="TmP-0K-QL5" firstAttribute="leading" secondItem="VXc-BM-7cb" secondAttribute="trailing" constant="17" id="r5M-1N-uEu"/>
|
||||
<constraint firstItem="1Zt-oA-mKx" firstAttribute="leading" secondItem="Cgb-ea-yYy" secondAttribute="trailing" constant="4" id="tun-lc-XyP"/>
|
||||
<constraint firstItem="0MH-nf-7QQ" firstAttribute="top" secondItem="cj0-rp-Uha" secondAttribute="top" constant="8" id="x2F-4g-SxS"/>
|
||||
<constraint firstItem="0MH-nf-7QQ" firstAttribute="leading" secondItem="cj0-rp-Uha" secondAttribute="leading" constant="4" id="x6f-e1-y92"/>
|
||||
</constraints>
|
||||
@@ -198,7 +187,7 @@
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" controlSize="mini" horizontal="YES" id="7QY-ke-KIc">
|
||||
<rect key="frame" x="1" y="109.73348331451416" width="220" height="16"/>
|
||||
<rect key="frame" x="1" y="109" width="220" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" controlSize="mini" horizontal="NO" id="ifK-Bg-0Ke">
|
||||
|
||||
+1
-1
@@ -97,7 +97,7 @@
|
||||
if( (nil != self.binary.vtInfo) &&
|
||||
(0 != [self.binary.vtInfo[VT_RESULTS_POSITIVES] unsignedIntegerValue]) )
|
||||
{
|
||||
//set color (light red)
|
||||
//set color
|
||||
color = [NSColor redColor];
|
||||
}
|
||||
//non-flagged files
|
||||
|
||||
@@ -6,14 +6,13 @@
|
||||
// Copyright (c) 2015 Objective-See, LLC. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "remoteTaskService.h"
|
||||
#import "serviceInterface.h"
|
||||
#import "remoteTaskService.h"
|
||||
|
||||
#import <syslog.h>
|
||||
#import <libproc.h>
|
||||
#import <sys/proc_info.h>
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
//interface for 'extension' to NSXPCConnection
|
||||
// ->allows us to access the 'private' auditToken iVar
|
||||
@@ -39,8 +38,7 @@
|
||||
//function def
|
||||
OSStatus SecTaskValidateForRequirement(SecTaskRef task, CFStringRef requirement);
|
||||
|
||||
//TODO: CHANGE B4 RELEASE!!
|
||||
//-> for testing: @"Mac Developer: patrick wardle (5SKKU32KLJ)"
|
||||
//signing auth
|
||||
#define SIGNING_AUTH @"Developer ID Application: Objective-See, LLC (VBG97UB4TA)"
|
||||
|
||||
//skeleton interface
|
||||
@@ -103,6 +101,8 @@ bail:
|
||||
|
||||
@end
|
||||
|
||||
//TODO: add exception handling!!!!
|
||||
|
||||
int main(int argc, const char *argv[])
|
||||
{
|
||||
//make really r00t
|
||||
|
||||
@@ -354,17 +354,29 @@ bail:
|
||||
dylibs = [NSMutableArray array];
|
||||
|
||||
//vmmap can't directly handle 32bit procs
|
||||
// ->so exec via 'arch -i386 vmmap <32bit pid>' ...though El Capitan doesn't have i386 version :/
|
||||
// ->so either exec 'vmmap32' or on older OSs, exec via 'arch -i386 vmmap <32bit pid>'
|
||||
if(YES == Is32Bit(pid.unsignedIntValue))
|
||||
{
|
||||
//exec 'file' to get file type
|
||||
results = [[NSString alloc] initWithData:execTask(ARCH, @[@"-i386", VMMAP, [pid stringValue]]) encoding:NSUTF8StringEncoding];
|
||||
//when system has 32bit version of vmmap ('vmmap32')
|
||||
// ->use that
|
||||
if(YES == [[NSFileManager defaultManager] fileExistsAtPath:VMMAP_32])
|
||||
{
|
||||
//exec vmmap32
|
||||
results = [[NSString alloc] initWithData:execTask(VMMAP_32, @[@"-w", [pid stringValue]]) encoding:NSUTF8StringEncoding];
|
||||
}
|
||||
//otherwise
|
||||
// ->assume vmmap is 'fat', and exec 32bit version (pre El Capitan)
|
||||
else
|
||||
{
|
||||
//exec 'file' to get file type
|
||||
results = [[NSString alloc] initWithData:execTask(ARCH, @[@"-i386", VMMAP, [pid stringValue]]) encoding:NSUTF8StringEncoding];
|
||||
}
|
||||
}
|
||||
//for 64bit procs
|
||||
// ->just exec vmmap directly
|
||||
else
|
||||
{
|
||||
//exec 'file' to get file type
|
||||
//exec vmmap
|
||||
results = [[NSString alloc] initWithData:execTask(VMMAP, @[@"-w", [pid stringValue]]) encoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user