15
15
from androguard .core .bytecodes import dvm
16
16
from androguard .core .analysis .analysis import *
17
17
18
- from multiprocessing import Pool
18
+ from multiprocessing import Pool , get_logger
19
19
20
20
def handler (signum , sigframe ):
21
21
raise Exception ("Killed" );
@@ -50,9 +50,12 @@ def analyze((apkEntry, OUT)):
50
50
SearchIntents .Intents (filename , outfile_links , packages , dbMgr , fileName , a , d , dx );
51
51
dbMgr .androidAppDB .apkInfo .update ({'packageName' :apkEntry ['packageName' ]}, {'$set' : {'isApkUpdated' : False }})
52
52
return apkEntry ['packageName' ]
53
- except Exception as e :
54
- e .args = [apkEntry ['packageName' ]]
55
- raise e
53
+ except :
54
+ logger .error ("\n " )
55
+ logger .error ("=======================================================================" )
56
+ logger .error ("\n " )
57
+ logger .exception ("Main : Exception occured for " + apkEntry ['packageName' ])
58
+ return ""
56
59
57
60
if __name__ == '__main__' :
58
61
OUT = sys .argv [1 ]
@@ -68,35 +71,24 @@ def analyze((apkEntry, OUT)):
68
71
dbMgr.insertPermissionInfo('testpackage', 'testfilename', 'testpermission', True, 'testdest', 'testexternalpackagename', 'testsrc')
69
72
dbMgr.insertLinkInfo('testpackage', 'testfilename', 'testlink', True, 'testdest', 'testexternalpackagename')
70
73
'''
71
- # Make a global logging object.
72
- logObject = logging .getLogger ("logfile" )
73
- logObject .setLevel (logging .DEBUG )
74
- # create file handler which logs even debug messages
74
+ logger = get_logger ()
75
75
logFileHandler = logging .FileHandler (OUT + '/exceptions.log' )
76
- logFileHandler .setLevel (logging .DEBUG )
77
76
logFormat = logging .Formatter ("%(levelname)s %(asctime)s %(funcName)s %(lineno)d %(message)s" )
77
+ logFileHandler .setLevel (logging .DEBUG )
78
78
logFileHandler .setFormatter (logFormat )
79
- logObject .addHandler (logFileHandler )
79
+ logger .addHandler (logFileHandler )
80
80
81
81
82
- try :
83
- apkList = list ( dbMgr . androidAppDB . apkInfo . find ({ 'isApkUpdated' : True },{ "fileDir" : 1 , 'packageName' : 1 }))
84
- apkList = [(entry , OUT , logObject ) for entry in apkList ]
85
- #apkList = [({'packageName': line.rstrip('\n').replace(".apk",''), 'fileDir': '../downloads/'}, OUT) for line in open("apkList").readlines()]
86
- numberOfProcess = 4
87
- pool = Pool ( numberOfProcess )
88
- for packageName in pool . imap ( analyze , apkList ) :
82
+ apkList = list ( dbMgr . androidAppDB . apkInfo . find ({ 'isApkUpdated' : True },{ "fileDir" : 1 , 'packageName' : 1 }))
83
+ apkList = [( entry , OUT , logObject ) for entry in apkList ]
84
+ # apkList = [({'packageName': line.rstrip('\n').replace(".apk",''), 'fileDir': '../downloads/'}, OUT ) for line in open(" apkList").readlines() ]
85
+ numberOfProcess = 4
86
+ pool = Pool ( numberOfProcess )
87
+ for packageName in pool . imap ( analyze , apkList ):
88
+ if packageName != "" :
89
89
analyzedApkFile .write (packageName + '\n ' )
90
+ analyzedApkFile .flush ()
90
91
91
- except Exception as e :
92
- packageName = ''
93
- if len (e .args ) > 1 :
94
- packageName = e .args [0 ]
95
-
96
- logObject .error ("\n " )
97
- logObject .error ("=======================================================================" )
98
- logObject .error ("\n " )
99
- logObject .exception ("Main : Exception occured for " + packageName )
100
92
101
93
102
94
0 commit comments