debugpy 1.8.5__zip → 1.8.6__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {debugpy-1.8.5/src/debugpy.egg-info → debugpy-1.8.6}/PKG-INFO +1 -1
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +19 -21
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +30 -30
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +3 -1
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +43 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +35 -32
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +83 -84
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +92 -99
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +2 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +51 -27
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +11 -7
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +6 -5
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +34 -38
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +71 -69
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +1 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -1
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +14 -16
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +81 -93
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +9 -8
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +33 -25
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +183 -170
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +33 -29
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +6 -4
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +19 -18
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +165 -138
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +77 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +35 -36
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +22 -23
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +37 -57
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +54 -52
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +28 -37
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +56 -53
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +604 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +551 -445
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +25 -29
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +17458 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +11 -12
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +18 -19
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +41 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +327 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +263 -214
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +7 -10
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +187 -92
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +105 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +46 -51
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +239 -176
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +370 -297
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +78 -86
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +55 -59
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +194 -58
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +2 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +18 -23
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +157 -127
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +10 -12
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +35217 -23106
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +15 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +802 -511
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +18 -7
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +32 -24
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +11 -13
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +16 -16
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +27 -2
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +1 -1
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +4 -5
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +8 -10
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +50 -45
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +462 -407
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +63 -61
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +14 -16
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +27 -25
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +40 -42
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +200 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +20 -19
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +199 -108
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +121 -73
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +208 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +206 -159
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +346 -334
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +75 -80
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +35 -35
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +116 -124
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +44 -58
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +51 -55
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +4 -2
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +24 -24
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +19 -20
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +45 -49
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +61 -58
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +23 -13
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +29 -31
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +41 -11
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +117 -55
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +11 -14
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +90 -89
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +106 -97
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +40 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +56 -46
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +5 -5
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +71 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +11165 -5326
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +5 -6
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +53 -56
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +4 -6
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +6 -26
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +7 -21
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +5 -24
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +10 -34
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +1 -4
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +2 -6
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +3 -5
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +11 -31
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +2 -2
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +14 -41
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +2 -4
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +7 -18
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +6 -18
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +7 -18
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +1 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +14 -19
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +1927 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +43058 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +46 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +1934 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +16 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +12 -11
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_coverage.py +30 -32
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +58 -54
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +20 -24
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +8 -7
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +8 -6
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +11 -8
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +21 -18
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +17 -15
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +17 -15
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +6 -4
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +14 -10
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +30 -26
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +24 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +37 -34
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +86 -73
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +7 -7
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_pysrc.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +23 -24
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +267 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevconsole.py +55 -47
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd.py +732 -508
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +40 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +1 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +11 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +75 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +130 -125
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +89 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +41 -32
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +1 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +9 -1
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +10 -9
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +103 -119
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +457 -516
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +33 -15
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +336 -281
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +101 -131
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +148 -153
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +310 -302
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +235 -208
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +185 -218
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +428 -564
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +54 -53
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +69 -73
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +158 -170
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +143 -213
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +302 -333
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +220 -239
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +198 -177
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +11 -11
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +1191 -713
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +248 -194
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +132 -120
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +450 -346
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +305 -286
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +526 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +1479 -1097
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +579 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +3517 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +54 -31
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +170 -149
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +190 -108
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +542 -437
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +489 -442
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +83 -65
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +70 -76
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +17 -9
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +1 -1
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +141 -120
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +175 -149
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +5 -5
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +28 -28
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +22 -30
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +3 -2
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +130 -108
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +27 -14
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +85 -66
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +96 -59
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_version.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/messaging.py +2 -1
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/server/cli.py +32 -17
- {debugpy-1.8.5 → debugpy-1.8.6/src/debugpy.egg-info}/PKG-INFO +1 -1
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy.egg-info/SOURCES.txt +6 -1
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -41
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -76
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +0 -592
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -19514
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -19
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +0 -153
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -204
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +0 -91
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_api.py +0 -62
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -41
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -48
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -23
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -1
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -237
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -32
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -9
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -74
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -79
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -507
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -539
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -3435
- {debugpy-1.8.5 → debugpy-1.8.6}/DESCRIPTION.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/LICENSE +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/MANIFEST.in +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/README.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/pyproject.toml +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/setup.cfg +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/setup.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/ThirdPartyNotices.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/_util.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/force_pydevd.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/clients.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/components.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/launchers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/servers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/adapter/sessions.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/json.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/log.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/singleton.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/sockets.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/stacks.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/timestamp.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/common/util.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/debuggee.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/handlers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/output.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/launcher/winapi.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/public_api.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/server/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/server/api.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy/server/attach_pid_injected.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy.egg-info/dependency_links.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy.egg-info/entry_points.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/src/debugpy.egg-info/top_level.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.6}/versioneer.py +0 -0
|
@@ -44,13 +44,13 @@ from __future__ import with_statement
|
|
|
44
44
|
__revision__ = "$Id$"
|
|
45
45
|
|
|
46
46
|
__all__ = [
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
"Disassembler",
|
|
48
|
+
"Engine",
|
|
49
|
+
"BeaEngine",
|
|
50
|
+
"CapstoneEngine",
|
|
51
|
+
"DistormEngine",
|
|
52
|
+
"LibdisassembleEngine",
|
|
53
|
+
"PyDasmEngine",
|
|
54
54
|
]
|
|
55
55
|
|
|
56
56
|
from winappdbg.textio import HexDump
|
|
@@ -66,9 +66,10 @@ pydasm = None
|
|
|
66
66
|
libdisassemble = None
|
|
67
67
|
capstone = None
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
# ==============================================================================
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
|
|
72
|
+
class Engine(object):
|
|
72
73
|
"""
|
|
73
74
|
Base class for disassembly engine adaptors.
|
|
74
75
|
|
|
@@ -91,10 +92,10 @@ class Engine (object):
|
|
|
91
92
|
|
|
92
93
|
name = "<insert engine name here>"
|
|
93
94
|
desc = "<insert engine description here>"
|
|
94
|
-
url
|
|
95
|
+
url = "<insert download url here>"
|
|
95
96
|
supported = set()
|
|
96
97
|
|
|
97
|
-
def __init__(self, arch
|
|
98
|
+
def __init__(self, arch=None):
|
|
98
99
|
"""
|
|
99
100
|
@type arch: str
|
|
100
101
|
@param arch: Name of the processor architecture.
|
|
@@ -112,7 +113,7 @@ class Engine (object):
|
|
|
112
113
|
msg = msg % (self.name, self.url)
|
|
113
114
|
raise NotImplementedError(msg)
|
|
114
115
|
|
|
115
|
-
def _validate_arch(self, arch
|
|
116
|
+
def _validate_arch(self, arch=None):
|
|
116
117
|
"""
|
|
117
118
|
@type arch: str
|
|
118
119
|
@param arch: Name of the processor architecture.
|
|
@@ -171,9 +172,11 @@ class Engine (object):
|
|
|
171
172
|
"""
|
|
172
173
|
raise NotImplementedError()
|
|
173
174
|
|
|
174
|
-
#==============================================================================
|
|
175
175
|
|
|
176
|
-
|
|
176
|
+
# ==============================================================================
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
class BeaEngine(Engine):
|
|
177
180
|
"""
|
|
178
181
|
Integration with the BeaEngine disassembler by Beatrix.
|
|
179
182
|
|
|
@@ -182,15 +185,16 @@ class BeaEngine (Engine):
|
|
|
182
185
|
|
|
183
186
|
name = "BeaEngine"
|
|
184
187
|
desc = "BeaEngine disassembler by Beatrix"
|
|
185
|
-
url
|
|
188
|
+
url = "https://sourceforge.net/projects/winappdbg/files/additional%20packages/BeaEngine/"
|
|
186
189
|
|
|
187
|
-
supported = set(
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
190
|
+
supported = set(
|
|
191
|
+
(
|
|
192
|
+
win32.ARCH_I386,
|
|
193
|
+
win32.ARCH_AMD64,
|
|
194
|
+
)
|
|
195
|
+
)
|
|
191
196
|
|
|
192
197
|
def _import_dependencies(self):
|
|
193
|
-
|
|
194
198
|
# Load the BeaEngine ctypes wrapper.
|
|
195
199
|
global BeaEnginePython
|
|
196
200
|
if BeaEnginePython is None:
|
|
@@ -212,10 +216,9 @@ class BeaEngine (Engine):
|
|
|
212
216
|
Instruction.Archi = 0
|
|
213
217
|
else:
|
|
214
218
|
Instruction.Archi = 0x40
|
|
215
|
-
Instruction.Options = (
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
BeaEnginePython.ShowSegmentRegs )
|
|
219
|
+
Instruction.Options = (
|
|
220
|
+
BeaEnginePython.Tabulation + BeaEnginePython.NasmSyntax + BeaEnginePython.SuffixedNumeral + BeaEnginePython.ShowSegmentRegs
|
|
221
|
+
)
|
|
219
222
|
|
|
220
223
|
# Prepare for looping over each instruction.
|
|
221
224
|
result = []
|
|
@@ -223,12 +226,11 @@ class BeaEngine (Engine):
|
|
|
223
226
|
InstructionPtr = addressof(Instruction)
|
|
224
227
|
hexdump = HexDump.hexadecimal
|
|
225
228
|
append = result.append
|
|
226
|
-
OUT_OF_BLOCK
|
|
229
|
+
OUT_OF_BLOCK = BeaEnginePython.OUT_OF_BLOCK
|
|
227
230
|
UNKNOWN_OPCODE = BeaEnginePython.UNKNOWN_OPCODE
|
|
228
231
|
|
|
229
232
|
# For each decoded instruction...
|
|
230
233
|
while True:
|
|
231
|
-
|
|
232
234
|
# Calculate the current offset into the buffer.
|
|
233
235
|
offset = Instruction.EIP - buffer_ptr
|
|
234
236
|
|
|
@@ -245,15 +247,16 @@ class BeaEngine (Engine):
|
|
|
245
247
|
|
|
246
248
|
# The instruction could not be decoded.
|
|
247
249
|
if InstrLength == UNKNOWN_OPCODE:
|
|
248
|
-
|
|
249
250
|
# Output a single byte as a "db" instruction.
|
|
250
251
|
char = "%.2X" % ord(buffer[offset])
|
|
251
|
-
result.append(
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
252
|
+
result.append(
|
|
253
|
+
(
|
|
254
|
+
Instruction.VirtualAddr,
|
|
255
|
+
1,
|
|
256
|
+
"db %sh" % char,
|
|
257
|
+
char,
|
|
258
|
+
)
|
|
259
|
+
)
|
|
257
260
|
Instruction.VirtualAddr += 1
|
|
258
261
|
Instruction.EIP += 1
|
|
259
262
|
|
|
@@ -261,38 +264,42 @@ class BeaEngine (Engine):
|
|
|
261
264
|
# This can happen when the last instruction is a prefix without an
|
|
262
265
|
# opcode. For example: decode(0, '\x66')
|
|
263
266
|
elif offset + InstrLength > len(code):
|
|
264
|
-
|
|
265
267
|
# Output each byte as a "db" instruction.
|
|
266
|
-
for char in buffer[
|
|
268
|
+
for char in buffer[offset : offset + len(code)]:
|
|
267
269
|
char = "%.2X" % ord(char)
|
|
268
|
-
result.append(
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
270
|
+
result.append(
|
|
271
|
+
(
|
|
272
|
+
Instruction.VirtualAddr,
|
|
273
|
+
1,
|
|
274
|
+
"db %sh" % char,
|
|
275
|
+
char,
|
|
276
|
+
)
|
|
277
|
+
)
|
|
274
278
|
Instruction.VirtualAddr += 1
|
|
275
279
|
Instruction.EIP += 1
|
|
276
280
|
|
|
277
281
|
# The instruction was decoded correctly.
|
|
278
282
|
else:
|
|
279
|
-
|
|
280
283
|
# Output the decoded instruction.
|
|
281
|
-
append(
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
284
|
+
append(
|
|
285
|
+
(
|
|
286
|
+
Instruction.VirtualAddr,
|
|
287
|
+
InstrLength,
|
|
288
|
+
Instruction.CompleteInstr.strip(),
|
|
289
|
+
hexdump(buffer.raw[offset : offset + InstrLength]),
|
|
290
|
+
)
|
|
291
|
+
)
|
|
287
292
|
Instruction.VirtualAddr += InstrLength
|
|
288
293
|
Instruction.EIP += InstrLength
|
|
289
294
|
|
|
290
295
|
# Return the list of decoded instructions.
|
|
291
296
|
return result
|
|
292
297
|
|
|
293
|
-
#==============================================================================
|
|
294
298
|
|
|
295
|
-
|
|
299
|
+
# ==============================================================================
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
class DistormEngine(Engine):
|
|
296
303
|
"""
|
|
297
304
|
Integration with the diStorm disassembler by Gil Dabah.
|
|
298
305
|
|
|
@@ -301,15 +308,16 @@ class DistormEngine (Engine):
|
|
|
301
308
|
|
|
302
309
|
name = "diStorm"
|
|
303
310
|
desc = "diStorm disassembler by Gil Dabah"
|
|
304
|
-
url
|
|
311
|
+
url = "https://code.google.com/p/distorm3"
|
|
305
312
|
|
|
306
|
-
supported = set(
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
313
|
+
supported = set(
|
|
314
|
+
(
|
|
315
|
+
win32.ARCH_I386,
|
|
316
|
+
win32.ARCH_AMD64,
|
|
317
|
+
)
|
|
318
|
+
)
|
|
310
319
|
|
|
311
320
|
def _import_dependencies(self):
|
|
312
|
-
|
|
313
321
|
# Load the distorm bindings.
|
|
314
322
|
global distorm3
|
|
315
323
|
if distorm3 is None:
|
|
@@ -323,16 +331,18 @@ class DistormEngine (Engine):
|
|
|
323
331
|
|
|
324
332
|
# Load the bits flag.
|
|
325
333
|
self.__flag = {
|
|
326
|
-
win32.ARCH_I386:
|
|
334
|
+
win32.ARCH_I386: distorm3.Decode32Bits,
|
|
327
335
|
win32.ARCH_AMD64: distorm3.Decode64Bits,
|
|
328
336
|
}[self.arch]
|
|
329
337
|
|
|
330
338
|
def decode(self, address, code):
|
|
331
339
|
return self.__decode(address, code, self.__flag)
|
|
332
340
|
|
|
333
|
-
#==============================================================================
|
|
334
341
|
|
|
335
|
-
|
|
342
|
+
# ==============================================================================
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
class PyDasmEngine(Engine):
|
|
336
346
|
"""
|
|
337
347
|
Integration with PyDasm: Python bindings to libdasm.
|
|
338
348
|
|
|
@@ -341,54 +351,48 @@ class PyDasmEngine (Engine):
|
|
|
341
351
|
|
|
342
352
|
name = "PyDasm"
|
|
343
353
|
desc = "PyDasm: Python bindings to libdasm"
|
|
344
|
-
url
|
|
354
|
+
url = "https://code.google.com/p/libdasm/"
|
|
345
355
|
|
|
346
|
-
supported = set((
|
|
347
|
-
win32.ARCH_I386,
|
|
348
|
-
))
|
|
356
|
+
supported = set((win32.ARCH_I386,))
|
|
349
357
|
|
|
350
358
|
def _import_dependencies(self):
|
|
351
|
-
|
|
352
359
|
# Load the libdasm bindings.
|
|
353
360
|
global pydasm
|
|
354
361
|
if pydasm is None:
|
|
355
362
|
import pydasm
|
|
356
363
|
|
|
357
364
|
def decode(self, address, code):
|
|
358
|
-
|
|
359
365
|
# Decode each instruction in the buffer.
|
|
360
366
|
result = []
|
|
361
367
|
offset = 0
|
|
362
368
|
while offset < len(code):
|
|
363
|
-
|
|
364
369
|
# Try to decode the current instruction.
|
|
365
|
-
instruction = pydasm.get_instruction(code[offset:offset+32],
|
|
366
|
-
pydasm.MODE_32)
|
|
370
|
+
instruction = pydasm.get_instruction(code[offset : offset + 32], pydasm.MODE_32)
|
|
367
371
|
|
|
368
372
|
# Get the memory address of the current instruction.
|
|
369
373
|
current = address + offset
|
|
370
374
|
|
|
371
375
|
# Illegal opcode or opcode longer than remaining buffer.
|
|
372
376
|
if not instruction or instruction.length + offset > len(code):
|
|
373
|
-
hexdump =
|
|
374
|
-
disasm
|
|
375
|
-
ilen
|
|
377
|
+
hexdump = "%.2X" % ord(code[offset])
|
|
378
|
+
disasm = "db 0x%s" % hexdump
|
|
379
|
+
ilen = 1
|
|
376
380
|
|
|
377
381
|
# Correctly decoded instruction.
|
|
378
382
|
else:
|
|
379
|
-
disasm
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
ilen = instruction.length
|
|
383
|
-
hexdump = HexDump.hexadecimal(code[offset:offset+ilen])
|
|
383
|
+
disasm = pydasm.get_instruction_string(instruction, pydasm.FORMAT_INTEL, current)
|
|
384
|
+
ilen = instruction.length
|
|
385
|
+
hexdump = HexDump.hexadecimal(code[offset : offset + ilen])
|
|
384
386
|
|
|
385
387
|
# Add the decoded instruction to the list.
|
|
386
|
-
result.append(
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
388
|
+
result.append(
|
|
389
|
+
(
|
|
390
|
+
current,
|
|
391
|
+
ilen,
|
|
392
|
+
disasm,
|
|
393
|
+
hexdump,
|
|
394
|
+
)
|
|
395
|
+
)
|
|
392
396
|
|
|
393
397
|
# Move to the next instruction.
|
|
394
398
|
offset += ilen
|
|
@@ -396,9 +400,11 @@ class PyDasmEngine (Engine):
|
|
|
396
400
|
# Return the list of decoded instructions.
|
|
397
401
|
return result
|
|
398
402
|
|
|
399
|
-
#==============================================================================
|
|
400
403
|
|
|
401
|
-
|
|
404
|
+
# ==============================================================================
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
class LibdisassembleEngine(Engine):
|
|
402
408
|
"""
|
|
403
409
|
Integration with Immunity libdisassemble.
|
|
404
410
|
|
|
@@ -407,14 +413,11 @@ class LibdisassembleEngine (Engine):
|
|
|
407
413
|
|
|
408
414
|
name = "Libdisassemble"
|
|
409
415
|
desc = "Immunity libdisassemble"
|
|
410
|
-
url
|
|
416
|
+
url = "http://www.immunitysec.com/resources-freesoftware.shtml"
|
|
411
417
|
|
|
412
|
-
supported = set((
|
|
413
|
-
win32.ARCH_I386,
|
|
414
|
-
))
|
|
418
|
+
supported = set((win32.ARCH_I386,))
|
|
415
419
|
|
|
416
420
|
def _import_dependencies(self):
|
|
417
|
-
|
|
418
421
|
# Load the libdisassemble module.
|
|
419
422
|
# Since it doesn't come with an installer or an __init__.py file
|
|
420
423
|
# users can only install it manually however they feel like it,
|
|
@@ -423,35 +426,33 @@ class LibdisassembleEngine (Engine):
|
|
|
423
426
|
global libdisassemble
|
|
424
427
|
if libdisassemble is None:
|
|
425
428
|
try:
|
|
426
|
-
|
|
427
429
|
# If installed properly with __init__.py
|
|
428
430
|
import libdisassemble.disassemble as libdisassemble
|
|
429
431
|
|
|
430
432
|
except ImportError:
|
|
431
|
-
|
|
432
433
|
# If installed by just copying and pasting the files
|
|
433
434
|
import disassemble as libdisassemble
|
|
434
435
|
|
|
435
436
|
def decode(self, address, code):
|
|
436
|
-
|
|
437
437
|
# Decode each instruction in the buffer.
|
|
438
438
|
result = []
|
|
439
439
|
offset = 0
|
|
440
440
|
while offset < len(code):
|
|
441
|
-
|
|
442
441
|
# Decode the current instruction.
|
|
443
|
-
opcode
|
|
444
|
-
length
|
|
445
|
-
disasm
|
|
446
|
-
hexdump = HexDump.hexadecimal(
|
|
442
|
+
opcode = libdisassemble.Opcode(code[offset : offset + 32])
|
|
443
|
+
length = opcode.getSize()
|
|
444
|
+
disasm = opcode.printOpcode("INTEL")
|
|
445
|
+
hexdump = HexDump.hexadecimal(code[offset : offset + length])
|
|
447
446
|
|
|
448
447
|
# Add the decoded instruction to the list.
|
|
449
|
-
result.append(
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
448
|
+
result.append(
|
|
449
|
+
(
|
|
450
|
+
address + offset,
|
|
451
|
+
length,
|
|
452
|
+
disasm,
|
|
453
|
+
hexdump,
|
|
454
|
+
)
|
|
455
|
+
)
|
|
455
456
|
|
|
456
457
|
# Move to the next instruction.
|
|
457
458
|
offset += length
|
|
@@ -459,9 +460,11 @@ class LibdisassembleEngine (Engine):
|
|
|
459
460
|
# Return the list of decoded instructions.
|
|
460
461
|
return result
|
|
461
462
|
|
|
462
|
-
#==============================================================================
|
|
463
463
|
|
|
464
|
-
|
|
464
|
+
# ==============================================================================
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
class CapstoneEngine(Engine):
|
|
465
468
|
"""
|
|
466
469
|
Integration with the Capstone disassembler by Nguyen Anh Quynh.
|
|
467
470
|
|
|
@@ -470,18 +473,19 @@ class CapstoneEngine (Engine):
|
|
|
470
473
|
|
|
471
474
|
name = "Capstone"
|
|
472
475
|
desc = "Capstone disassembler by Nguyen Anh Quynh"
|
|
473
|
-
url
|
|
474
|
-
|
|
475
|
-
supported = set(
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
476
|
+
url = "http://www.capstone-engine.org/"
|
|
477
|
+
|
|
478
|
+
supported = set(
|
|
479
|
+
(
|
|
480
|
+
win32.ARCH_I386,
|
|
481
|
+
win32.ARCH_AMD64,
|
|
482
|
+
win32.ARCH_THUMB,
|
|
483
|
+
win32.ARCH_ARM,
|
|
484
|
+
win32.ARCH_ARM64,
|
|
485
|
+
)
|
|
486
|
+
)
|
|
482
487
|
|
|
483
488
|
def _import_dependencies(self):
|
|
484
|
-
|
|
485
489
|
# Load the Capstone bindings.
|
|
486
490
|
global capstone
|
|
487
491
|
if capstone is None:
|
|
@@ -489,36 +493,27 @@ class CapstoneEngine (Engine):
|
|
|
489
493
|
|
|
490
494
|
# Load the constants for the requested architecture.
|
|
491
495
|
self.__constants = {
|
|
492
|
-
win32.ARCH_I386:
|
|
493
|
-
|
|
494
|
-
win32.
|
|
495
|
-
|
|
496
|
-
win32.
|
|
497
|
-
(capstone.CS_ARCH_ARM, capstone.CS_MODE_THUMB),
|
|
498
|
-
win32.ARCH_ARM:
|
|
499
|
-
(capstone.CS_ARCH_ARM, capstone.CS_MODE_ARM),
|
|
500
|
-
win32.ARCH_ARM64:
|
|
501
|
-
(capstone.CS_ARCH_ARM64, capstone.CS_MODE_ARM),
|
|
496
|
+
win32.ARCH_I386: (capstone.CS_ARCH_X86, capstone.CS_MODE_32),
|
|
497
|
+
win32.ARCH_AMD64: (capstone.CS_ARCH_X86, capstone.CS_MODE_64),
|
|
498
|
+
win32.ARCH_THUMB: (capstone.CS_ARCH_ARM, capstone.CS_MODE_THUMB),
|
|
499
|
+
win32.ARCH_ARM: (capstone.CS_ARCH_ARM, capstone.CS_MODE_ARM),
|
|
500
|
+
win32.ARCH_ARM64: (capstone.CS_ARCH_ARM64, capstone.CS_MODE_ARM),
|
|
502
501
|
}
|
|
503
502
|
|
|
504
503
|
# Test for the bug in early versions of Capstone.
|
|
505
504
|
# If found, warn the user about it.
|
|
506
505
|
try:
|
|
507
506
|
self.__bug = not isinstance(
|
|
508
|
-
capstone.cs_disasm_quick(
|
|
509
|
-
|
|
510
|
-
capstone.capstone.CsInsn)
|
|
507
|
+
capstone.cs_disasm_quick(capstone.CS_ARCH_X86, capstone.CS_MODE_32, "\x90", 1)[0], capstone.capstone.CsInsn
|
|
508
|
+
)
|
|
511
509
|
except AttributeError:
|
|
512
510
|
self.__bug = False
|
|
513
511
|
if self.__bug:
|
|
514
512
|
warnings.warn(
|
|
515
|
-
"This version of the Capstone bindings is unstable,"
|
|
516
|
-
|
|
517
|
-
RuntimeWarning, stacklevel=4)
|
|
518
|
-
|
|
513
|
+
"This version of the Capstone bindings is unstable," " please upgrade to a newer one!", RuntimeWarning, stacklevel=4
|
|
514
|
+
)
|
|
519
515
|
|
|
520
516
|
def decode(self, address, code):
|
|
521
|
-
|
|
522
517
|
# Get the constants for the requested architecture.
|
|
523
518
|
arch, mode = self.__constants[self.arch]
|
|
524
519
|
|
|
@@ -543,29 +538,26 @@ class CapstoneEngine (Engine):
|
|
|
543
538
|
result = []
|
|
544
539
|
offset = 0
|
|
545
540
|
while offset < len(code):
|
|
546
|
-
|
|
547
541
|
# Disassemble a single instruction, because disassembling multiple
|
|
548
542
|
# instructions may cause excessive memory usage (Capstone allocates
|
|
549
543
|
# approximately 1K of metadata per each decoded instruction).
|
|
550
544
|
instr = None
|
|
551
545
|
try:
|
|
552
|
-
instr = decoder(
|
|
553
|
-
arch, mode, code[offset:offset+16], address+offset, 1)[0]
|
|
546
|
+
instr = decoder(arch, mode, code[offset : offset + 16], address + offset, 1)[0]
|
|
554
547
|
except IndexError:
|
|
555
|
-
pass
|
|
548
|
+
pass # No instructions decoded.
|
|
556
549
|
except CsError:
|
|
557
|
-
pass
|
|
550
|
+
pass # Any other error.
|
|
558
551
|
|
|
559
552
|
# On success add the decoded instruction.
|
|
560
553
|
if instr is not None:
|
|
561
|
-
|
|
562
554
|
# Get the instruction length, mnemonic and operands.
|
|
563
555
|
# Copy the values quickly before someone overwrites them,
|
|
564
556
|
# if using the buggy version of the bindings (otherwise it's
|
|
565
557
|
# irrelevant in which order we access the properties).
|
|
566
|
-
length
|
|
558
|
+
length = instr.size
|
|
567
559
|
mnemonic = instr.mnemonic
|
|
568
|
-
op_str
|
|
560
|
+
op_str = instr.op_str
|
|
569
561
|
|
|
570
562
|
# Concatenate the mnemonic and the operands.
|
|
571
563
|
if op_str:
|
|
@@ -574,12 +566,11 @@ class CapstoneEngine (Engine):
|
|
|
574
566
|
disasm = mnemonic
|
|
575
567
|
|
|
576
568
|
# Get the instruction bytes as a hexadecimal dump.
|
|
577
|
-
hexdump = HexDump.hexadecimal(
|
|
569
|
+
hexdump = HexDump.hexadecimal(code[offset : offset + length])
|
|
578
570
|
|
|
579
571
|
# On error add a "define constant" instruction.
|
|
580
572
|
# The exact instruction depends on the architecture.
|
|
581
573
|
else:
|
|
582
|
-
|
|
583
574
|
# The number of bytes to skip depends on the architecture.
|
|
584
575
|
# On Intel processors we'll skip one byte, since we can't
|
|
585
576
|
# really know the instruction length. On the rest of the
|
|
@@ -590,7 +581,7 @@ class CapstoneEngine (Engine):
|
|
|
590
581
|
length = 4
|
|
591
582
|
|
|
592
583
|
# Get the skipped bytes as a hexadecimal dump.
|
|
593
|
-
skipped = code[offset:offset+length]
|
|
584
|
+
skipped = code[offset : offset + length]
|
|
594
585
|
hexdump = HexDump.hexadecimal(skipped)
|
|
595
586
|
|
|
596
587
|
# Build the "define constant" instruction.
|
|
@@ -610,12 +601,14 @@ class CapstoneEngine (Engine):
|
|
|
610
601
|
disasm = mnemonic + op_str
|
|
611
602
|
|
|
612
603
|
# Add the decoded instruction to the list.
|
|
613
|
-
result.append(
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
604
|
+
result.append(
|
|
605
|
+
(
|
|
606
|
+
address + offset,
|
|
607
|
+
length,
|
|
608
|
+
disasm,
|
|
609
|
+
hexdump,
|
|
610
|
+
)
|
|
611
|
+
)
|
|
619
612
|
|
|
620
613
|
# Update the offset.
|
|
621
614
|
offset += length
|
|
@@ -623,12 +616,14 @@ class CapstoneEngine (Engine):
|
|
|
623
616
|
# Return the list of decoded instructions.
|
|
624
617
|
return result
|
|
625
618
|
|
|
626
|
-
|
|
619
|
+
|
|
620
|
+
# ==============================================================================
|
|
627
621
|
|
|
628
622
|
# TODO: use a lock to access __decoder
|
|
629
623
|
# TODO: look in sys.modules for whichever disassembler is already loaded
|
|
630
624
|
|
|
631
|
-
|
|
625
|
+
|
|
626
|
+
class Disassembler(object):
|
|
632
627
|
"""
|
|
633
628
|
Generic disassembler. Uses a set of adapters to decide which library to
|
|
634
629
|
load for which supported platform.
|
|
@@ -656,7 +651,7 @@ class Disassembler (object):
|
|
|
656
651
|
# Cache of already loaded disassemblers.
|
|
657
652
|
__decoder = {}
|
|
658
653
|
|
|
659
|
-
def __new__(cls, arch
|
|
654
|
+
def __new__(cls, arch=None, engine=None):
|
|
660
655
|
"""
|
|
661
656
|
Factory class. You can't really instance a L{Disassembler} object,
|
|
662
657
|
instead one of the adapter L{Engine} subclasses is returned.
|