MCPcopy Create free account
hub / github.com/cinit/TMoe / DynamicHookInit

Class DynamicHookInit

app/src/main/java/cc/ioctl/tmoe/base/DynamicHookInit.java:16–92  ·  view source on GitHub ↗

@author cinit

Source from the content-addressed store, hash-verified

14 * @author cinit
15 */
16public class DynamicHookInit {
17
18 public static void loadHooks() {
19 initializeCoreHooks();
20 initializeFunctionHooks();
21 }
22
23 private static void initializeCoreHooks() {
24 Initializable[] coreHooks = new Initializable[]{
25 InvalidationHook.INSTANCE,
26 ProfileActivityRowHook.INSTANCE,
27 SettingEntryHook.INSTANCE,
28 HideUserAvatar.INSTANCE
29 };
30 for (Initializable hook : coreHooks) {
31 try {
32 if (!hook.initialize()) {
33 Utils.loge("initialize failed: " + hook.getClass().getName());
34 }
35 } catch (Exception | LinkageError e) {
36 Utils.loge(e);
37 }
38 }
39 }
40
41 private static DynamicHook[] sAllFunctionHooks = null;
42
43 public static DynamicHook[] queryAllFunctionHooks() {
44 if (sAllFunctionHooks == null) {
45 sAllFunctionHooks = cc.ioctl.tmoe.gen.AnnotatedFunctionHookEntryList.getAnnotatedFunctionHookEntryList();
46 }
47 return sAllFunctionHooks;
48 }
49
50 private static void initializeFunctionHooks() {
51 DynamicHook[] hooks = queryAllFunctionHooks();
52 for (DynamicHook hook : hooks) {
53 try {
54 if (hook.isAvailable() && hook.isEnabledByUser()
55 && !hook.isPreparationRequired() && !hook.isInitialized()) {
56 // initialize hook
57 if (!hook.initialize()) {
58 Utils.logw("initialize failed: " + hook.getClass().getName());
59 List<Throwable> errors = hook.getErrors();
60 if (errors != null && !errors.isEmpty()) {
61 for (Throwable error : errors) {
62 Utils.loge(error);
63 }
64 }
65 }
66 }
67 } catch (Exception | LinkageError e) {
68 Utils.loge(e);
69 }
70 }
71 }
72
73 public static void allowEarlyInit(DynamicHook hook) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected