bhyg-decomp/loader/loader.py

58 lines
1.1 KiB
Python

import importlib
import importlib.machinery
import sys
import traceback
from pathlib import Path
_BINARY_DIR = Path(__file__).parent / 'binary'
_MODULES = [
'utils',
'i18n',
'login',
'globals',
'api',
'push',
'main',
]
def load_binary():
sys.path.append(str(_BINARY_DIR))
# 先载入并 patch utils
importlib.import_module('utils')
patch_module()
importlib.import_module('main')
return sys.modules['main']
def patch_module():
# 绕过 check_policy
def check_policy():
from loguru import logger
logger.info('Bypass check_policy')
sys.modules['utils'].check_policy = check_policy
# 屏蔽 sentry
import sentry_sdk
for key in dir(sentry_sdk):
if key.startswith('init') or key.startswith('capture'):
setattr(sentry_sdk, key, lambda *args, **kwargs: None)
sentry_sdk.capture_exception = lambda *args, **kwargs: traceback.print_exc()
def run_module(module):
module.main()
def main():
module = load_binary()
run_module(module)
if __name__ == '__main__':
main()