Skip to content

Commit ab14238

Browse files
committed
Add fake dll load
1 parent 86e3ad2 commit ab14238

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

miasm/analysis/sandbox.py

+14-2
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,10 @@ def init_loader(self, options):
232232
loader_start_address = int(options.loader_start_address, 0)
233233
else:
234234
loader_start_address = None
235-
loader = LoaderWindows(self.jitter.vm, loader_start_address=loader_start_address)
235+
loader = LoaderWindows(
236+
self.jitter.vm, loader_start_address=loader_start_address,
237+
fake_dll_load=options.fake_dll_load
238+
)
236239
self.loader = loader
237240
winobjs.loader = loader
238241

@@ -298,6 +301,12 @@ def update_parser(cls, parser):
298301
parser.add_argument(
299302
"-r", "--parse-resources", action="store_true", help="Load resources"
300303
)
304+
parser.add_argument(
305+
"-f",
306+
"--fake-dll-load",
307+
action="store_true",
308+
help="Don't load dll real dll, create fake entries",
309+
)
301310
parser.add_argument(
302311
"-i",
303312
"--dependencies",
@@ -365,7 +374,10 @@ def init_loader(self, options):
365374
loader_start_address = int(options.loader_start_address, 0)
366375
else:
367376
loader_start_address = None
368-
loader = LoaderWindows(self.jitter.vm, apiset=apiset, loader_start_address=loader_start_address)
377+
loader = LoaderWindows(
378+
self.jitter.vm, apiset=apiset, loader_start_address=loader_start_address,
379+
fake_dll_load=options.fake_dll_load
380+
)
369381
self.loader = loader
370382
winobjs.loader = loader
371383

miasm/jitter/loader/pe.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -330,14 +330,15 @@ def vm2pe(myjit, fname, loader=None, e_orig=None,
330330

331331
class LoaderWindows(Loader):
332332

333-
def __init__(self, vm, apiset=None, loader_start_address=None, *args, **kwargs):
333+
def __init__(self, vm, apiset=None, loader_start_address=None, fake_dll_load=False, *args, **kwargs):
334334
super(LoaderWindows, self).__init__(vm, *args, **kwargs)
335335
self.library_path = ["win_dll", "./"]
336336
# dependency -> redirector
337337
self.created_redirected_imports = {}
338338
self.module_name_to_module = {}
339339
self.apiset = apiset
340340
self.loader_start_address = loader_start_address
341+
self.fake_dll_load = fake_dll_load
341342

342343
def lib_get_add_base(self, name):
343344
name = name.lower().strip(' ')
@@ -440,6 +441,9 @@ def find_module_path(self, module_name):
440441
Find the real path of module_name
441442
"""
442443
module_name = module_name.lower()
444+
if self.fake_dll_load:
445+
self.fake_library_entry(module_name)
446+
return None
443447
for path in self.library_path:
444448
fname = os.path.join(path, module_name)
445449
if os.access(fname, os.R_OK):

0 commit comments

Comments
 (0)