mirror of
https://github.com/dobin/SuperMega
synced 2026-06-02 17:27:10 +00:00
refactor: rename AsmParser -> AsmTextParser
This commit is contained in:
@@ -5,10 +5,10 @@ from helper import *
|
|||||||
from model.carrier import Carrier, DataReuseEntry, IatRequest
|
from model.carrier import Carrier, DataReuseEntry, IatRequest
|
||||||
from model.settings import Settings
|
from model.settings import Settings
|
||||||
|
|
||||||
logger = logging.getLogger("AsmParser")
|
logger = logging.getLogger("AsmTextParser")
|
||||||
|
|
||||||
|
|
||||||
def parse_asm_file(carrier: Carrier, asm_text: str, settings: Settings) -> List[str]:
|
def parse_asm_text_file(carrier: Carrier, asm_text: str, settings: Settings) -> List[str]:
|
||||||
lines_out = []
|
lines_out = []
|
||||||
lines = asm_text.split("\n")
|
lines = asm_text.split("\n")
|
||||||
|
|
||||||
+3
-3
@@ -10,7 +10,7 @@ from observer import observer
|
|||||||
from model import *
|
from model import *
|
||||||
from phases.masmshc import masm_shc, Params
|
from phases.masmshc import masm_shc, Params
|
||||||
from model.carrier import Carrier
|
from model.carrier import Carrier
|
||||||
from phases.asmparser import parse_asm_file
|
from phases.asmtextparser import parse_asm_text_file
|
||||||
from model.settings import Settings
|
from model.settings import Settings
|
||||||
|
|
||||||
logger = logging.getLogger("Compiler")
|
logger = logging.getLogger("Compiler")
|
||||||
@@ -40,7 +40,7 @@ def compile_dev(
|
|||||||
observer.add_text_file("carrier_asm_orig", asm_text)
|
observer.add_text_file("carrier_asm_orig", asm_text)
|
||||||
|
|
||||||
logger.info("---[ ASM masm_shc: {} ".format(asm_out))
|
logger.info("---[ ASM masm_shc: {} ".format(asm_out))
|
||||||
asm_text_lines: List[str] = parse_asm_file(Carrier(), asm_text)
|
asm_text_lines: List[str] = parse_asm_text_file(Carrier(), asm_text)
|
||||||
asm_text = masm_shc(asm_text_lines)
|
asm_text = masm_shc(asm_text_lines)
|
||||||
observer.add_text_file("carrier_asm_cleanup", asm_text)
|
observer.add_text_file("carrier_asm_cleanup", asm_text)
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ def compile(
|
|||||||
asm_text = file_readall_text(asm_out)
|
asm_text = file_readall_text(asm_out)
|
||||||
observer.add_text_file("carrier_asm_orig", asm_text)
|
observer.add_text_file("carrier_asm_orig", asm_text)
|
||||||
|
|
||||||
asm_text_lines = parse_asm_file(carrier, asm_text, settings) # Fixup assembly file
|
asm_text_lines = parse_asm_text_file(carrier, asm_text, settings) # Fixup assembly file
|
||||||
asm_text = masm_shc(asm_text_lines) # Cleanup assembly file
|
asm_text = masm_shc(asm_text_lines) # Cleanup assembly file
|
||||||
observer.add_text_file("carrier_asm_final", asm_text)
|
observer.add_text_file("carrier_asm_final", asm_text)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -151,7 +151,7 @@ def start_real(settings: Settings):
|
|||||||
phases.templater.create_c_from_template(settings, project.payload.len)
|
phases.templater.create_c_from_template(settings, project.payload.len)
|
||||||
|
|
||||||
# If we put the payload into .rdata
|
# If we put the payload into .rdata
|
||||||
# PREPARE DataReuseEntry for usage in Compiler/AsmParser
|
# PREPARE DataReuseEntry for usage in Compiler/AsmTextParser
|
||||||
if settings.payload_location == PayloadLocation.DATA:
|
if settings.payload_location == PayloadLocation.DATA:
|
||||||
logger.info("--[ Load payload for use in .rdata injection")
|
logger.info("--[ Load payload for use in .rdata injection")
|
||||||
project.carrier.add_datareuse_fixup(DataReuseEntry("supermega_payload"))
|
project.carrier.add_datareuse_fixup(DataReuseEntry("supermega_payload"))
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from model.defs import *
|
|||||||
from model.carrier import Carrier
|
from model.carrier import Carrier
|
||||||
from observer import observer
|
from observer import observer
|
||||||
from helper import *
|
from helper import *
|
||||||
from phases.asmparser import parse_asm_file
|
from phases.asmtextparser import parse_asm_text_file
|
||||||
from phases.masmshc import masm_shc
|
from phases.masmshc import masm_shc
|
||||||
|
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ class AsmTest(unittest.TestCase):
|
|||||||
asm_in: FilePath = "tests/data/peb_walk_pre_fixup.asm"
|
asm_in: FilePath = "tests/data/peb_walk_pre_fixup.asm"
|
||||||
asm_text = file_readall_text(asm_in)
|
asm_text = file_readall_text(asm_in)
|
||||||
carrier = Carrier("fake.exe")
|
carrier = Carrier("fake.exe")
|
||||||
asm_text_lines = parse_asm_file(carrier, asm_text)
|
asm_text_lines = parse_asm_text_file(carrier, asm_text)
|
||||||
|
|
||||||
# cmp DWORD PTR n$1[rsp], 11223344 ; 00ab4130H
|
# cmp DWORD PTR n$1[rsp], 11223344 ; 00ab4130H
|
||||||
# cmp DWORD PTR n$1[rsp], 272 ; 00ab4130H
|
# cmp DWORD PTR n$1[rsp], 272 ; 00ab4130H
|
||||||
@@ -45,7 +45,7 @@ class AsmTest(unittest.TestCase):
|
|||||||
asm_in: FilePath = "tests/data/iat_reuse_pre_fixup.asm"
|
asm_in: FilePath = "tests/data/iat_reuse_pre_fixup.asm"
|
||||||
asm_text = file_readall_text(asm_in)
|
asm_text = file_readall_text(asm_in)
|
||||||
carrier = Carrier("fake.exe")
|
carrier = Carrier("fake.exe")
|
||||||
asm_text_lines = parse_asm_file(carrier, asm_text)
|
asm_text_lines = parse_asm_text_file(carrier, asm_text)
|
||||||
|
|
||||||
self.assertEqual(len(carrier.iat_requests), 2)
|
self.assertEqual(len(carrier.iat_requests), 2)
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ class AsmTest(unittest.TestCase):
|
|||||||
asm_in = "tests/data/data_reuse_pre_fixup.asm"
|
asm_in = "tests/data/data_reuse_pre_fixup.asm"
|
||||||
asm_text = file_readall_text(asm_in)
|
asm_text = file_readall_text(asm_in)
|
||||||
carrier = Carrier("fake.exe")
|
carrier = Carrier("fake.exe")
|
||||||
asm_text_lines = parse_asm_file(carrier, asm_text)
|
asm_text_lines = parse_asm_text_file(carrier, asm_text)
|
||||||
asm_text = masm_shc(asm_text_lines) # optional here
|
asm_text = masm_shc(asm_text_lines) # optional here
|
||||||
|
|
||||||
data_reuse_entries = carrier.get_all_reusedata_fixups()
|
data_reuse_entries = carrier.get_all_reusedata_fixups()
|
||||||
@@ -96,7 +96,7 @@ class AsmTest(unittest.TestCase):
|
|||||||
asm_text = file_readall_text(asm_in)
|
asm_text = file_readall_text(asm_in)
|
||||||
|
|
||||||
carrier = Carrier("fake.exe")
|
carrier = Carrier("fake.exe")
|
||||||
asm_text_lines = parse_asm_file(carrier, asm_text)
|
asm_text_lines = parse_asm_text_file(carrier, asm_text)
|
||||||
|
|
||||||
self.assertTrue("\tDB " in asm_text_lines[108-1])
|
self.assertTrue("\tDB " in asm_text_lines[108-1])
|
||||||
self.assertFalse("OFFSET FLAT:$SG" in asm_text_lines[108-1])
|
self.assertFalse("OFFSET FLAT:$SG" in asm_text_lines[108-1])
|
||||||
|
|||||||
Reference in New Issue
Block a user