hilda 2.0.6__py3-none-any.whl → 2.0.7__py3-none-any.whl

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.
hilda/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '2.0.6'
16
- __version_tuple__ = version_tuple = (2, 0, 6)
15
+ __version__ = version = '2.0.7'
16
+ __version_tuple__ = version_tuple = (2, 0, 7)
hilda/hilda_client.py CHANGED
@@ -511,7 +511,8 @@ class HildaClient:
511
511
  :param dict options: User defined options.
512
512
  """
513
513
  bp = bp_loc.GetBreakpoint()
514
- symbol = hilda.breakpoints[bp.id].address # type: Symbol
514
+
515
+ symbol = hilda.symbol(hilda.frame.addr.GetLoadAddress(hilda.target)) # type: Symbol
515
516
 
516
517
  # by default, attempt to resolve the symbol name through lldb
517
518
  name = str(symbol.lldb_symbol)
@@ -1043,6 +1044,24 @@ class HildaClient:
1043
1044
 
1044
1045
  return value
1045
1046
 
1047
+ def wait_for_module(self, expression: str) -> None:
1048
+ """ Wait for a module to be loaded using `dlopen` by matching given expression """
1049
+ self.log_info(f'Waiting for module name containing "{expression}" to be loaded')
1050
+
1051
+ def bp(client: HildaClient, frame, bp_loc, options) -> None:
1052
+ loading_module_name = client.evaluate_expression('$arg1').peek_str()
1053
+ client.log_info(f'Loading module: {loading_module_name}')
1054
+ if expression not in loading_module_name:
1055
+ client.cont()
1056
+ return
1057
+ client.finish()
1058
+ client.log_info(f'Desired module has been loaded: {expression}. Process remains stopped')
1059
+ bp = bp_loc.GetBreakpoint()
1060
+ client.remove_hilda_breakpoint(bp.id)
1061
+
1062
+ self.bp('dlopen', bp)
1063
+ self.cont()
1064
+
1046
1065
  def interact(self, additional_namespace: Optional[typing.Mapping] = None,
1047
1066
  startup_files: Optional[List[str]] = None) -> None:
1048
1067
  """ Start an interactive Hilda shell """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hilda
3
- Version: 2.0.6
3
+ Version: 2.0.7
4
4
  Summary: LLDB wrapped and empowered by iPython's features
5
5
  Author-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>, netanel cohen <netanelc305@protonmail.com>
6
6
  Maintainer-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>, netanel cohen <netanelc305@protonmail.com>
@@ -305,6 +305,8 @@ Here is a gist of methods you can access from `p`:
305
305
  - sets the currently selected thread, which is used in other parts of the program, such as displaying disassembly or
306
306
  checking registers.
307
307
  This ensures the application focuses on the specified thread for these operations.
308
+ - `wait_for_module`
309
+ - Wait for a module to be loaded (`dlopen`) by checking if given expression is contained within its filename
308
310
 
309
311
  All these methods are available from the global `p` within the newly created IPython shell. In addition, you may invoke any of the exported APIs described in the [Python API](#python-api)
310
312
 
@@ -3,12 +3,12 @@ gifs/ui.png,sha256=iaRwNZ9qVWUkUe2TJb_6VPsTu--7HrElA2duWiyZ-Oc,131
3
3
  gifs/xpc_print_message.gif,sha256=i5S8Y9bJm9n-NtOipFTAC8_jUR4uZCM4sOap_ccJX0k,939935
4
4
  hilda/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  hilda/__main__.py,sha256=KWRqvukK4wraxCMtvH5nO25mFXLO5aWXa7z_VfAtbO8,90
6
- hilda/_version.py,sha256=Wi5IhMJyXnsHrRVvntjgN_4VraEDKfzB4n5JLjtc1xM,411
6
+ hilda/_version.py,sha256=XF5cViFsh9DDqYgZRLDN3oAuRKMj1sXUbBqJ4rzLL7E,411
7
7
  hilda/cli.py,sha256=FQtOg1iFRtNdVVes_SchIoidOWAENhsLItwXBWCgWgc,3625
8
8
  hilda/common.py,sha256=VFtpOH9IRqbu6lONM6Hz-PxcdJfktgS3akJv5UCHO0s,523
9
9
  hilda/exceptions.py,sha256=8L1OvOqns4O4ieiH4YlrMbZkk_PvuyCq4UyqFAodkF8,2042
10
10
  hilda/hilda_ascii_art.html,sha256=-9YCjAKdGbjtdd6uoKrxkkcJq7j16r4dGka2bZ27b4o,120119
11
- hilda/hilda_client.py,sha256=UHCUQJclIS2qk81Jk1leDxdTwTuojA-sM9JaANfp120,45357
11
+ hilda/hilda_client.py,sha256=iDFOzjqdenTvD1qI98kn93_xT6nn9Tp3yC0TnNDh6Bg,46221
12
12
  hilda/launch_lldb.py,sha256=sD-02HERIFQEYoPM9JrRfFOTjHE2QUt3L0pNgFsyAEQ,7186
13
13
  hilda/lldb_entrypoint.py,sha256=vTiClzfiTtjorlxEfIsI-W657KEGobx74qDhaZ8nPhM,1007
14
14
  hilda/lldb_importer.py,sha256=LrIQnigDG3wgmIPXya67oBlWubkDgV-rEpzfWNEYCoc,553
@@ -46,9 +46,9 @@ hilda/snippets/macho/macho_load_commands.py,sha256=OsajG2xWuRwhYhj9f-lnUiNe43Yum
46
46
  hilda/ui/colors.json,sha256=f-ITquY3IInQreviTy23JfmxfJrGM1_MivACf1GKGqM,262
47
47
  hilda/ui/ui_manager.py,sha256=BmzI1sBx0PYCQDlB9Al7wsTEAMJxaJ7NW0DS4C7g5-0,2265
48
48
  hilda/ui/views.py,sha256=1u_eZzw7wAEP1bm_-9nkqgGhMSX__woiUuoBgnsAKVM,7843
49
- hilda-2.0.6.dist-info/LICENSE,sha256=M-LVJ0AFAYB82eueyl8brh-QLPe-iLNVgbCi79-3TDo,1078
50
- hilda-2.0.6.dist-info/METADATA,sha256=XIDvGGF2f4yl3WjF43Gxy3ugdEHua_loRX14W7tFX_0,23306
51
- hilda-2.0.6.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
52
- hilda-2.0.6.dist-info/entry_points.txt,sha256=9n3O3j6V3XnVR_GcFqCWNgRAbalfukTSW2WvghsLVmA,46
53
- hilda-2.0.6.dist-info/top_level.txt,sha256=TVD7l1WkE1noT866YqPFhiQnjYCYZM5Xz54v_3EYpnI,11
54
- hilda-2.0.6.dist-info/RECORD,,
49
+ hilda-2.0.7.dist-info/LICENSE,sha256=M-LVJ0AFAYB82eueyl8brh-QLPe-iLNVgbCi79-3TDo,1078
50
+ hilda-2.0.7.dist-info/METADATA,sha256=bWBcBXGtsujCQQ7dhgRsssUKF54NAnfKjt9cyvRFNuk,23437
51
+ hilda-2.0.7.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
52
+ hilda-2.0.7.dist-info/entry_points.txt,sha256=9n3O3j6V3XnVR_GcFqCWNgRAbalfukTSW2WvghsLVmA,46
53
+ hilda-2.0.7.dist-info/top_level.txt,sha256=TVD7l1WkE1noT866YqPFhiQnjYCYZM5Xz54v_3EYpnI,11
54
+ hilda-2.0.7.dist-info/RECORD,,
File without changes
File without changes