From 4942acd05be337c372d8403de47234352ec15179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 10 Nov 2024 16:15:51 +0100 Subject: [PATCH] AMF3 Dictionary has entries in JSON array with key+value fields. AMF3 SOL map writing uses stringTable for keys. Ribbon menuitems Nullpointer. --- .../flash/amf/amf0/Amf0InputStream.java | 7 ++- .../flash/amf/amf3/Amf3InputStream.java | 2 +- .../exporters/amf/amf3/Amf3Exporter.java | 43 +++++++++--------- .../importers/amf/amf0/Amf0Importer.java | 8 +--- .../importers/amf/amf3/Amf3Importer.java | 22 +++++++-- .../jpexs/decompiler/flash/sol/LsoTag.java | 2 +- .../testdata/sharedobjects/data/amf0test.sol | Bin 70408 -> 70686 bytes .../testdata/sharedobjects/data/amf3test.sol | Bin 70289 -> 70406 bytes .../testdata/sharedobjects/sharedobjects.swf | Bin 21916 -> 21885 bytes .../sharedobjects/DOMDocument.xml | 10 +--- .../sharedobjects/bin/SymDepend.cache | Bin 64 -> 64 bytes .../flash/gui/MainFrameRibbonMenu.java | 3 ++ 12 files changed, 50 insertions(+), 47 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/Amf0InputStream.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/Amf0InputStream.java index 2f6fcae2a..156ebb097 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/Amf0InputStream.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/Amf0InputStream.java @@ -326,7 +326,7 @@ public class Amf0InputStream extends InputStream { newDumpLevel(name, "value-type"); Object result = null; int marker = readInternal(); - System.err.println("marker " + Integer.toHexString(marker)); + //System.err.println("marker " + Integer.toHexString(marker)); switch (marker) { case Marker.NUMBER: result = readDouble("DOUBLE"); @@ -368,7 +368,6 @@ public class Amf0InputStream extends InputStream { break; case Marker.ECMA_ARRAY: int associativeCount = (int) readU32("associative-count"); - System.err.println("associativeCount = " + associativeCount); EcmaArrayType ea = new EcmaArrayType(); for (int a = 0; a < associativeCount; a++) { String eaKey = readUtf8("key"); @@ -431,9 +430,9 @@ public class Amf0InputStream extends InputStream { throw new IllegalArgumentException("Unsupported type"); } - if (result != null) { + /*if (result != null) { System.err.println("Read: " + Amf0Exporter.amfToString(result, 0, "\r\n", new ArrayList<>(), new HashMap<>(), new HashMap<>())); - } + }*/ endDumpLevel(); return result; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf3/Amf3InputStream.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf3/Amf3InputStream.java index 53415a61c..06014e702 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf3/Amf3InputStream.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf3/Amf3InputStream.java @@ -595,7 +595,7 @@ public class Amf3InputStream extends InputStream { endDumpLevel(); LOGGER.log(Level.FINER, "Array value: dense_size={0},assocSize={1}", new Object[]{densePart.size(), assocPart.size()}); result = retArray; - + } else { renameU29O_ref(); int refIndexArray = (int) (arrayU29 >> 1); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/amf/amf3/Amf3Exporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/amf/amf3/Amf3Exporter.java index c9328628c..c515af71a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/amf/amf3/Amf3Exporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/amf/amf3/Amf3Exporter.java @@ -293,17 +293,15 @@ public class Amf3Exporter { if (!at.getAssociativeValues().isEmpty()) { ret.append(newLine); } - if (true) { - int i = 0; - for (String key : at.associativeKeySet()) { - Object val = at.getAssociative(key); - ret.append(indent(level + 2)).append(amfToString(indentStr, newLine, processedObjects, level + 1, key, referenceCount, objectAlias)).append(" : ").append(amfToString(indentStr, newLine, processedObjects, level + 1, val, referenceCount, objectAlias)); - if (i < at.getAssociativeValues().size() - 1) { - ret.append(","); - } - ret.append(newLine); - i++; + int i = 0; + for (String key : at.associativeKeySet()) { + Object val = at.getAssociative(key); + ret.append(indent(level + 2)).append(amfToString(indentStr, newLine, processedObjects, level + 1, key, referenceCount, objectAlias)).append(" : ").append(amfToString(indentStr, newLine, processedObjects, level + 1, val, referenceCount, objectAlias)); + if (i < at.getAssociativeValues().size() - 1) { + ret.append(","); } + ret.append(newLine); + i++; } if (!at.getAssociativeValues().isEmpty()) { ret.append(indent(level + 1)); @@ -316,20 +314,21 @@ public class Amf3Exporter { ret.append(indent(level + 1)).append("\"type\": \"Dictionary\",").append(newLine); ret.append(addId); ret.append(indent(level + 1)).append("\"weakKeys\": ").append(dt.hasWeakKeys()).append(",").append(newLine); - ret.append(indent(level + 1)).append("\"entries\": {").append(newLine); - if (true) { - int i = 0; - for (Object key : dt.keySet()) { - Object val = dt.get(key); - ret.append(indent(level + 1)).append(amfToString(indentStr, newLine, processedObjects, level + 1, key, referenceCount, objectAlias)).append(" : ").append(amfToString(indentStr, newLine, processedObjects, level + 1, val, referenceCount, objectAlias)); - if (i < dt.size() - 1) { - ret.append(","); - } - ret.append(newLine); - i++; + ret.append(indent(level + 1)).append("\"entries\": [").append(newLine); + int i = 0; + for (Object key : dt.keySet()) { + Object val = dt.get(key); + ret.append(indent(level + 2)).append("{").append(newLine); + ret.append(indent(level + 3)).append("\"key\": ").append(amfToString(indentStr, newLine, processedObjects, level + 3, key, referenceCount, objectAlias)).append(",").append(newLine); + ret.append(indent(level + 3)).append("\"value\": ").append(amfToString(indentStr, newLine, processedObjects, level + 3, val, referenceCount, objectAlias)).append(newLine); + ret.append(indent(level + 2)).append("}"); + if (i < dt.size() - 1) { + ret.append(","); } + ret.append(newLine); + i++; } - ret.append(indent(level + 1)).append("}").append(newLine); + ret.append(indent(level + 1)).append("]").append(newLine); ret.append(indent(level)).append("}"); } else if (object instanceof ByteArrayType) { ByteArrayType ba = (ByteArrayType) object; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf0/Amf0Importer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf0/Amf0Importer.java index 2e738fbb4..8bd2453b4 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf0/Amf0Importer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf0/Amf0Importer.java @@ -335,13 +335,7 @@ public class Amf0Importer { Object key = value(objectTable); expectedType(SymbolType.COLON); Object value = value(objectTable); - ret.put(key, value); - if ("id".equals(key)) { - if (!(value instanceof String)) { - throw new AmfParseException("id must be string value", lexer.yyline()); - } - objectTable.put((String) value, BasicType.UNDEFINED); - } + ret.put(key, value); s = lex(); } while (s.isType(SymbolType.COMMA)); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf3/Amf3Importer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf3/Amf3Importer.java index c4e1b186d..9a93b4140 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf3/Amf3Importer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf3/Amf3Importer.java @@ -341,12 +341,12 @@ public class Amf3Importer { expectedType(SymbolType.COLON); Object value = value(objectTable); ret.put(key, value); - if ("id".equals(key)) { + /*if ("id".equals(key)) { if (!(value instanceof String)) { throw new AmfParseException("id must be string value", lexer.yyline()); } objectTable.put((String) value, BasicType.UNDEFINED); - } + }*/ s = lex(); } while (s.isType(SymbolType.COMMA)); } @@ -440,8 +440,22 @@ public class Amf3Importer { break; case "Dictionary": boolean weakKeys = typedObject.getBoolean("weakKeys"); - typedObject.resolve("entries", objectTable, false); - Map entries = typedObject.getJsObject("entries").getAll(); + //typedObject.resolve("entries", objectTable, false); + //Map entries = typedObject.getJsObject("entries").getAll(); + Map entries = new LinkedHashMap<>(); + List entryArray = typedObject.getJsArray("entries").values; + for (Object entry : entryArray) { + if (!(entry instanceof JsObject)) { + throw new AmfParseException("Invalid dictionary entry", lexer.yyline()); + } + JsObject entryJso = (JsObject) entry; + entryJso.resolve("key", objectTable, true); + entryJso.resolve("value", objectTable, true); + + Object key = entryJso.get("key"); + Object value = entryJso.get("value"); + entries.put(key, value); + } resultObject = new DictionaryType(weakKeys, entries); break; case "Reference": diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/sol/LsoTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/sol/LsoTag.java index 089c8bf7a..01cc4397a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/sol/LsoTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/sol/LsoTag.java @@ -136,7 +136,7 @@ public class LsoTag extends Tag { List objectTable = new ArrayList<>(); for(String key: amfValues.keySet()) { try { - a3os.writeUtf8Vr(key, new ArrayList<>()); //Intentionally not using string table + a3os.writeUtf8Vr(key, stringTable); a3os.writeValue(amfValues.get(key), new HashMap<>(), stringTable, traitTable, objectTable); } catch (NoSerializerExistsException ex) { throw new IllegalArgumentException("Serializer not found for class " + ex.getClassName()); diff --git a/libsrc/ffdec_lib/testdata/sharedobjects/data/amf0test.sol b/libsrc/ffdec_lib/testdata/sharedobjects/data/amf0test.sol index 0e4c29a7e3b7fb0593f3928882e272c0b761b438..083a44107a1d4f711cf142dd9e982914e4e594b3 100644 GIT binary patch delta 437 zcmZuty-EW?5T3owG6u~b2@2`Tn&H_7VWu59ikTLmjEO?91i z;tN>Y_%gnMg`l@dB!v!Be9R2<{oFshk1sBUH$clP6WkfgEQy$g!%vu1H8GJ%8PS@U z5|ppikf&Tp2+Q*WEST)4gT-J;MVBm2+cH*^%l=}4nWUUZ2PzTox2G7O0yr_0q^x>m z_CFrHuQT|5&v}6M8Yp(4MvWv1k1vSGSpF2C%?+1aG2?(YU_vPSppckJ%6eQfitW2m zB3gMRKx_2^`QY1`%!Kf6$FE~_*T}a5)I6ybygasMh%T(vJ2TzQ)2aNf1NfZ9O45He z-Z9t1)N*@?(X8hKOuDNBf99m+gKH@xr36A&-c6B*(p;t`@Opg2C<6GC8`_3&eI6>> QfpGU1w;(*2p%DmE?999M(11Mp{&cMvTom*L&my(*6nU|WvHu0(XWIaYTCk9Ri4v^a1 xq|_n?`yUJt0MwO|Sdz-^RB7>Y!k++!|3?_uAwoct*g=LS<>%)xGBNvsyH#7{Btims)6oP18; zDV_Ob0ttd1T7t~uiNcCfQ{&PoAP@=Wb=*DYMX4EqZ3KWj$HG*$qnzPW0(~+_8i%Nd zV(5`INR_Ls5&9AjPa3Yx`_f3}nVZwcE#v|6vXr6cyyNSIE&Zt;U CCtgMX delta 237 zcmZo$#xij!3me0J21cRoiEOIVj|edeOLON|7Nw?fF)}A}F)=4{F>DJSDLtm4nf#(&FWWKLHFt TO&|dy4nCk%Qht68Ga~~49vng5 diff --git a/libsrc/ffdec_lib/testdata/sharedobjects/sharedobjects.swf b/libsrc/ffdec_lib/testdata/sharedobjects/sharedobjects.swf index f0603286c88882c9a95429f3932afb72f0f46866..e3247c0df02efdcf4b706098fdbed67e8ea32e4f 100644 GIT binary patch delta 18669 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

dc{LX4=i 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 + + @@ -187,7 +183,5 @@ function fonLoad(event:MouseEvent):void { - - \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/sharedobjects/sharedobjects/bin/SymDepend.cache b/libsrc/ffdec_lib/testdata/sharedobjects/sharedobjects/bin/SymDepend.cache index 4801afbc1ea435920c41c2819ba35d777b382ffd..3866f06b9b24fdbc224b0c7ddcf5707991fc4bc1 100644 GIT binary patch delta 23 dcmZ>85KL!aV0gjK4J5f3*co^jv?mJc0{|!A0}KEF delta 23 dcmZ>85KL!aV0gjK4J5f3SQw-j6ebGl0{|!Q0}KEF diff --git a/src/com/jpexs/decompiler/flash/gui/MainFrameRibbonMenu.java b/src/com/jpexs/decompiler/flash/gui/MainFrameRibbonMenu.java index 5aacfc2ad..60de6c804 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainFrameRibbonMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/MainFrameRibbonMenu.java @@ -680,6 +680,9 @@ public class MainFrameRibbonMenu extends MainFrameMenu { @Override public void setMenuEnabled(String path, boolean enabled) { + if (menuItems == null) { + return; + } if (!menuItems.containsKey(path)) { throw new IllegalArgumentException("Menu not found: " + path); }