Skip to content

Commit 70255af

Browse files
committed
Have blob loader contain an image
1 parent 43b8b3c commit 70255af

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

qiling/loader/blob.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
#
55

66
from qiling import Qiling
7-
from qiling.loader.loader import QlLoader
7+
from qiling.loader.loader import QlLoader, Image
88
from qiling.os.memory import QlMemoryHeap
99

10+
1011
class QlLoaderBLOB(QlLoader):
1112
def __init__(self, ql: Qiling):
1213
super().__init__(ql)
@@ -16,13 +17,19 @@ def __init__(self, ql: Qiling):
1617
def run(self):
1718
self.load_address = self.ql.os.entry_point # for consistency
1819

19-
self.ql.mem.map(self.ql.os.entry_point, self.ql.os.code_ram_size, info="[code]")
20-
self.ql.mem.write(self.ql.os.entry_point, self.ql.code)
20+
code_begins = self.load_address
21+
code_size = self.ql.os.code_ram_size
22+
code_ends = code_begins + code_size
2123

22-
heap_address = self.ql.os.entry_point + self.ql.os.code_ram_size
23-
heap_size = int(self.ql.os.profile.get("CODE", "heap_size"), 16)
24-
self.ql.os.heap = QlMemoryHeap(self.ql, heap_address, heap_address + heap_size)
24+
self.ql.mem.map(code_begins, code_size, info="[code]")
25+
self.ql.mem.write(code_begins, self.ql.code)
2526

26-
self.ql.arch.regs.arch_sp = heap_address - 0x1000
27+
# allow image-related functionalities
28+
self.images.append(Image(code_begins, code_ends, 'blob_code'))
29+
30+
# FIXME: heap starts above end of ram??
31+
heap_base = code_ends
32+
heap_size = int(self.ql.os.profile.get("CODE", "heap_size"), 16)
33+
self.ql.os.heap = QlMemoryHeap(self.ql, heap_base, heap_base + heap_size)
2734

28-
return
35+
self.ql.arch.regs.arch_sp = code_ends - 0x1000

0 commit comments

Comments
 (0)