mirror of
https://github.com/vee1e/speakeasy.git
synced 2026-09-02 03:17:28 +00:00
58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
import argparse
|
|
|
|
import speakeasy
|
|
|
|
|
|
class DbgView(speakeasy.Speakeasy):
|
|
'''
|
|
Print debug port prints to the console
|
|
'''
|
|
|
|
def __init__(self, debug=False):
|
|
super(DbgView, self).__init__(debug=debug)
|
|
|
|
def debug_print_hook(self, emu, api_name, func, params):
|
|
# Call the DbgPrint* function and print the formatted string to the console
|
|
rv = func(params)
|
|
|
|
formatted_str = params[0]
|
|
print(formatted_str)
|
|
|
|
return rv
|
|
|
|
def debug_printex_hook(self, emu, api_name, func, params):
|
|
# Call the DbgPrintEx function and print the formatted string to the console
|
|
rv = func(params)
|
|
|
|
formatted_str = params[2]
|
|
print(formatted_str)
|
|
|
|
return rv
|
|
|
|
|
|
def main(args):
|
|
|
|
dbg = DbgView()
|
|
module = dbg.load_module(args.file)
|
|
|
|
dbg.add_api_hook(dbg.debug_print_hook,
|
|
'ntoskrnl',
|
|
'DbgPrint'
|
|
)
|
|
|
|
dbg.add_api_hook(dbg.debug_printex_hook,
|
|
'ntoskrnl',
|
|
'DbgPrintEx'
|
|
)
|
|
|
|
# Emulate the module
|
|
dbg.run_module(module, all_entrypoints=True)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
parser = argparse.ArgumentParser(description='Print debug port prints to the console')
|
|
parser.add_argument('-f', '--file', action='store', dest='file',
|
|
required=True, help='Path of driver to emulate')
|
|
args = parser.parse_args()
|
|
main(args)
|