MCPcopy Create free account
hub / github.com/qilingframework/qiling / hook__sflt_register

Function hook__sflt_register

qiling/os/macos/kernel_api/kernel_api.py:1108–1191  ·  view source on GitHub ↗
(ql, address, params)

Source from the content-addressed store, hash-verified

1106 "protocol": INT
1107})
1108def hook__sflt_register(ql, address, params):
1109 sf = sflt_filter_t(ql, params["filter"])
1110 sf = sf.loadFromMem()
1111 true_name = str(sf.sf_handle).encode()
1112 true_name += b"_" + ql.mem.string(sf.sf_name.value).encode()
1113 true_name += b"_" + str(params["domain"]).encode()
1114 true_name += b"_" + str(params["type"]).encode()
1115 true_name += b"_" + str(params["protocol"]).encode()
1116 flag = 0
1117
1118 if sf.sf_unregistered != 0:
1119 flag |= 1 << 0
1120 ql.os.ev_manager.register(sf.sf_unregistered.value, true_name, MacOSEventType.EV_SFLT_UNREGISTERED, protocol=params["protocol"])
1121 if sf.sf_attach != 0:
1122 flag |= 1 << 1
1123 ql.os.ev_manager.register(sf.sf_attach.value, true_name, MacOSEventType.EV_SFLT_ATTACH, protocol=params["protocol"])
1124 if sf.sf_detach != 0:
1125 flag |= 1 << 2
1126 ql.os.ev_manager.register(sf.sf_detach.value, true_name, MacOSEventType.EV_SFLT_DETACH, protocol=params["protocol"])
1127 if sf.sf_notify != 0:
1128 flag |= 1 << 3
1129 ql.os.ev_manager.register(sf.sf_notify.value, true_name, MacOSEventType.EV_SFLT_NOTIFY_CONNECTING, protocol=params["protocol"])
1130 ql.os.ev_manager.register(sf.sf_notify.value, true_name, MacOSEventType.EV_SFLT_NOTIFY_CONNECTED, protocol=params["protocol"])
1131 ql.os.ev_manager.register(sf.sf_notify.value, true_name, MacOSEventType.EV_SFLT_NOTIFY_DISCONNECTING, protocol=params["protocol"])
1132 ql.os.ev_manager.register(sf.sf_notify.value, true_name, MacOSEventType.EV_SFLT_NOTIFY_DISCONNECTED, protocol=params["protocol"])
1133 ql.os.ev_manager.register(sf.sf_notify.value, true_name, MacOSEventType.EV_SFLT_NOTIFY_FLUSH_READ, protocol=params["protocol"])
1134 ql.os.ev_manager.register(sf.sf_notify.value, true_name, MacOSEventType.EV_SFLT_NOTIFY_SHUTDOWN, protocol=params["protocol"])
1135 ql.os.ev_manager.register(sf.sf_notify.value, true_name, MacOSEventType.EV_SFLT_NOTIFY_CANTRECVMORE, protocol=params["protocol"])
1136 ql.os.ev_manager.register(sf.sf_notify.value, true_name, MacOSEventType.EV_SFLT_NOTIFY_CANTSENDMORE, protocol=params["protocol"])
1137 ql.os.ev_manager.register(sf.sf_notify.value, true_name, MacOSEventType.EV_SFLT_NOTIFY_CLOSING, protocol=params["protocol"])
1138 ql.os.ev_manager.register(sf.sf_notify.value, true_name, MacOSEventType.EV_SFLT_NOTIFY_BOUND, protocol=params["protocol"])
1139 if sf.sf_getpeername != 0:
1140 flag |= 1 << 4
1141 ql.os.ev_manager.register(sf.sf_getpeername.value, true_name, MacOSEventType.EV_SFLT_GETPEERNAME, protocol=params["protocol"])
1142 if sf.sf_getsockname != 0:
1143 flag |= 1 << 5
1144 ql.os.ev_manager.register(sf.sf_getsockname.value, true_name, MacOSEventType.EV_SFLT_GETSOCKNAME, protocol=params["protocol"])
1145 if sf.sf_data_in != 0:
1146 flag |= 1 << 6
1147 ql.os.ev_manager.register(sf.sf_data_in.value, true_name, MacOSEventType.EV_SFLT_DATA_IN, protocol=params["protocol"])
1148 if sf.sf_data_out != 0:
1149 flag |= 1 << 7
1150 ql.os.ev_manager.register(sf.sf_data_out.value, true_name, MacOSEventType.EV_SFLT_DATA_OUT, protocol=params["protocol"])
1151 if sf.sf_connect_in != 0:
1152 flag |= 1 << 8
1153 ql.os.ev_manager.register(sf.sf_connect_in.value, true_name, MacOSEventType.EV_SFLT_CONNECT_IN, protocol=params["protocol"])
1154 if sf.sf_connect_out != 0:
1155 flag |= 1 << 9
1156 ql.os.ev_manager.register(sf.sf_connect_out.value, true_name, MacOSEventType.EV_SFLT_CONNECT_OUT, protocol=params["protocol"])
1157 if sf.sf_bind != 0:
1158 flag |= 1 << 10
1159 ql.os.ev_manager.register(sf.sf_bind.value, true_name, MacOSEventType.EV_SFLT_BIND, protocol=params["protocol"])
1160 if sf.sf_setoption != 0:
1161 flag |= 1 << 11
1162 ql.os.ev_manager.register(sf.sf_setoption.value, true_name, MacOSEventType.EV_SFLT_SETOPTION, protocol=params["protocol"])
1163 if sf.sf_getoption != 0:
1164 flag |= 1 << 12
1165 ql.os.ev_manager.register(sf.sf_getoption.value, true_name, MacOSEventType.EV_SFLT_GETOPTION, protocol=params["protocol"])

Callers

nothing calls this directly

Calls 4

sflt_filter_tClass · 0.85
stringMethod · 0.80
registerMethod · 0.80
loadFromMemMethod · 0.45

Tested by

no test coverage detected