diff --git a/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java b/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java index 09d0a728d9a8e00ad5cea4a9db515ae55237a879..621dd2d325f57264d8c0cd2328233b8a37b75afb 100644 --- a/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java +++ b/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java @@ -581,6 +581,7 @@ public class Deobfuscator { if (!pkg.hasAlias()) { String pkgName = pkg.getName(); if ((args.isDeobfuscationOn() && shouldRename(pkgName)) + && (pkg.getParentPackage() != rootPackage || !TldHelper.contains(pkgName)) // check if first level is a valid tld || (args.isRenameValid() && !NameMapper.isValidIdentifier(pkgName)) || (args.isRenamePrintable() && !NameMapper.isAllCharsPrintable(pkgName))) { String pkgAlias = String.format("p%03d%s", pkgIndex++, prepareNamePart(pkg.getName())); diff --git a/jadx-core/src/main/java/jadx/core/deobf/TldHelper.java b/jadx-core/src/main/java/jadx/core/deobf/TldHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..32de4a34d7be4aff14de3a8f91efc8366c1c7137 --- /dev/null +++ b/jadx-core/src/main/java/jadx/core/deobf/TldHelper.java @@ -0,0 +1,38 @@ +package jadx.core.deobf; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.HashSet; +import java.util.Set; + +import jadx.core.utils.exceptions.JadxRuntimeException; + +/** + * Provides a list of all top level domains with 3 characters and less, + * so we can exclude them from deobfuscation. + */ +public class TldHelper { + + private static final Set TLD_SET = loadTldFile(); + + private static Set loadTldFile() { + Set tldNames = new HashSet<>(); + try (BufferedReader reader = new BufferedReader(new InputStreamReader(Deobfuscator.class.getResourceAsStream("tld_3.txt")))) { + String line; + while ((line = reader.readLine()) != null) { + line = line.trim(); + if (!line.startsWith("#") && !line.isEmpty()) { + tldNames.add(line); + } + } + return tldNames; + } catch (Exception e) { + throw new JadxRuntimeException("Failed to load top level domain list tld_3.txt", e); + } + } + + public static boolean contains(String name) { + return TLD_SET.contains(name); + } + +} diff --git a/jadx-core/src/main/resources/jadx/core/deobf/tld_3.txt b/jadx-core/src/main/resources/jadx/core/deobf/tld_3.txt new file mode 100644 index 0000000000000000000000000000000000000000..28fdf6eea54c3a0a8bed6f5759dce9018811fd81 --- /dev/null +++ b/jadx-core/src/main/resources/jadx/core/deobf/tld_3.txt @@ -0,0 +1,469 @@ +# All tld domains with 3 or less characters +# Created from https://data.iana.org/TLD/tlds-alpha-by-domain.txt version 2022020500 +aaa +abb +abc +ac +aco +ad +ads +ae +aeg +af +afl +ag +ai +aig +al +am +anz +ao +aol +app +aq +ar +art +as +at +au +aw +aws +ax +axa +az +ba +bar +bb +bbc +bbt +bcg +bcn +bd +be +bet +bf +bg +bh +bi +bid +bio +biz +bj +bm +bms +bmw +bn +bo +bom +boo +bot +box +br +bs +bt +buy +bv +bw +by +bz +bzh +ca +cab +cal +cam +car +cat +cba +cbn +cbs +cc +cd +ceo +cf +cfa +cfd +cg +ch +ci +ck +cl +cm +cn +co +com +cpa +cr +crs +cu +cv +cw +cx +cy +cz +dad +day +dds +de +dev +dhl +diy +dj +dk +dm +dnp +do +dog +dot +dtv +dvr +dz +eat +ec +eco +edu +ee +eg +er +es +esq +et +eu +eus +fan +fi +fit +fj +fk +fly +fm +fo +foo +fox +fr +frl +ftr +fun +fyi +ga +gal +gap +gay +gb +gd +gdn +ge +gea +gf +gg +gh +gi +gl +gle +gm +gmo +gmx +gn +goo +gop +got +gov +gp +gq +gr +gs +gt +gu +gw +gy +hbo +hiv +hk +hkt +hm +hn +hot +how +hr +ht +hu +ibm +ice +icu +id +ie +ifm +il +im +in +inc +ing +ink +int +io +iq +ir +is +ist +it +itv +jcb +je +jio +jll +jm +jmp +jnj +jo +jot +joy +jp +ke +kfh +kg +kh +ki +kia +kim +km +kn +kp +kpn +kr +krd +kw +ky +kz +la +lat +law +lb +lc +lds +li +lk +llc +llp +lol +lpl +lr +ls +lt +ltd +lu +lv +ly +ma +man +map +mba +mc +md +me +med +men +mg +mh +mil +mit +mk +ml +mlb +mls +mm +mma +mn +mo +moe +moi +mom +mov +mp +mq +mr +ms +msd +mt +mtn +mtr +mu +mv +mw +mx +my +mz +na +nab +nba +nc +ne +nec +net +new +nf +nfl +ng +ngo +nhk +ni +nl +no +now +np +nr +nra +nrw +ntt +nu +nyc +nz +obi +om +one +ong +onl +ooo +org +ott +ovh +pa +pay +pe +pet +pf +pg +ph +phd +pid +pin +pk +pl +pm +pn +pnc +pr +pro +pru +ps +pt +pub +pw +pwc +py +qa +re +red +ren +ril +rio +rip +ro +rs +ru +run +rw +rwe +sa +sap +sas +sb +sbi +sbs +sc +sca +scb +sd +se +ses +sew +sex +sfr +sg +sh +si +sj +sk +ski +sky +sl +sm +sn +so +soy +spa +sr +srl +ss +st +stc +su +sv +sx +sy +sz +tab +tax +tc +tci +td +tdk +tel +tf +tg +th +thd +tj +tjx +tk +tl +tm +tn +to +top +tr +trv +tt +tui +tv +tvs +tw +tz +ua +ubs +ug +uk +uno +uol +ups +us +uy +uz +va +vc +ve +vet +vg +vi +vig +vin +vip +vn +vu +wed +wf +win +wme +wow +ws +wtc +wtf +xin +xxx +xyz +ye +you +yt +yun +za +zip +zm +zw