Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Quincy379
jadx
提交
c93e7fb9
J
jadx
项目概览
Quincy379
/
jadx
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jadx
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
c93e7fb9
编写于
1月 29, 2021
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: detect loaded class duplication (#1107)
上级
34378889
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
18 addition
and
2 deletion
+18
-2
jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java
jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java
+15
-1
jadx-plugins/jadx-java-convert/src/main/java/jadx/plugins/input/javaconvert/JavaConvertLoader.java
...ava/jadx/plugins/input/javaconvert/JavaConvertLoader.java
+3
-1
未找到文件。
jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java
浏览文件 @
c93e7fb9
...
...
@@ -5,6 +5,7 @@ import java.util.Comparator;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.Nullable
;
...
...
@@ -20,6 +21,7 @@ import jadx.api.plugins.input.data.IClassData;
import
jadx.api.plugins.input.data.ILoadResult
;
import
jadx.core.Jadx
;
import
jadx.core.clsp.ClspGraph
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.info.ClassInfo
;
import
jadx.core.dex.info.ConstStorage
;
import
jadx.core.dex.info.FieldInfo
;
...
...
@@ -60,8 +62,8 @@ public class RootNode {
private
final
ICodeCache
codeCache
;
private
final
List
<
ClassNode
>
classes
=
new
ArrayList
<>();
private
final
Map
<
ClassInfo
,
ClassNode
>
clsMap
=
new
HashMap
<>();
private
List
<
ClassNode
>
classes
=
new
ArrayList
<>();
private
ClspGraph
clsp
;
@Nullable
...
...
@@ -91,6 +93,18 @@ public class RootNode {
}
});
}
if
(
classes
.
size
()
!=
clsMap
.
size
())
{
// class name duplication detected
classes
.
stream
().
collect
(
Collectors
.
groupingBy
(
ClassNode:
:
getClassInfo
))
.
entrySet
().
stream
()
.
filter
(
entry
->
entry
.
getValue
().
size
()
>
1
)
.
forEach
(
entry
->
{
LOG
.
warn
(
"Found duplicated class: {}, count: {}. Only one will be loaded!"
,
entry
.
getKey
(),
entry
.
getValue
().
size
());
entry
.
getValue
().
forEach
(
cls
->
cls
.
addAttr
(
AType
.
COMMENTS
,
"WARNING: Classes with same name are omitted"
));
});
}
classes
=
new
ArrayList
<>(
clsMap
.
values
());
// sort classes by name, expect top classes before inner
classes
.
sort
(
Comparator
.
comparing
(
ClassNode:
:
getFullName
));
initInnerClasses
();
...
...
jadx-plugins/jadx-java-convert/src/main/java/jadx/plugins/input/javaconvert/JavaConvertLoader.java
浏览文件 @
c93e7fb9
...
...
@@ -82,9 +82,11 @@ public class JavaConvertLoader {
.
filter
(
aarMatcher:
:
matches
)
.
forEach
(
path
->
ZipSecurity
.
readZipEntries
(
path
.
toFile
(),
(
entry
,
in
)
->
{
try
{
if
(
entry
.
getName
().
endsWith
(
".jar"
))
{
String
entryName
=
entry
.
getName
();
if
(
entryName
.
endsWith
(
".jar"
))
{
Path
tempJar
=
saveInputStreamToFile
(
in
,
".jar"
);
result
.
addTempPath
(
tempJar
);
LOG
.
debug
(
"Loading jar: {} ..."
,
entryName
);
convertJar
(
result
,
tempJar
);
}
}
catch
(
Exception
e
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录