未验证 提交 b5ce4606 编写于 作者: J Jan S 提交者: GitHub

feat(deobf): do not deobfuscate known top level domains with 2 or 3 characters (PR #1369)

上级 3c05b051
......@@ -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()));
......
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<String> TLD_SET = loadTldFile();
private static Set<String> loadTldFile() {
Set<String> 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);
}
}
# 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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册