![]() |
ASM Verständnisproblem
Hallo delphianer,
ich versuche herauszufinden, ob meine Anwendung unter Parallels ausgeführt wird. dazu habe ich folgenden Assembler-Code gefunden:
Code:
In der Beschreibung steht, dass die Adressen spezifisch zu der "current execution session" sind.
pushad
mov esi, [ebp+xxxx] mov eax, [esi] ;load auth value mov ebx, [esi+4] ;load auth value mov ecx, [esi+8] ;load auth value mov edx, [esi+0Ch] ;load auth value mov edi, [esi+10h] ;load auth value mov esi, [ebp+xxxx] ;load real esi xor ebp, ebp push ebp ;upper bound value push ebp ;lower bound value mov ebp, '0x90' bound ebp, [esp] ;raise exception add esp, 8 ;discard bound values popad Was bedeutet das und wie bekomme ich die Information? Über folgende Funktionen finde ich bereits heraus, ob es sich um VMWare handelt.
Delphi-Quellcode:
Resultat unter Parallels: [Parallels-0C 37 30...] anstatt [VMWare-0C 37 30...].
function ObtainBIOSSerialNumber: string;
const WbemQuery = 'SELECT SerialNumber FROM Win32_BIOS'; wbemFlagForwardOnly = $00000020; var FSWbemLocator : OLEVariant; FWMIService : OLEVariant; FWbemObjectSet: OLEVariant; FWbemObject : OLEVariant; oEnum : IEnumvariant; iValue : LongWord; begin; Result := ''; try FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator'); FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', ''); FWbemObjectSet:= FWMIService.ExecQuery(WbemQuery,'WQL', wbemFlagForwardOnly); oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant; if oEnum.Next(1, FWbemObject, iValue) = S_OK then Result := String(FWbemObject.SerialNumber); except on E:EOleException do OutputDebugString(PChar(Format('EOleException %s %x', [E.Message,E.ErrorCode]))); on E:Exception do OutputDebugString(PChar(Format('%s: %s', [E.Classname, E.Message]))); end; end; function IsVMWareBIOS: Boolean; var BIOSSerial: string; begin CoInitialize(nil); try BIOSSerial := ObtainBIOSSerialNumber; a := BIOSSerial; // test Result := (Pos('VMware-', BIOSSerial) > 0) or (Pos('VMW', BIOSSerial) > 0); finally CoUninitialize; end; end; Ist das zuverlässig genug um auch Parallels damit abzustecken? Könnte mir jemand Hilfestellung zum ASM geben? |
AW: ASM Verständnisproblem
Ohne jetzt auf dein konkretes Problem eingehen zu können:
Von Zacherl gibt es in der DP eine ![]() Außerdem gab es auch eine ![]() Vielleicht hilft das dir weiter. |
AW: ASM Verständnisproblem
Vielen Dank! Das hilft mir etwas weiter. Ich frage mich nur wo oder wie Zacherl und Co. auf die Adressen gekommen sind :?:
|
AW: ASM Verständnisproblem
Zitat:
Auch noch zu erwähnen ist, dass die verwendete Methode bei aktivierter Hardwarevirtualisierung (heute normalerweise Standard) nicht funktioniert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz