#!/usr/bin/env python3
# coding=GBK
# Created at 2019/11/9 19:52
from __future__ import print_function
import ctypes, sys
import os,time
binpath= r"C:Program Files (x86)Synthesia"
filename = "Synthesia.exe"
backup_path = r"c:ackup"
if(os.path.isdir(backup_path)):
print("Backup path already exsit!")
else:
os.mkdir(backup_path)
def backfiles():
os.system("copy " + filename + " " + backup_path)
print("File has been backuped to " + backup_path)
def patch_exe():
with open (backup_path+"\" + filename,"rb") as fr:
data = fr.read()
data = data.replace(b'x64xA1x2Cx00x00x00x56x8BxF1', b'xB8x01x00x00x00xC3x56x8BxF1')
with open(binpath + '\' + filename, "wb") as fw:
fw.write(data)
print(filename + " has been patached successfully!")
#获取administrator权限
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if is_admin():
os.chdir(binpath)
try:
print("-------------First Step--------------
")
backfiles()
time.sleep(3)
except:
print("Error occurred in backup procedure!")
try:
print("-------------Second Step--------------
")
patch_exe()
time.sleep(3)
except:
print("Error occurred in patch procedure!
")
else:
if sys.version_info[0] == 3:
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1) #python3使用的函数及参数
else:
ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1) #python2使用的函数及参数