mirror of
https://github.com/dobin/SuperMega
synced 2026-06-02 17:27:10 +00:00
refactor: remove source_style enum, do it with directories
This commit is contained in:
+6
-2
@@ -2,12 +2,15 @@ import pickle
|
||||
import os
|
||||
import yaml
|
||||
import pickle
|
||||
import logging
|
||||
|
||||
from typing import List, Tuple
|
||||
from model.defs import *
|
||||
from model.project import WebProject
|
||||
|
||||
|
||||
logger = logging.getLogger("Storage")
|
||||
|
||||
class Storage():
|
||||
def __init__(self):
|
||||
pass
|
||||
@@ -19,19 +22,20 @@ class Storage():
|
||||
project = self.get_project(project_name)
|
||||
if project is None:
|
||||
continue
|
||||
project.settings.prep_web(project_name)
|
||||
project.settings.prep_web()
|
||||
projects.append(project)
|
||||
return projects
|
||||
|
||||
|
||||
def get_project(self, project_name: str) -> WebProject:
|
||||
logger.debug("Load project: {}".format(project_name))
|
||||
path = "{}/{}".format(PATH_WEB_PROJECT, project_name)
|
||||
json_path = "{}/project.pickle".format(path)
|
||||
if not os.path.exists(json_path):
|
||||
return None
|
||||
with open(json_path, "rb") as f:
|
||||
project = pickle.load(f)
|
||||
project.settings.prep_web(project_name)
|
||||
project.settings.prep_web()
|
||||
return project
|
||||
|
||||
|
||||
|
||||
@@ -112,11 +112,11 @@
|
||||
|
||||
<!-- Row 4: leet settings -->
|
||||
<div class="col-2">
|
||||
<select class="form-select" name="source_style" aria-label="SOURCESTYLE" onchange="this.form.submit()">
|
||||
{% for name, value in function_invoke_styles %}
|
||||
<select class="form-select" name="carrier_name" aria-label="CARRIERNAME" onchange="this.form.submit()">
|
||||
{% for name in carrier_names %}
|
||||
<option value="{{name}}"
|
||||
{% if name in project.settings.source_style.value %} selected {% endif %}
|
||||
>{{value}}</option>
|
||||
{% if name in project.settings.carrier_name %} selected {% endif %}
|
||||
>{{name}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ from supermega import start
|
||||
from app.storage import storage, WebProject
|
||||
from sender import scannerDetectsBytes
|
||||
from phases.injector import verify_injected_exe
|
||||
from phases.templater import get_template_names
|
||||
from helper import run_process_checkret, run_exe
|
||||
from model.project import prepare_project
|
||||
from pe.superpe import SuperPe
|
||||
@@ -90,13 +91,13 @@ def project(name):
|
||||
superpe.get_rdata_relocmanager().find_largest_gap()
|
||||
unresolved_dlls = pe.dllresolver.unresolved_dlls(superpe)
|
||||
|
||||
project_dir = os.path.dirname(os.path.abspath(project.settings.inject_exe_out))
|
||||
project_dir = os.path.dirname(os.getcwd() + "\\" + project.settings.main_dir)
|
||||
log_files = get_logfiles(project.settings.main_dir)
|
||||
exes = list_files_and_sizes(PATH_EXES, prepend=PATH_EXES)
|
||||
exes += list_files_and_sizes(PATH_EXES_MORE, prepend=PATH_EXES_MORE)
|
||||
shellcodes = list_files_and_sizes(PATH_SHELLCODES)
|
||||
|
||||
function_invoke_styles = [(color.name, color.value) for color in FunctionInvokeStyle]
|
||||
carrier_names = get_template_names()
|
||||
decoderstyles = [(color.name, color.value) for color in DecoderStyle]
|
||||
carrier_invoke_styles = [(color.name, color.value) for color in CarrierInvokeStyle]
|
||||
payload_locations = [(color.name, color.value) for color in PayloadLocation]
|
||||
@@ -109,7 +110,7 @@ def project(name):
|
||||
|
||||
exes=exes,
|
||||
shellcodes=shellcodes,
|
||||
function_invoke_styles=function_invoke_styles,
|
||||
carrier_names=carrier_names,
|
||||
decoderstyles=decoderstyles,
|
||||
carrier_invoke_styles=carrier_invoke_styles,
|
||||
payload_locations=payload_locations,
|
||||
@@ -147,9 +148,9 @@ def list_files_and_sizes(directory, prepend=""):
|
||||
@views_project.route("/project_add", methods=['POST', 'GET'])
|
||||
def add_project():
|
||||
if request.method == 'POST':
|
||||
settings = Settings()
|
||||
|
||||
project_name = request.form['project_name']
|
||||
|
||||
settings = Settings(project_name)
|
||||
comment = request.form['comment']
|
||||
|
||||
# new project?
|
||||
@@ -176,8 +177,8 @@ def add_project():
|
||||
|
||||
settings.fix_missing_iat = True if request.form.get('fix_missing_iat') != None else False
|
||||
|
||||
source_style = request.form['source_style']
|
||||
settings.source_style = FunctionInvokeStyle[source_style]
|
||||
carrier_name = request.form['carrier_name']
|
||||
settings.carrier_name = carrier_name
|
||||
|
||||
carrier_invoke_style = request.form['carrier_invoke_style']
|
||||
settings.carrier_invoke_style = CarrierInvokeStyle[carrier_invoke_style]
|
||||
|
||||
Reference in New Issue
Block a user