| Abstract: |
Teaching reverse engineering courses, which may involve sensitive pieces of code (e.g., malicious code), is difficult because it often requires restrictive environments, where the students need to work with such files. At the same time, a fair evaluation is challenging to obtain, especially when the laboratory task is remote, and students can use various tools (even though they are not supposed to use them during the evaluation). In this paper, we propose a solution consisting of integrating a specialized add-on into an existing modular assistant tool. The approach is presented using GView, a reverse engineering framework used to help both teaching and evaluating students. We focus on the viewer for disassembly code, called DissasmViewer, which supports control-flow exploration, navigation through jumps, and annotation through labels and comments. We thus introduce a new learning and evaluation mode for GView. We designed this mode to be generic, even though we want to use it for educational learning and evaluation. In this mode, students connect to a server and receive a signed policy that controls what tasks or files they can access, which functionalities are enabled, and how the received data can be used. Each task or file can be streamed securely, and, depending on the policy, they may never reach the disk and only be served in memory. The goal is to reduce accidental leakage and make cheating harder while also making it difficult to export sensitive files outside the tool. Moreover, depending on the policy, we introduce and collect usage metrics that were previously available through a Discord-based evaluation bot, such as time-to-solve and number of attempts. We describe the system design, how it supports synchronous and asynchronous learning, how it enables practical assessment metrics, and how it could be integrated into other solutions. We also discuss limitations and how students can still bypass some controls. |