Skip to content

Commit d2fcb8e

Browse files
committed
More styling and typing annotations
1 parent ecbac7f commit d2fcb8e

File tree

4 files changed

+31
-22
lines changed

4 files changed

+31
-22
lines changed

qiling/os/uefi/bs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ def hook_SetMem(ql: Qiling, address: int, params):
510510
def hook_CreateEventEx(ql: Qiling, address: int, params):
511511
return CreateEvent(ql, params)
512512

513-
def CreateEvent(ql, params):
513+
def CreateEvent(ql: Qiling, params):
514514
event_id = len(ql.loader.events)
515515
event_dic = {
516516
"NotifyFunction": params["NotifyFunction"],

qiling/os/uefi/protocols/EfiSmmAccess2Protocol.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# Cross Platform and Multi Architecture Advanced Binary Emulation Framework
44
#
55

6+
from qiling import Qiling
67
from qiling.os.const import *
78
from qiling.os.uefi.const import *
89
from ..fncc import *
@@ -37,23 +38,23 @@ class EFI_SMM_ACCESS2_PROTOCOL(STRUCT):
3738
@dxeapi(params = {
3839
"This" : POINTER
3940
})
40-
def hook_Open(ql, address, params):
41+
def hook_Open(ql: Qiling, address: int, params):
4142
ql.loader.smm_context.tseg_open = True
4243

4344
return EFI_SUCCESS
4445

4546
@dxeapi(params = {
4647
"This" : POINTER
4748
})
48-
def hook_Close(ql, address, params):
49+
def hook_Close(ql: Qiling, address: int, params):
4950
ql.loader.smm_context.tseg_open = False
5051

5152
return EFI_SUCCESS
5253

5354
@dxeapi(params = {
5455
"This" : POINTER
5556
})
56-
def hook_Lock(ql, address, params):
57+
def hook_Lock(ql: Qiling, address: int, params):
5758
ql.loader.smm_context.tseg_locked = True
5859

5960
return EFI_SUCCESS
@@ -84,7 +85,7 @@ def _coalesce(seq):
8485
"MmramMapSize" : POINTER, # IN OUT PTR(UINTN)
8586
"MmramMap" : POINTER # OUT PTR(EFI_MMRAM_DESCRIPTOR)
8687
})
87-
def hook_GetCapabilities(ql, address, params):
88+
def hook_GetCapabilities(ql: Qiling, address: int, params):
8889
heap = ql.loader.smm_context.heap
8990

9091
# get a copy of smm heap chunks list sorted by starting address

qiling/os/uefi/rt.py

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# Cross Platform and Multi Architecture Advanced Binary Emulation Framework
44
#
55

6+
from qiling import Qiling
67
from qiling.os.const import *
78
from .const import *
89
from .utils import *
@@ -14,28 +15,28 @@
1415
"Time" : POINTER, # OUT PTR(EFI_TIME)
1516
"Capabilities" : POINTER # OUT PTR(EFI_TIME_CAPABILITIES)
1617
})
17-
def hook_GetTime(ql, address, params):
18+
def hook_GetTime(ql: Qiling, address: int, params):
1819
return EFI_SUCCESS
1920

2021
@dxeapi(params={
2122
"Time": POINTER # IN PTR(EFI_TIME)
2223
})
23-
def hook_SetTime(ql, address, params):
24+
def hook_SetTime(ql: Qiling, address: int, params):
2425
return EFI_SUCCESS
2526

2627
@dxeapi(params={
2728
"Enabled" : POINTER, # OUT PTR(BOOLEAN)
2829
"Pending" : POINTER, # OUT PTR(BOOLEAN)
2930
"Time" : POINTER # OUT PTR(EFI_TIME)
3031
})
31-
def hook_GetWakeupTime(ql, address, params):
32+
def hook_GetWakeupTime(ql: Qiling, address: int, params):
3233
return EFI_SUCCESS
3334

3435
@dxeapi(params={
3536
"Enable": BOOL, # BOOLEAN
3637
"Time" : POINTER # PTR(EFI_TIME)
3738
})
38-
def hook_SetWakeupTime(ql, address, params):
39+
def hook_SetWakeupTime(ql: Qiling, address: int, params):
3940
return EFI_SUCCESS
4041

4142
@dxeapi(params={
@@ -44,14 +45,14 @@ def hook_SetWakeupTime(ql, address, params):
4445
"DescriptorVersion" : UINT, # UINT32
4546
"VirtualMap" : POINTER # PTR(EFI_MEMORY_DESCRIPTOR)
4647
})
47-
def hook_SetVirtualAddressMap(ql, address, params):
48+
def hook_SetVirtualAddressMap(ql: Qiling, address: int, params):
4849
return EFI_SUCCESS
4950

5051
@dxeapi(params={
5152
"DebugDisposition" : UINT, # UINTN
5253
"Address" : POINTER # OUT PTR(PTR(VOID))
5354
})
54-
def hook_ConvertPointer(ql, address, params):
55+
def hook_ConvertPointer(ql: Qiling, address: int, params):
5556
return EFI_SUCCESS
5657

5758
@dxeapi(params={
@@ -61,28 +62,36 @@ def hook_ConvertPointer(ql, address, params):
6162
"DataSize" : POINTER, # IN OUT PTR(UINTN)
6263
"Data" : POINTER # OUT PTR(VOID)
6364
})
64-
def hook_GetVariable(ql, address, params):
65+
def hook_GetVariable(ql: Qiling, address: int, params):
6566
name = params['VariableName']
67+
6668
if name in ql.env:
6769
var = ql.env[name]
6870
read_len = read_int64(ql, params['DataSize'])
71+
6972
if params['Attributes'] != 0:
7073
write_int64(ql, params['Attributes'], 0)
74+
7175
write_int64(ql, params['DataSize'], len(var))
76+
7277
if read_len < len(var):
7378
return EFI_BUFFER_TOO_SMALL
79+
7480
if params['Data'] != 0:
7581
ql.mem.write(params['Data'], var)
82+
7683
return EFI_SUCCESS
84+
7785
ql.log.warning(f'variable with name {name} not found')
86+
7887
return EFI_NOT_FOUND
7988

8089
@dxeapi(params={
8190
"VariableNameSize" : POINTER, # IN OUT PTR(UINTN)
8291
"VariableName" : POINTER, # IN OUT PTR(CHAR16)
8392
"VendorGuid" : GUID # IN OUT PTR(EFI_GUID)
8493
})
85-
def hook_GetNextVariableName(ql, address, params):
94+
def hook_GetNextVariableName(ql: Qiling, address: int, params):
8695
var_name_size = params["VariableNameSize"]
8796
var_name = params["VariableName"]
8897

@@ -124,14 +133,14 @@ def hook_GetNextVariableName(ql, address, params):
124133
"DataSize" : UINT, # UINTN
125134
"Data" : POINTER # PTR(VOID)
126135
})
127-
def hook_SetVariable(ql, address, params):
136+
def hook_SetVariable(ql: Qiling, address: int, params):
128137
ql.env[params['VariableName']] = bytes(ql.mem.read(params['Data'], params['DataSize']))
129138
return EFI_SUCCESS
130139

131140
@dxeapi(params={
132141
"HighCount": POINTER # OUT PTR(UINT32)
133142
})
134-
def hook_GetNextHighMonotonicCount(ql, address, params):
143+
def hook_GetNextHighMonotonicCount(ql: Qiling, address: int, params):
135144
ql.os.monotonic_count += 0x0000000100000000
136145
hmc = ql.os.monotonic_count
137146
hmc = (hmc >> 32) & 0xffffffff
@@ -144,7 +153,7 @@ def hook_GetNextHighMonotonicCount(ql, address, params):
144153
"DataSize" : UINT, # UINTN
145154
"ResetData" : POINTER # PTR(VOID)
146155
})
147-
def hook_ResetSystem(ql, address, params):
156+
def hook_ResetSystem(ql: Qiling, address: int, params):
148157
ql.emu_stop()
149158

150159
return EFI_SUCCESS
@@ -154,7 +163,7 @@ def hook_ResetSystem(ql, address, params):
154163
"CapsuleCount" : UINT, # UINTN
155164
"ScatterGatherList" : ULONGLONG # EFI_PHYSICAL_ADDRESS
156165
})
157-
def hook_UpdateCapsule(ql, address, params):
166+
def hook_UpdateCapsule(ql: Qiling, address: int, params):
158167
return EFI_SUCCESS
159168

160169
@dxeapi(params={
@@ -163,7 +172,7 @@ def hook_UpdateCapsule(ql, address, params):
163172
"MaximumCapsuleSize": POINTER, # OUT PTR(UINT64)
164173
"ResetType" : POINTER # OUT PTR(EFI_RESET_TYPE)
165174
})
166-
def hook_QueryCapsuleCapabilities(ql, address, params):
175+
def hook_QueryCapsuleCapabilities(ql: Qiling, address: int, params):
167176
return EFI_SUCCESS
168177

169178
@dxeapi(params={
@@ -172,7 +181,7 @@ def hook_QueryCapsuleCapabilities(ql, address, params):
172181
"RemainingVariableStorageSize" : POINTER, # OUT PTR(UINT64)
173182
"MaximumVariableSize" : POINTER # OUT PTR(UINT64)
174183
})
175-
def hook_QueryVariableInfo(ql, address, params):
184+
def hook_QueryVariableInfo(ql: Qiling, address: int, params):
176185
return EFI_SUCCESS
177186

178187
def initialize(ql, gRT : int):

qiling/os/uefi/st.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# Cross Platform and Multi Architecture Advanced Binary Emulation Framework
44
#
55

6+
from qiling import Qiling
67
from qiling.os.uefi import bs, rt, ds
78
from qiling.os.uefi.utils import install_configuration_table
89
from qiling.os.uefi.UefiSpec import EFI_SYSTEM_TABLE, EFI_BOOT_SERVICES, EFI_RUNTIME_SERVICES, EFI_CONFIGURATION_TABLE
@@ -46,7 +47,7 @@
4647
#
4748
# ... the remainder of the 256 KiB chunk may be used for more conf table data
4849

49-
def initialize(ql, gST : int):
50+
def initialize(ql: Qiling, gST: int):
5051
ql.loader.gST = gST
5152

5253
gBS = gST + EFI_SYSTEM_TABLE.sizeof() # boot services
@@ -90,8 +91,6 @@ def initialize(ql, gST : int):
9091
install_configuration_table(ql.loader.dxe_context, "HOB_LIST", None)
9192
install_configuration_table(ql.loader.dxe_context, "DXE_SERVICE_TABLE", gDS)
9293

93-
94-
9594
__all__ = [
9695
'initialize'
9796
]

0 commit comments

Comments
 (0)