Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Quincy379
jadx
提交
d3ecc1f6
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,发现更多精彩内容 >>
提交
d3ecc1f6
编写于
10月 17, 2019
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: add dummy class if class loading exception occur (#763)
上级
902247fc
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
4 deletion
+22
-4
jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java
jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java
+22
-4
未找到文件。
jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java
浏览文件 @
d3ecc1f6
...
...
@@ -27,7 +27,7 @@ import jadx.core.dex.info.ClassInfo;
import
jadx.core.dex.info.FieldInfo
;
import
jadx.core.dex.info.MethodInfo
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.utils.
exceptions.JadxRuntimeException
;
import
jadx.core.utils.
ErrorsCounter
;
import
jadx.core.utils.files.DexFile
;
public
class
DexNode
implements
IDexNode
{
...
...
@@ -56,15 +56,33 @@ public class DexNode implements IDexNode {
for
(
ClassDef
cls
:
dexBuf
.
classDefs
())
{
try
{
addClassNode
(
new
ClassNode
(
this
,
cls
));
}
catch
(
JadxRuntimeException
e
)
{
// TODO: Add dummy class node displaying the error message
LOG
.
error
(
"Class loading failed - {}"
,
e
.
getMessage
(),
e
);
}
catch
(
Exception
e
)
{
addDummyClass
(
cls
,
e
);
}
}
// sort classes by name, expect top classes before inner
classes
.
sort
(
Comparator
.
comparing
(
ClassNode:
:
getFullName
));
}
private
void
addDummyClass
(
ClassDef
classDef
,
Exception
exc
)
{
int
typeIndex
=
classDef
.
getTypeIndex
();
String
name
=
null
;
try
{
ClassInfo
clsInfo
=
ClassInfo
.
fromDex
(
this
,
typeIndex
);
if
(
clsInfo
!=
null
)
{
name
=
clsInfo
.
getShortName
();
}
}
catch
(
Exception
e
)
{
LOG
.
error
(
"Failed to get name for class with type {}"
,
typeIndex
,
e
);
}
if
(
name
==
null
||
name
.
isEmpty
())
{
name
=
"CLASS_"
+
typeIndex
;
}
ClassNode
clsNode
=
new
ClassNode
(
this
,
name
,
classDef
.
getAccessFlags
());
ErrorsCounter
.
classError
(
clsNode
,
"Load error"
,
exc
);
addClassNode
(
clsNode
);
}
public
void
addClassNode
(
ClassNode
clsNode
)
{
classes
.
add
(
clsNode
);
clsMap
.
put
(
clsNode
.
getClassInfo
(),
clsNode
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录