Example #1
0
 public override SystemService FindService(int vector, ProcessorState state, SegmentMap segmentMap)
 {
     if (vector == 0x20)
     {
         // Dynamic VxD call.
         //$TODO: look up the call to determine what parameters it uses.
         var addr      = state.InstructionPointer + 2;
         var dwService = state.GetMemoryValue(addr + 2, PrimitiveType.Word32, segmentMap);
         return(new SystemService
         {
             Name = $"SVC${dwService:X8}",
             Signature = FunctionType.Action(),
             Characteristics = new ProcedureCharacteristics
             {
                 ReturnAddressAdjustment = 6,
             }
         });
     }
     return(null);
 }