Closed harmeet24 closed 2 years ago
same here osx 12.0.1 and bytecode view 2.10.16
I added java to "Full Disk Access" but did not help.
i got the reason.
in the class the.bytecode.club.bytecodeviewer.util.SecurityMan
, path (file) names are compared by strings.
one is a plain string path, another is getCanonicalPath()
-ed path.
in my environment, my home folder is located on another drive and is symbolic-linked to /Users/me
.
so plain path string and getCanonicalPath()
-ed path would be different.
one solution is to make file
getCanonicalPath()
-ed. like,
diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/util/SecurityMan.java b/src/main/java/the/bytecode/club/bytecodeviewer/util/SecurityMan.java
index 88f0e3d..9d7ddcb 100644
--- a/src/main/java/the/bytecode/club/bytecodeviewer/util/SecurityMan.java
+++ b/src/main/java/the/bytecode/club/bytecodeviewer/util/SecurityMan.java
@@ -319,6 +319,8 @@ public class SecurityMan extends SecurityManager
try
{
+ file = new File(file).getCanonicalPath();
+
//can only export as the following extensions
if(file.endsWith(".zip") || file.endsWith(".jar") || file.endsWith(".apk")
|| file.endsWith(".dex") || file.endsWith(".class") || file.endsWith("js")
but i think is this necessary in the first place? at least on Mac, Mac has own quarantine system by OS.
and i don't recommend to use getCanonicalPath()
, because getCanonicalPath()
costs high and this routine is called every time Java write.
Similar error here after attempting to decompile class files on OS X 11.6.1:
Exception in thread "Decompile Thread" java.lang.SecurityException: BCV is awesome, blocking write(/Users/user);
at the.bytecode.club.bytecodeviewer.util.SecurityMan.checkWrite(SecurityMan.java:338)
$ java -jar Bytecode-Viewer-2.10.16.jar Bytecode Viewer 2.10.16 [Fat Jar] - Created by @Konloch https://bytecodeviewer.com - https://the.bytecode.club Extracting Krakatau Start up took 7 seconds Successfully extracted Krakatau Extracting Enjarify Opening.../Users/dhowe/Desktop/App_base.apk I: Using Apktool 2.5.0-c83c73-SNAPSHOT on LNHVGMyULjxTSkmLfhezVdyvlldLDT.apk I: Loading resource table... I: Decoding AndroidManifest.xml with resources... I: Loading resource table from file: /Users/dhowe/.Bytecode-Viewer/bcv_temp/JjpplBFRxELS/1.apk I: Regular manifest package... I: Decoding file-resources... I: Decoding values / XMLs... I: Baksmaling classes.dex... I: Copying assets and libs... I: Copying unknown files... I: Copying original files... Successfully extracted Enjarify Exception in thread "Decompile Thread" java.lang.SecurityException: BCV is awesome, blocking write(/Users/dhowe); at the.bytecode.club.bytecodeviewer.util.SecurityMan.checkWrite(SecurityMan.java:338) at java.io.File.canWrite(File.java:791) at sun.awt.shell.ShellFolder.canWrite(ShellFolder.java:368) at com.apple.laf.AquaFileChooserUI$2.propertyChange(AquaFileChooserUI.java:403) at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263) at java.awt.Component.firePropertyChange(Component.java:8434) at javax.swing.JFileChooser.setCurrentDirectory(JFileChooser.java:598) at javax.swing.JFileChooser.
(JFileChooser.java:344) at javax.swing.JFileChooser. (JFileChooser.java:296) at the.bytecode.club.bytecodeviewer.gui.components.FileChooser. (FileChooser.java:43) at the.bytecode.club.bytecodeviewer.gui.components.FileChooser. (FileChooser.java:39) at the.bytecode.club.bytecodeviewer.resources.ResourceDecompiling.lambda$decompileSaveAll$8(ResourceDecompiling.java:56) at java.lang.Thread.run(Thread.java:748)
I am trying to use ByteCodeViewer on Mac 11.6, after executing the
java -jar Bytecode-Viewer-2.10.16jar
, the program runs successfully. When I am trying to add a class file and click on theFile -> Add
getting the following exception in the console and unable to add any class file in the viewer.