Merge pull request #2 from devnoname120/fix-electron-patcher

Fix electron patching
This commit is contained in:
Karol Mazurek
2025-01-08 11:31:46 +01:00
committed by GitHub
@@ -34,7 +34,7 @@ class ASARPatcher:
def extractASAR(self, app_path, output_path): def extractASAR(self, app_path, output_path):
'''Extracts {input_path} asar file to {output_path} directory.''' '''Extracts {input_path} asar file to {output_path} directory.'''
input_path = os.path.join(app_path, "Contents/Resources/app.asar") input_path = os.path.join(app_path, "Contents/Resources/app.asar")
status_code = os.system(f"npx asar extract {input_path} {output_path}") status_code = os.system(f"npx @electron/asar extract '{input_path}' '{output_path}'")
if status_code == 0: if status_code == 0:
print(f"Extracted {input_path} to {output_path} directory.") print(f"Extracted {input_path} to {output_path} directory.")
@@ -44,7 +44,7 @@ class ASARPatcher:
def dumpEntitlements(self, app_path): def dumpEntitlements(self, app_path):
output_path='/tmp/extracted_entitlements.xml' output_path='/tmp/extracted_entitlements.xml'
status_code = os.system(f"codesign -d --entitlements :- {app_path} > {output_path}") status_code = os.system(f"codesign -d --entitlements :- '{app_path}' > '{output_path}'")
if status_code == 0: if status_code == 0:
print(f"Dumped entitlements from {app_path} to {output_path}") print(f"Dumped entitlements from {app_path} to {output_path}")
@@ -53,7 +53,7 @@ class ASARPatcher:
print(f"Failed to dump entitlements from {app_path} to {output_path}. Error code: {status_code}") print(f"Failed to dump entitlements from {app_path} to {output_path}. Error code: {status_code}")
def checkIfElectronAsarIntegrityIsUsed(self, app_path): def checkIfElectronAsarIntegrityIsUsed(self, app_path):
status_code = os.system(f"plutil -p {app_path}/Contents/Info.plist | grep -q ElectronAsarIntegrity") status_code = os.system(f"plutil -p '{app_path}/Contents/Info.plist' | grep -q ElectronAsarIntegrity")
if status_code == 0: if status_code == 0:
return True return True
else: else:
@@ -67,7 +67,7 @@ class ASARPatcher:
output_path = os.path.join(app_path, "Contents/Resources/app.asar") output_path = os.path.join(app_path, "Contents/Resources/app.asar")
info_plist_path = os.path.join(app_path, "Contents/Info.plist") info_plist_path = os.path.join(app_path, "Contents/Info.plist")
status_code = os.system(f"npx asar pack {input_path} {output_path}") status_code = os.system(f"npx @electron/asar pack '{input_path}' '{output_path}'")
if status_code == 0: if status_code == 0:
print(f"Packed {input_path} into {output_path}") print(f"Packed {input_path} into {output_path}")
@@ -77,12 +77,12 @@ class ASARPatcher:
new_hash = asar_calculator.calcASARHeaderHash() new_hash = asar_calculator.calcASARHeaderHash()
print(f"New hash: {new_hash}") print(f"New hash: {new_hash}")
print("Replacing ElectronAsarIntegrity in Info.plist") print("Replacing ElectronAsarIntegrity in Info.plist")
os.system(f"/usr/libexec/PlistBuddy -c 'Set :ElectronAsarIntegrity:Resources/app.asar:hash {new_hash}' {info_plist_path}") os.system(f"/usr/libexec/PlistBuddy -c 'Set :ElectronAsarIntegrity:Resources/app.asar:hash {new_hash}' '{info_plist_path}'")
print("Resigning app") print("Resigning app")
self.dumpEntitlements(app_path) self.dumpEntitlements(app_path)
os.system(f"codesign --force --entitlements /tmp/extracted_entitlements.xml --sign - {app_path}") os.system(f"codesign --force --entitlements /tmp/extracted_entitlements.xml --sign - '{app_path}'")
os.remove('/tmp/extracted_entitlements.xml') os.remove('/tmp/extracted_entitlements.xml')
print("Done!") print("Done!")