@@ -119,6 +119,7 @@ def parse_args(self):
119119 help = 'Disable analysis on the entry point / symbols and don\' t scan memmory. You can force it with the command push_analyze_symbols.' )
120120 parser .add_argument ('--debugsp' , action = 'store_true' ,
121121 help = "Print the stack offset on each instructions. Warning: these values will not be saved in the database." )
122+ parser .add_argument ('--db_path' , default = None , help = "Database path ('.<exe_name>.db' by default)." )
122123
123124 args = parser .parse_args ()
124125
@@ -140,6 +141,7 @@ def parse_args(self):
140141 self .list_sections = args .sections
141142 self .autoanalyzer = not args .noautoanalyzer
142143 self .debugsp = args .debugsp
144+ self .db_path = args .db_path
143145
144146 if args .nbytes == 0 :
145147 self .nbytes = 4
@@ -157,6 +159,13 @@ def parse_args(self):
157159 else :
158160 self .raw_base = 0
159161
162+ def _get_database_path (self , executable_filename ):
163+ if self .db_path is not None :
164+ return self .db_path
165+ dirname = os .path .dirname (executable_filename )
166+ path = dirname + "/" if dirname != "" else ""
167+ path += "." + os .path .basename (executable_filename ) + ".db"
168+ return path
160169
161170 def load_file (self , filename = None ):
162171 if filename is None :
@@ -175,7 +184,7 @@ def load_file(self, filename=None):
175184 die ()
176185
177186 self .db = Database ()
178- self .db .load (filename )
187+ self .db .load (self . _get_database_path ( filename ) )
179188
180189 if self .raw_base != 0 :
181190 self .db .raw_base = self .raw_base
0 commit comments