@@ -232,7 +232,7 @@ def init_loader(self, options):
232
232
loader_start_address = int (options .loader_start_address , 0 )
233
233
else :
234
234
loader_start_address = None
235
- loader = LoaderWindows (loader_start_address = loader_start_address )
235
+ loader = LoaderWindows (self . jitter . vm , loader_start_address = loader_start_address )
236
236
self .loader = loader
237
237
winobjs .loader = loader
238
238
@@ -242,60 +242,19 @@ def use_windows_structs(self):
242
242
win_api_x86_32_seh .main_pe_name = self .fname_basename
243
243
win_api_x86_32_seh .main_pe = self .pe
244
244
win_api_x86_32 .winobjs .hcurmodule = self .pe .NThdr .ImageBase
245
- win_api_x86_32_seh .name2module = self .name2module
245
+ win_api_x86_32_seh .name2module = self .loader . module_name_to_module
246
246
win_api_x86_32_seh .set_win_fs_0 (self .jitter )
247
247
win_api_x86_32_seh .init_seh (self .jitter )
248
248
249
249
def load_main_pe (self , options ):
250
250
from miasm .jitter .loader .pe import vm_load_pe
251
251
from miasm .os_dep .win_api_x86_32 import winobjs
252
252
253
- self .name2module = {}
254
-
255
- # Load main pe
256
- with open (options .filename , "rb" ) as fstream :
257
- self .pe = vm_load_pe (
258
- self .jitter .vm ,
259
- fstream .read (),
260
- load_hdr = options .load_hdr ,
261
- name = options .filename ,
262
- winobjs = winobjs ,
263
- )
264
- self .name2module [self .fname_basename ] = self .pe
253
+ module_image_base = self .loader .load_module (options .filename )
254
+ name = self .loader .module_base_address_to_name [module_image_base ]
255
+ self .pe = self .loader .module_name_to_module [name ]
265
256
winobjs .current_pe = self .pe
266
257
267
- def load_base_dll (self ):
268
- from miasm .os_dep .win_api_x86_32 import winobjs
269
- from miasm .jitter .loader .pe import vm_load_pe_libs , fix_pe_imports
270
-
271
- # Load libs in memory
272
- self .name2module .update (
273
- vm_load_pe_libs (
274
- self .jitter .vm ,
275
- self .LOADED_DLLS ,
276
- self .loader ,
277
- self .PATH_DLLS ,
278
- winobjs = winobjs ,
279
- )
280
- )
281
-
282
- # Patch libs imports
283
- for name , pe in self .name2module .items ():
284
- fix_pe_imports (self .jitter .vm , pe , self .loader , pe_name = name )
285
-
286
- def load_dependencies (self ):
287
- from miasm .os_dep .win_api_x86_32 import winobjs
288
- from miasm .jitter .loader .pe import vm_load_pe_and_dependencies
289
-
290
- vm_load_pe_and_dependencies (
291
- self .jitter .vm ,
292
- self .fname_basename ,
293
- self .name2module ,
294
- self .loader ,
295
- self .PATH_DLLS ,
296
- winobjs = winobjs ,
297
- )
298
-
299
258
def set_call_handler (self , custom_methods ):
300
259
# Library calls handler
301
260
from miasm .os_dep import win_api_x86_32
@@ -306,27 +265,14 @@ def set_call_handler(self, custom_methods):
306
265
methods .update (custom_methods )
307
266
self .jitter .add_lib_handler (self .loader , methods )
308
267
309
- def fix_pe_imports (self ):
310
- # Fix pe imports
311
- from miasm .jitter .loader .pe import fix_pe_imports
312
-
313
- fix_pe_imports (
314
- self .jitter .vm , self .pe , self .loader , pe_name = self .fname_basename
315
- )
316
-
317
268
def __init__ (self , jitter , options , custom_methods = None ):
318
269
self .fname_basename = os .path .basename (options .filename ).lower ()
319
270
self .jitter = jitter
320
271
321
272
self .init_stack ()
322
273
self .init_loader (options )
323
274
self .load_main_pe (options )
324
- if options .loadbasedll :
325
- self .load_base_dll ()
326
- if options .dependencies :
327
- self .load_dependencies ()
328
275
329
- self .fix_pe_imports ()
330
276
self .set_call_handler (custom_methods )
331
277
332
278
# Manage SEH
@@ -419,7 +365,7 @@ def init_loader(self, options):
419
365
loader_start_address = int (options .loader_start_address , 0 )
420
366
else :
421
367
loader_start_address = None
422
- loader = LoaderWindows (apiset = apiset , loader_start_address = loader_start_address )
368
+ loader = LoaderWindows (self . jitter . vm , apiset = apiset , loader_start_address = loader_start_address )
423
369
self .loader = loader
424
370
winobjs .loader = loader
425
371
@@ -503,7 +449,7 @@ def __init__(self, jitter, options, custom_methods=None):
503
449
self .jitter .init_stack ()
504
450
505
451
# Import manager
506
- self .loader = LoaderUnix ()
452
+ self .loader = LoaderUnix (self . jitter . vm )
507
453
508
454
with open (options .filename , "rb" ) as fstream :
509
455
self .elf = vm_load_elf (
@@ -562,7 +508,7 @@ def __init__(self, jitter, options, custom_methods=None):
562
508
self .jitter .init_stack ()
563
509
564
510
# Import manager
565
- self .loader = LoaderUnix ()
511
+ self .loader = LoaderUnix (self . jitter . vm )
566
512
567
513
data = open (options .filename , "rb" ).read ()
568
514
options .load_base_addr = int (options .load_base_addr , 0 )
0 commit comments