mirror of
https://github.com/dobin/SuperMega
synced 2026-06-03 01:27:11 +00:00
45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
from typing import Dict, List
|
|
import logging
|
|
|
|
|
|
logger = logging.getLogger("Carrier")
|
|
|
|
|
|
class IatRequest():
|
|
def __init__(self, name: str, placeholder: bytes):
|
|
self.name: str = name # Function Name, like "VirtualAlloc"
|
|
self.placeholder: bytes = placeholder # Random bytes as placeholder
|
|
|
|
|
|
class DataReuseEntry():
|
|
def __init__(self, string_ref: str, register: str, randbytes: bytes):
|
|
self.string_ref = string_ref
|
|
self.register = register
|
|
self.randbytes = randbytes
|
|
self.data = b''
|
|
self.addr = 0
|
|
|
|
|
|
class Carrier():
|
|
def __init__(self):
|
|
self.iat_requests: List[IatRequest] = []
|
|
self.reusedata_fixups: List[DataReuseEntry] = []
|
|
|
|
|
|
def init(self):
|
|
pass
|
|
|
|
|
|
def add_iat_request(self, func_name: str, placeholder: bytes):
|
|
self.iat_requests.append(IatRequest(func_name, placeholder))
|
|
|
|
def get_all_iat_requests(self) -> List[IatRequest]:
|
|
return self.iat_requests
|
|
|
|
|
|
def set_datareuse_fixups(self, fixups: List[DataReuseEntry]):
|
|
self.reusedata_fixups = fixups
|
|
|
|
def get_all_reusedata_fixups(self) -> List[DataReuseEntry]:
|
|
return self.reusedata_fixups
|