1
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
Приветствуем вас,Гость, на форуме IFUD.WS. Обязательно рекомендуется к прочтению правила форума http://ifud.ws/threads/obnovleno-pravila-foruma.7759

Python Анти-Виртуалка

Тема в разделе "Скрипты", создана пользователем ResH, 1 сен 2016.

  1. TopicStarter Overlay
    ResH

    ResH Команда форума

    Регистрация:
    26 июл 2012
    Сообщения:
    1.678
    Симпатии:
    2.271
    Код:
    from VMsensor import TestVM
        if TestVM().checkVirtualMachine() == True:
            /* WM твой фетиш ? */
        else:
            /* Работаем дальше */
     
  2. steal

    steal

    Регистрация:
    28 июн 2016
    Сообщения:
    17
    Симпатии:
    4
    как использовать понятно, но ты забыл добавить сам класс TestVM ))

    а вот и он
    Код:
    from _winreg import *
    import os
    import psutil
    
    class TestVM(object):   
        def checkVirtualMachine(self):
            openregisters = ConnectRegistry(None,HKEY_LOCAL_MACHINE)
            RunKey = OpenKey(openregisters, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
            for i in range(20):
                try:
                    n,v,t = EnumValue(RunKey,i)
                    if "vboxtray" in n.lower() or "vbox" in n.lower():
                        return True;
                except:
                    pass   
            CloseKey(RunKey)
            self.startupcheck2()
    
    
        def startupcheck2(self):
            try:
                for x, xx, files in os.walk(r"C:\Documents and Settings"):
                    if len(files) != 0:
                        files = [x.lower() for x in files]
                        if "vbox" in files:
                            return True;   
            except:
                pass               
    
    
        def regeditcheck(self):
            vbox = ["VboxGuest", "VboxMouse", "VboxService", "VboxService", "VboxVideo"]
            for x in vbox:
                try:
                    openregisters = ConnectRegistry(None,HKEY_LOCAL_MACHINE)
                    path = r"SYSTEM\ControlSet001\Services\%s" % x
                    RunKey = OpenKey(openregisters, path)
                    return True;
                except:
                    pass   
            self.system32()       
    
        def system32(self):
            try:
                for files in os.listdir("C:\WINDOWS\system32"):
                    if "VBox" in files:
                        return True;
            except:   
                pass
            self.graphiccard()
    
    
        def graphiccard(self):
            if os.path.isdir(r"C:\Program Files\Oracle\VirtualBox Guest Additions"):
                return True;
            if os.path.isdir(r"C:\WINDOWS\system32\DRVSTORE"):
                for folder in os.listdir(r"C:\WINDOWS\system32\DRVSTORE"):
                    if folder.startswith("VBox"):
                        return True;
            self.pids()           
    
    
        def pids(self):
            for proc in psutil.process_iter():
                try:
                    if "VBox" in proc.name():
                        return True;
                except:
                    pass
            return False
     
    • Like Like x 3
  3. d1dy0u

    d1dy0u

    Регистрация:
    26 июл 2016
    Сообщения:
    66
    Симпатии:
    51
    Шлак же, не детектирует VMWare и прочее и прочее
     
  4. steal

    steal

    Регистрация:
    28 июн 2016
    Сообщения:
    17
    Симпатии:
    4
    бла бла бла

    тут тему оживили и дополнили, так что давай, будь добр, со своими отрицательными эмоциями смойся в унитаз или же сам дополни тему годным пруфом, а не пиздобальством пустым
     
  5. d1dy0u

    d1dy0u

    Регистрация:
    26 июл 2016
    Сообщения:
    66
    Симпатии:
    51
    Пустое пиздабольство - это гонять полдесятка методов для того, что бы вычитать значения из реестра, и при этом не определить vmware
    Тему оживили и дополнили малоюзабельным примером, так что ок, покажу как определять другого вендора виртуалок, кроме Virtual Box

    VMmare, например, загружает собственный виртуальный BIOS, который маркирует версию примерно так :
    Код:
    VMware, Inc. VMW71.00V.0.B64.1201040214, 04/01/2012
    
    На Windows его можно выдрать парсингом одной-единственной команды, например вот так

    Код:
    import os
    import re
    
    def checkVMWare():
        info = os.popen("systeminfo").read();
        return re.compile('vmware',re.IGNORECASE)!=None
    
    Соответственно, вышеприведенный класс можно дополнить примерно так :

    Код:
    from _winreg import *
    import os
    import psutil
    import re
    
    
    class TestVM(object):
    
        def checkVMWare():
            info = os.popen('systeminfo').read()
            return re.compile('vmware', re.IGNORECASE) != None
    
        def checkVirtualMachine(self):
    
            if checkVWWare():
                return True
    
            openregisters = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
            RunKey = OpenKey(openregisters,
                             r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
                             )
            for i in range(20):
                try:
                    (n, v, t) = EnumValue(RunKey, i)
                    if 'vboxtray' in n.lower() or 'vbox' in n.lower():
                        return True
                except:
                    pass
            CloseKey(RunKey)
            self.startupcheck2()
    
        def startupcheck2(self):
            try:
                for (x, xx, files) in os.walk(r"C:\Documents and Settings"):
                    if len(files) != 0:
                        files = [x.lower() for x in files]
                        if 'vbox' in files:
                            return True
            except:
                pass
    
        def regeditcheck(self):
            vbox = ['VboxGuest', 'VboxMouse', 'VboxService', 'VboxService',
                    'VboxVideo']
            for x in vbox:
                try:
                    openregisters = ConnectRegistry(None,
                            HKEY_LOCAL_MACHINE)
                    path = r"SYSTEM\ControlSet001\Services\%s" % x
                    RunKey = OpenKey(openregisters, path)
                    return True
                except:
                    pass
            self.system32()
    
        def system32(self):
            try:
                for files in os.listdir("C:\WINDOWS\system32"):
                    if 'VBox' in files:
                        return True
            except:
                pass
            self.graphiccard()
    
        def graphiccard(self):
            if os.path.isdir(r"C:\Program Files\Oracle\VirtualBox Guest Additions"
                             ):
                return True
            if os.path.isdir(r"C:\WINDOWS\system32\DRVSTORE"):
                for folder in os.listdir(r"C:\WINDOWS\system32\DRVSTORE"):
                    if folder.startswith('VBox'):
                        return True
            self.pids()
    
        def pids(self):
            for proc in psutil.process_iter():
                try:
                    if 'VBox' in proc.name():
                        return True
                except:
                    pass
            return False
    
    
     

Поделиться этой страницей

Загрузка...