hilda 2.0.16__py3-none-any.whl → 3.0.0__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 +9 -4
- hilda/breakpoints.py +480 -0
- hilda/hilda_client.py +78 -305
- hilda/ipython_extensions/keybindings.py +34 -11
- hilda/objective_c_class.py +2 -6
- hilda/snippets/mach/CFRunLoopServiceMachPort_hooks.py +2 -5
- hilda/snippets/macho/all_image_infos.py +7 -4
- {hilda-2.0.16.dist-info → hilda-3.0.0.dist-info}/METADATA +15 -15
- {hilda-2.0.16.dist-info → hilda-3.0.0.dist-info}/RECORD +13 -12
- {hilda-2.0.16.dist-info → hilda-3.0.0.dist-info}/WHEEL +1 -1
- {hilda-2.0.16.dist-info → hilda-3.0.0.dist-info}/LICENSE +0 -0
- {hilda-2.0.16.dist-info → hilda-3.0.0.dist-info}/entry_points.txt +0 -0
- {hilda-2.0.16.dist-info → hilda-3.0.0.dist-info}/top_level.txt +0 -0
|
@@ -22,11 +22,8 @@ def _disable_internal_error_handling() -> None:
|
|
|
22
22
|
hilda.CFRunLoopServiceMachPort_while_ea = int(hilda.file_symbol(eval(while_ea)))
|
|
23
23
|
elif instruction.GetMnemonic(hilda.target) in ('brk', 'ud2'):
|
|
24
24
|
symbol = hilda.symbol(instruction.addr.GetLoadAddress(hilda.target))
|
|
25
|
-
symbol.
|
|
26
|
-
|
|
27
|
-
forced=True,
|
|
28
|
-
name=f'__CFRunLoopServiceMachPort-brk-{int(symbol - hilda.symbols.__CFRunLoopServiceMachPort)}'
|
|
29
|
-
)
|
|
25
|
+
description = f'__CFRunLoopServiceMachPort-brk-{int(symbol - hilda.symbols.__CFRunLoopServiceMachPort)}'
|
|
26
|
+
symbol.bp(_CFRunLoopServiceMachPort_hook, guarded=True, description=description)
|
|
30
27
|
|
|
31
28
|
if hilda.arch == 'x86_64h':
|
|
32
29
|
return
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
|
|
3
|
+
import inquirer3
|
|
3
4
|
from construct import Array, CString, Hex, If, Int32ub, Int32ul, Int64ul, Pointer, Struct, Tell, this
|
|
4
|
-
from
|
|
5
|
+
from inquirer3 import List
|
|
5
6
|
|
|
6
7
|
from hilda.lldb_importer import lldb
|
|
7
8
|
from hilda.snippets.macho.image_info import ImageInfo, dyld_image_info_t
|
|
@@ -104,9 +105,11 @@ class AllImageInfos:
|
|
|
104
105
|
|
|
105
106
|
@staticmethod
|
|
106
107
|
def __select_specific_image(images):
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
image_list = [image.file_path for image in images]
|
|
109
|
+
logging.info('Multiple images were found with that prefix.\n'
|
|
110
|
+
'Please select one:\n'
|
|
111
|
+
f'{image_list}')
|
|
112
|
+
selected_image_path = inquirer3.prompt(List('selected_image_path', image_list))['selected_image_path']
|
|
110
113
|
for image in images:
|
|
111
114
|
if image.file_path == selected_image_path:
|
|
112
115
|
return image
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: hilda
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.0.0
|
|
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>
|
|
@@ -52,6 +52,7 @@ Requires-Dist: pymobiledevice3
|
|
|
52
52
|
Requires-Dist: keystone-engine
|
|
53
53
|
Requires-Dist: tabulate
|
|
54
54
|
Requires-Dist: inquirer3
|
|
55
|
+
Requires-Dist: traitlets
|
|
55
56
|
Provides-Extra: test
|
|
56
57
|
Requires-Dist: pytest; extra == "test"
|
|
57
58
|
|
|
@@ -162,7 +163,7 @@ Have a nice flight ✈️! Starting an IPython shell...
|
|
|
162
163
|
Here is a gist of methods you can access from `p`:
|
|
163
164
|
|
|
164
165
|
- `hd`
|
|
165
|
-
- Print
|
|
166
|
+
- Print a hexdump of given buffer
|
|
166
167
|
- `lsof`
|
|
167
168
|
- Get dictionary of all open FDs
|
|
168
169
|
- `bt`
|
|
@@ -209,7 +210,7 @@ Here is a gist of methods you can access from `p`:
|
|
|
209
210
|
- Simulate a call to an objc selector
|
|
210
211
|
- `call`
|
|
211
212
|
- Call function at given address with given parameters
|
|
212
|
-
- `monitor`
|
|
213
|
+
- `monitor` or `breakpoints.add_monitor`
|
|
213
214
|
- Monitor every time a given address is called
|
|
214
215
|
|
|
215
216
|
The following options are available:
|
|
@@ -254,10 +255,10 @@ Here is a gist of methods you can access from `p`:
|
|
|
254
255
|
- Step into current instruction.
|
|
255
256
|
- `step_over`
|
|
256
257
|
- Step over current instruction.
|
|
257
|
-
- `
|
|
258
|
-
- Remove all breakpoints
|
|
259
|
-
- `
|
|
260
|
-
- Remove a single breakpoint
|
|
258
|
+
- `breakpoints.clear`
|
|
259
|
+
- Remove all breakpoints
|
|
260
|
+
- `breakpoints.remove`
|
|
261
|
+
- Remove a single breakpoint
|
|
261
262
|
- `force_return`
|
|
262
263
|
- Prematurely return from a stack frame, short-circuiting exection of newer frames and optionally
|
|
263
264
|
yielding a specified value.
|
|
@@ -265,14 +266,10 @@ Here is a gist of methods you can access from `p`:
|
|
|
265
266
|
- Print information about currently running mapped process.
|
|
266
267
|
- `print_proc_entitlements`
|
|
267
268
|
- Get the plist embedded inside the process' __LINKEDIT section.
|
|
268
|
-
- `bp`
|
|
269
|
+
- `bp` or `breakpoints.add`
|
|
269
270
|
- Add a breakpoint
|
|
270
|
-
- `
|
|
271
|
-
- Show existing breakpoints
|
|
272
|
-
- `save`
|
|
273
|
-
- Save loaded symbols map (for loading later using the load() command)
|
|
274
|
-
- `load`
|
|
275
|
-
- Load an existing symbols map (previously saved by the save() command)
|
|
271
|
+
- `breakpoints.show`
|
|
272
|
+
- Show existing breakpoints
|
|
276
273
|
- `po`
|
|
277
274
|
- Print given object using LLDB's po command
|
|
278
275
|
Can also run big chunks of native code:
|
|
@@ -326,6 +323,9 @@ Sometimes accessing the [Python API](#python-api) can be tiring, so we added som
|
|
|
326
323
|
|
|
327
324
|
#### Key-bindings
|
|
328
325
|
|
|
326
|
+
- **F1**: Show banner help message
|
|
327
|
+
- **F2**: Show process state UI
|
|
328
|
+
- **F3**: Toggle stdout/stderr enablement
|
|
329
329
|
- **F7**: Step Into
|
|
330
330
|
- **F8**: Step Over
|
|
331
331
|
- **F9**: Continue
|
|
@@ -531,7 +531,7 @@ s.bp(scripted_breakpoint)
|
|
|
531
531
|
p.bp('symbol_name')
|
|
532
532
|
|
|
533
533
|
# In case you need to specify a specific library it's loaded from
|
|
534
|
-
p.bp('symbol_name',
|
|
534
|
+
p.bp(('symbol_name', 'ModuleName'))
|
|
535
535
|
```
|
|
536
536
|
|
|
537
537
|
#### Globalized symbols
|
|
@@ -3,22 +3,23 @@ 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=
|
|
6
|
+
hilda/_version.py,sha256=feOY2rjYM8_-oXmp5ErPlMe-6zWTpyiw538tUrvFyEA,511
|
|
7
|
+
hilda/breakpoints.py,sha256=ZVszQf4WtRgjM2JAn8E-b-Ve6kzVg5VwvTHv5_wGjwQ,19198
|
|
7
8
|
hilda/cli.py,sha256=PCjrI7GrERIrZCODJYmPt6eyl-nPYZviTS8fBG3oIjM,3618
|
|
8
9
|
hilda/common.py,sha256=El-ih7cvCv9PJ5OWb1jkCbh4GuaRD6gqlrFC5gyY-TE,498
|
|
9
10
|
hilda/exceptions.py,sha256=8L1OvOqns4O4ieiH4YlrMbZkk_PvuyCq4UyqFAodkF8,2042
|
|
10
11
|
hilda/hilda_ascii_art.html,sha256=-9YCjAKdGbjtdd6uoKrxkkcJq7j16r4dGka2bZ27b4o,120119
|
|
11
|
-
hilda/hilda_client.py,sha256=
|
|
12
|
+
hilda/hilda_client.py,sha256=Uqp0N91gHJFkN9vZ9NN4YLkHGDXym4JGKjn-08HUZVE,38804
|
|
12
13
|
hilda/launch_lldb.py,sha256=gU1iJmxuH7w5HV_cy1igv-JageyQn2dmqSxx8vkpY0k,8033
|
|
13
14
|
hilda/lldb_entrypoint.py,sha256=vTiClzfiTtjorlxEfIsI-W657KEGobx74qDhaZ8nPhM,1007
|
|
14
15
|
hilda/lldb_importer.py,sha256=TCGpAWwiBuyNRsbgcYawiqm35t8XQLCJwoOfEqyBeik,526
|
|
15
|
-
hilda/objective_c_class.py,sha256=
|
|
16
|
+
hilda/objective_c_class.py,sha256=AFGXFDkYUoHf_LVS6GJSyvMsIIYIviLx0PCa-f4pCT8,11561
|
|
16
17
|
hilda/objective_c_symbol.py,sha256=lIZHef5iZe3AeUsK0uIsDtFnzSM-Ad6i2wfdj9DwLUM,8269
|
|
17
18
|
hilda/registers.py,sha256=-9kk1MuKnWlJ0Z8zZ2RPV9nGRDtX1GXhCSkEvfnCktA,848
|
|
18
19
|
hilda/symbol.py,sha256=yv8s0vQ6Z0ZoROeVE4RVaW0LFCyACZnFgp0QC6j05nI,7535
|
|
19
20
|
hilda/symbols_jar.py,sha256=Vqdv6iH92P6aSfcz5XiR0FbNRqKuUu48mi-GxvPr32w,6504
|
|
20
21
|
hilda/ipython_extensions/events.py,sha256=w_4V8FoJJMarWArEE8uzb2UXk1mqfslmI7XCyVb_XuE,1976
|
|
21
|
-
hilda/ipython_extensions/keybindings.py,sha256=
|
|
22
|
+
hilda/ipython_extensions/keybindings.py,sha256=W_Cnh8lG5yVdK5x0A-4UeyBsoJBufbYl54Mqrbo8OwM,1922
|
|
22
23
|
hilda/ipython_extensions/magics.py,sha256=ULb63-OyIaWwvSfwRvEG_65ibaI2RTxeX8yPJK8pbc0,1300
|
|
23
24
|
hilda/objective_c/from_ns_to_json.m,sha256=5Ddl0UJLQXlDYwR_yjE4yZk1aOsJGxoy1oRnhZHPrTw,2847
|
|
24
25
|
hilda/objective_c/get_objectivec_class_by_module.m,sha256=DC8S8XaWsQSOJZWVWhATr98SZQobA3MmclLsBJGZTcU,704
|
|
@@ -36,10 +37,10 @@ hilda/snippets/remotepairingd.py,sha256=w7SYctpKw3B56ZP26n4Ap5_hz6VmZiUbe8CrTmZ1
|
|
|
36
37
|
hilda/snippets/syslog.py,sha256=8qhYHKTElzWifqYAwt72iQ57wf1n0F_au2Vl2L8NPOc,294
|
|
37
38
|
hilda/snippets/uuid.py,sha256=ttw-rq2Wshm7UMZXd5uYP37bi8G_ZE4XcXJbsYIgp1c,273
|
|
38
39
|
hilda/snippets/xpc.py,sha256=Z0e4b1lIScZg7fsSwGK43v363qp25fdzYcc7ajJsyhU,3960
|
|
39
|
-
hilda/snippets/mach/CFRunLoopServiceMachPort_hooks.py,sha256=
|
|
40
|
+
hilda/snippets/mach/CFRunLoopServiceMachPort_hooks.py,sha256=8e6184bcRhqSDqXyDu-jnIXDbdw-mnP15J4MgNBKyg4,4202
|
|
40
41
|
hilda/snippets/mach/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
42
|
hilda/snippets/macho/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
|
-
hilda/snippets/macho/all_image_infos.py,sha256=
|
|
43
|
+
hilda/snippets/macho/all_image_infos.py,sha256=dwuf4vhewP1EvtcCa65IIVqWyDeFYxoBcqygpWK2INw,4866
|
|
43
44
|
hilda/snippets/macho/apple_version.py,sha256=TTaqZKMviXJoU1o3OYeUskmxSkhVhh3UG1VbdJ6N-LE,148
|
|
44
45
|
hilda/snippets/macho/image_info.py,sha256=Onu6u61TwFOwAfENpZIQA9N-Ba3b_M0gr8r6THNdIR4,1605
|
|
45
46
|
hilda/snippets/macho/macho.py,sha256=X4NQZkO7VCcIMNuPs25ukiBrHM5Kj3UPMJzzeILfuyg,839
|
|
@@ -47,9 +48,9 @@ hilda/snippets/macho/macho_load_commands.py,sha256=vUWfFM2H6o8dMglXV7rHgh-EMTzS0
|
|
|
47
48
|
hilda/ui/colors.json,sha256=f-ITquY3IInQreviTy23JfmxfJrGM1_MivACf1GKGqM,262
|
|
48
49
|
hilda/ui/ui_manager.py,sha256=BmzI1sBx0PYCQDlB9Al7wsTEAMJxaJ7NW0DS4C7g5-0,2265
|
|
49
50
|
hilda/ui/views.py,sha256=bzClOgKirKYs6nhsNRXpkGNIg3oIOmFb659GLWrlTdo,7792
|
|
50
|
-
hilda-
|
|
51
|
-
hilda-
|
|
52
|
-
hilda-
|
|
53
|
-
hilda-
|
|
54
|
-
hilda-
|
|
55
|
-
hilda-
|
|
51
|
+
hilda-3.0.0.dist-info/LICENSE,sha256=M-LVJ0AFAYB82eueyl8brh-QLPe-iLNVgbCi79-3TDo,1078
|
|
52
|
+
hilda-3.0.0.dist-info/METADATA,sha256=y0HMi2hFA-E3hr-kQL_5SBYqTxQdQBwvMLXUiSxklpo,23354
|
|
53
|
+
hilda-3.0.0.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
|
54
|
+
hilda-3.0.0.dist-info/entry_points.txt,sha256=9n3O3j6V3XnVR_GcFqCWNgRAbalfukTSW2WvghsLVmA,46
|
|
55
|
+
hilda-3.0.0.dist-info/top_level.txt,sha256=TVD7l1WkE1noT866YqPFhiQnjYCYZM5Xz54v_3EYpnI,11
|
|
56
|
+
hilda-3.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|