Ich weiß nicht, was dieses Problem verursacht. Kann mir jemand sagen, ob es eine Lösung dafür gibt oder nicht? Oder was könnte ein besserer Ansatz für die Implementierung sein?
Der Fehler-Traceback
Code: Select all
Traceback (most recent call last):
File "f:\Studies\University\FYP\DARTS-Final\Qiling\emulator.py", line 24, in save_json
with open(json_out, "w") as f:
PermissionError: [Errno 13] Permission denied: 'F:/Studies/University/FYP/DARTS-Final/Qiling/jsons'
[!] Error writing JSON output: [Errno 13] Permission denied: 'F:/Studies/University/FYP/DARTS-Final/Qiling/jsons'
Code: Select all
import sys, json
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QTextEdit
from PyQt5.QtCore import QThread, pyqtSignal
from qiling import Qiling
class QilingWorker(QThread):
log_signal = pyqtSignal(str)
def __init__(self, target_path, rootfs):
super().__init__()
self.target_path = target_path
self.rootfs = rootfs
def run(self):
try:
self.log_signal.emit("Starting Qiling emulation...\n")
# Example Qiling run (safe placeholder)
ql = Qiling([self.target_path], self.rootfs)
# Execute until finish
ql.run()
self.log_signal.emit("\nEmulation finished.")
except Exception as e:
self.log_signal.emit(f"[Error] {str(e)}")
with open('dummy.json', 'w') as f:
json.dump({"Test":"Test"}, f)
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Qiling + PyQt Example")
self.resize(500, 400)
self.log_box = QTextEdit()
self.log_box.setReadOnly(True)
self.btn_start = QPushButton("Run Emulation")
self.btn_start.clicked.connect(self.start_emulation)
layout = QVBoxLayout()
layout.addWidget(self.log_box)
layout.addWidget(self.btn_start)
self.setLayout(layout)
self.worker = None
def start_emulation(self):
# Adjust target and rootfs based on your environment
target = "./test_bin" # sample binary
rootfs = "./rootfs" # Qiling rootfs
self.worker = QilingWorker(target, rootfs)
self.worker.log_signal.connect(self.append_log)
self.worker.start()
self.log_box.append("Thread started...\n")
def append_log(self, text):
self.log_box.append(text)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Mobile version