Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
keyescgm
jadx
提交
035fce61
J
jadx
项目概览
keyescgm
/
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,发现更多精彩内容 >>
提交
035fce61
编写于
12月 11, 2020
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: improve error reporting for instruction decode failure (#1046)
上级
2f5dd171
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
23 addition
and
2 deletion
+23
-2
jadx-core/src/main/java/jadx/core/codegen/MethodGen.java
jadx-core/src/main/java/jadx/core/codegen/MethodGen.java
+7
-0
jadx-core/src/main/java/jadx/core/dex/instructions/InsnDecoder.java
...src/main/java/jadx/core/dex/instructions/InsnDecoder.java
+5
-2
jadx-core/src/main/java/jadx/core/utils/Utils.java
jadx-core/src/main/java/jadx/core/utils/Utils.java
+11
-0
未找到文件。
jadx-core/src/main/java/jadx/core/codegen/MethodGen.java
浏览文件 @
035fce61
...
...
@@ -16,6 +16,7 @@ import jadx.core.Jadx;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.annotations.MethodParameters
;
import
jadx.core.dex.attributes.nodes.JadxError
;
import
jadx.core.dex.attributes.nodes.JumpInfo
;
import
jadx.core.dex.attributes.nodes.MethodOverrideAttr
;
import
jadx.core.dex.info.AccessInfo
;
...
...
@@ -323,6 +324,12 @@ public class MethodGen {
if
(
insn
==
null
)
{
continue
;
}
if
(
insn
.
contains
(
AType
.
JADX_ERROR
))
{
for
(
JadxError
error
:
insn
.
getAll
(
AType
.
JADX_ERROR
))
{
code
.
startLine
(
"// "
).
add
(
error
.
getError
());
}
continue
;
}
if
(
option
!=
BLOCK_DUMP
&&
needLabel
(
insn
,
prevInsn
))
{
code
.
decIndent
();
code
.
startLine
(
getLabelName
(
insn
.
getOffset
())
+
':'
);
...
...
jadx-core/src/main/java/jadx/core/dex/instructions/InsnDecoder.java
浏览文件 @
035fce61
...
...
@@ -9,6 +9,8 @@ import jadx.api.plugins.input.insns.InsnData;
import
jadx.api.plugins.input.insns.custom.IArrayPayload
;
import
jadx.api.plugins.input.insns.custom.ISwitchPayload
;
import
jadx.core.Consts
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.nodes.JadxError
;
import
jadx.core.dex.info.FieldInfo
;
import
jadx.core.dex.info.MethodInfo
;
import
jadx.core.dex.instructions.args.ArgType
;
...
...
@@ -40,11 +42,12 @@ public class InsnDecoder {
try
{
rawInsn
.
decode
();
insn
=
decode
(
rawInsn
);
insn
.
setOffset
(
offset
);
}
catch
(
Exception
e
)
{
LOG
.
e
rror
(
"Failed to decode insn: "
+
rawInsn
+
", method: "
+
method
,
e
);
method
.
addE
rror
(
"Failed to decode insn: "
+
rawInsn
+
", method: "
+
method
,
e
);
insn
=
new
InsnNode
(
InsnType
.
NOP
,
0
);
insn
.
addAttr
(
AType
.
JADX_ERROR
,
new
JadxError
(
"decode failed: "
+
e
.
getMessage
(),
e
));
}
insn
.
setOffset
(
offset
);
instructions
[
offset
]
=
insn
;
});
return
instructions
;
...
...
jadx-core/src/main/java/jadx/core/utils/Utils.java
浏览文件 @
035fce61
...
...
@@ -182,6 +182,17 @@ public class Utils {
}
prevElement
=
stackTraceElement
;
}
// stop condition not found -> just cut tail to any jadx class
for
(
int
i
=
length
-
1
;
i
>=
0
;
i
--)
{
String
clsName
=
stackTrace
[
i
].
getClassName
();
if
(
clsName
.
startsWith
(
"jadx."
))
{
if
(
clsName
.
startsWith
(
"jadx.tests."
))
{
continue
;
}
th
.
setStackTrace
(
Arrays
.
copyOfRange
(
stackTrace
,
0
,
i
));
return
;
}
}
}
public
static
<
T
,
R
>
List
<
R
>
collectionMap
(
Collection
<
T
>
list
,
Function
<
T
,
R
>
mapFunc
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录